/
meshfederation_types.go
75 lines (58 loc) · 2.11 KB
/
meshfederation_types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
Copyright 2022.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// MeshFederationSpec defines the desired state of MeshFederation of a central view
type MeshFederationSpec struct {
MeshPeers []MeshPeer `json:"meshPeers,omitempty"`
TrustConfig *TrustConfig `json:"trustConfig,omitempty"`
}
// MeshPeer defines mesh peers
type MeshPeer struct {
Peers []string `json:"peers,omitempty"`
// additional setting for peers...
}
type TrustType string
const (
TrustTypeLimited TrustType = "Limited" // limited trust gated at gateways, used by OSSM
TrustTypeComplete TrustType = "Complete" // complete trust by shared CA, used by community istio
)
// TrustConfig defines the trust configuratin for mesh peers
type TrustConfig struct {
TrustType TrustType `json:"trustType,omitempty"`
}
// MeshFederationStatus defines the observed state of MeshFederation
type MeshFederationStatus struct {
}
// +genclient
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
// MeshFederation is the Schema for the meshfederations API
type MeshFederation struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MeshFederationSpec `json:"spec,omitempty"`
Status MeshFederationStatus `json:"status,omitempty"`
}
//+kubebuilder:object:root=true
// MeshFederationList contains a list of MeshFederation
type MeshFederationList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []MeshFederation `json:"items"`
}
func init() {
SchemeBuilder.Register(&MeshFederation{}, &MeshFederationList{})
}