Skip to content

Commit 63db9ac

Browse files
committed
introduce global service
1 parent 5543ccc commit 63db9ac

12 files changed

+1066
-15
lines changed

PROJECT

+7
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,11 @@ resources:
5454
kind: RemoteVtep
5555
path: github.com/alibaba/hybridnet/apis/multicluster/v1
5656
version: v1
57+
- api:
58+
crdVersion: v1
59+
domain: alibaba.com
60+
group: multicluster
61+
kind: RemoteEndpointSlice
62+
path: github.com/alibaba/hybridnet/apis/multicluster/v1
63+
version: v1
5764
version: "3"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,277 @@
1+
2+
---
3+
apiVersion: apiextensions.k8s.io/v1
4+
kind: CustomResourceDefinition
5+
metadata:
6+
annotations:
7+
controller-gen.kubebuilder.io/version: v0.4.1
8+
creationTimestamp: null
9+
name: remoteendpointslice.multicluster.alibaba.com
10+
spec:
11+
group: multicluster.alibaba.com
12+
names:
13+
kind: RemoteEndpointSlice
14+
listKind: RemoteEndpointSliceList
15+
plural: remoteendpointslice
16+
singular: remoteendpointslice
17+
scope: Cluster
18+
versions:
19+
- additionalPrinterColumns:
20+
- jsonPath: .spec.remoteService.name
21+
name: Service
22+
type: string
23+
- jsonPath: .spec.remoteService.namespace
24+
name: Namespace
25+
type: string
26+
- jsonPath: .spec.addressType
27+
name: AddressType
28+
type: string
29+
- jsonPath: .spec.remoteService.cluster
30+
name: Cluster
31+
type: string
32+
name: v1
33+
schema:
34+
openAPIV3Schema:
35+
description: RemoteEndpointSlice is the Schema for the remoteendpointslice
36+
API
37+
properties:
38+
apiVersion:
39+
description: 'APIVersion defines the versioned schema of this representation
40+
of an object. Servers should convert recognized schemas to the latest
41+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
42+
type: string
43+
kind:
44+
description: 'Kind is a string value representing the REST resource this
45+
object represents. Servers may infer this from the endpoint the client
46+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
47+
type: string
48+
metadata:
49+
type: object
50+
spec:
51+
description: RemoteEndpointSliceSpec defines the desired state of RemoteEndpointSlice,
52+
it's a copy of discovery.EndpointSlice
53+
properties:
54+
addressType:
55+
description: 'addressType specifies the type of address carried by
56+
this EndpointSlice. All addresses in this slice must be the same
57+
type. This field is immutable after creation. The following address
58+
types are currently supported: * IPv4: Represents an IPv4 Address.
59+
* IPv6: Represents an IPv6 Address. * FQDN: Represents a Fully Qualified
60+
Domain Name.'
61+
type: string
62+
endpoints:
63+
description: endpoints is a list of unique endpoints in this slice.
64+
Each slice may include a maximum of 1000 endpoints.
65+
items:
66+
description: Endpoint represents a single logical "backend" implementing
67+
a service.
68+
properties:
69+
addresses:
70+
description: addresses of this endpoint. The contents of this
71+
field are interpreted according to the corresponding EndpointSlice
72+
addressType field. Consumers must handle different types of
73+
addresses in the context of their own capabilities. This must
74+
contain at least one address but no more than 100.
75+
items:
76+
type: string
77+
type: array
78+
x-kubernetes-list-type: set
79+
conditions:
80+
description: conditions contains information about the current
81+
status of the endpoint.
82+
properties:
83+
ready:
84+
description: ready indicates that this endpoint is prepared
85+
to receive traffic, according to whatever system is managing
86+
the endpoint. A nil value indicates an unknown state.
87+
In most cases consumers should interpret this unknown
88+
state as ready. For compatibility reasons, ready should
89+
never be "true" for terminating endpoints.
90+
type: boolean
91+
serving:
92+
description: serving is identical to ready except that it
93+
is set regardless of the terminating state of endpoints.
94+
This condition should be set to true for a ready endpoint
95+
that is terminating. If nil, consumers should defer to
96+
the ready condition. This field can be enabled with the
97+
EndpointSliceTerminatingCondition feature gate.
98+
type: boolean
99+
terminating:
100+
description: terminating indicates that this endpoint is
101+
terminating. A nil value indicates an unknown state. Consumers
102+
should interpret this unknown state to mean that the endpoint
103+
is not terminating. This field can be enabled with the
104+
EndpointSliceTerminatingCondition feature gate.
105+
type: boolean
106+
type: object
107+
hints:
108+
description: hints contains information associated with how
109+
an endpoint should be consumed.
110+
properties:
111+
forZones:
112+
description: forZones indicates the zone(s) this endpoint
113+
should be consumed by to enable topology aware routing.
114+
May contain a maximum of 8 entries.
115+
items:
116+
description: ForZone provides information about which
117+
zones should consume this endpoint.
118+
properties:
119+
name:
120+
description: name represents the name of the zone.
121+
type: string
122+
required:
123+
- name
124+
type: object
125+
type: array
126+
x-kubernetes-list-type: atomic
127+
type: object
128+
hostname:
129+
description: hostname of this endpoint. This field may be used
130+
by consumers of endpoints to distinguish endpoints from each
131+
other (e.g. in DNS names). Multiple endpoints which use the
132+
same hostname should be considered fungible (e.g. multiple
133+
A values in DNS). Must be lowercase and pass DNS Label (RFC
134+
1123) validation.
135+
type: string
136+
nodeName:
137+
description: nodeName represents the name of the Node hosting
138+
this endpoint. This can be used to determine endpoints local
139+
to a Node. This field can be enabled with the EndpointSliceNodeName
140+
feature gate.
141+
type: string
142+
targetRef:
143+
description: targetRef is a reference to a Kubernetes object
144+
that represents this endpoint.
145+
properties:
146+
apiVersion:
147+
description: API version of the referent.
148+
type: string
149+
fieldPath:
150+
description: 'If referring to a piece of an object instead
151+
of an entire object, this string should contain a valid
152+
JSON/Go field access statement, such as desiredState.manifest.containers[2].
153+
For example, if the object reference is to a container
154+
within a pod, this would take on a value like: "spec.containers{name}"
155+
(where "name" refers to the name of the container that
156+
triggered the event) or if no container name is specified
157+
"spec.containers[2]" (container with index 2 in this pod).
158+
This syntax is chosen only to have some well-defined way
159+
of referencing a part of an object. TODO: this design
160+
is not final and this field is subject to change in the
161+
future.'
162+
type: string
163+
kind:
164+
description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
165+
type: string
166+
name:
167+
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
168+
type: string
169+
namespace:
170+
description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
171+
type: string
172+
resourceVersion:
173+
description: 'Specific resourceVersion to which this reference
174+
is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
175+
type: string
176+
uid:
177+
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
178+
type: string
179+
type: object
180+
topology:
181+
additionalProperties:
182+
type: string
183+
description: 'topology contains arbitrary topology information
184+
associated with the endpoint. These key/value pairs must conform
185+
with the label format. https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
186+
Topology may include a maximum of 16 key/value pairs. This
187+
includes, but is not limited to the following well known keys:
188+
* kubernetes.io/hostname: the value indicates the hostname
189+
of the node where the endpoint is located. This should match
190+
the corresponding node label. * topology.kubernetes.io/zone:
191+
the value indicates the zone where the endpoint is located.
192+
This should match the corresponding node label. * topology.kubernetes.io/region:
193+
the value indicates the region where the endpoint is located.
194+
This should match the corresponding node label. This field
195+
is deprecated and will be removed in future api versions.'
196+
type: object
197+
required:
198+
- addresses
199+
type: object
200+
type: array
201+
x-kubernetes-list-type: atomic
202+
ports:
203+
description: ports specifies the list of network ports exposed by
204+
each endpoint in this slice. Each port must have a unique name.
205+
When ports is empty, it indicates that there are no defined ports.
206+
When a port is defined with a nil port value, it indicates "all
207+
ports". Each slice may include a maximum of 100 ports.
208+
items:
209+
description: EndpointPort represents a Port used by an EndpointSlice
210+
properties:
211+
appProtocol:
212+
description: The application protocol for this port. This field
213+
follows standard Kubernetes label syntax. Un-prefixed names
214+
are reserved for IANA standard service names (as per RFC-6335
215+
and http://www.iana.org/assignments/service-names). Non-standard
216+
protocols should use prefixed names such as mycompany.com/my-custom-protocol.
217+
type: string
218+
name:
219+
description: 'The name of this port. All ports in an EndpointSlice
220+
must have a unique name. If the EndpointSlice is dervied from
221+
a Kubernetes service, this corresponds to the Service.ports[].name.
222+
Name must either be an empty string or pass DNS_LABEL validation:
223+
* must be no more than 63 characters long. * must consist
224+
of lower case alphanumeric characters or ''-''. * must start
225+
and end with an alphanumeric character. Default is empty string.'
226+
type: string
227+
port:
228+
description: The port number of the endpoint. If this is not
229+
specified, ports are not restricted and must be interpreted
230+
in the context of the specific consumer.
231+
format: int32
232+
type: integer
233+
protocol:
234+
default: TCP
235+
description: The IP protocol for this port. Must be UDP, TCP,
236+
or SCTP. Default is TCP.
237+
type: string
238+
type: object
239+
type: array
240+
x-kubernetes-list-type: atomic
241+
remoteService:
242+
properties:
243+
cluster:
244+
type: string
245+
name:
246+
type: string
247+
namespace:
248+
type: string
249+
required:
250+
- cluster
251+
- name
252+
- namespace
253+
type: object
254+
required:
255+
- addressType
256+
- remoteService
257+
type: object
258+
status:
259+
description: RemoteEndpointSliceStatus defines the observed state of RemoteEndpointSlice
260+
properties:
261+
lastModifyTime:
262+
description: LastModifyTime shows the last timestamp when the remote
263+
subnet was updated.
264+
format: date-time
265+
type: string
266+
type: object
267+
type: object
268+
served: true
269+
storage: true
270+
subresources:
271+
status: {}
272+
status:
273+
acceptedNames:
274+
kind: ""
275+
plural: ""
276+
conditions: []
277+
storedVersions: []

charts/hybridnet/templates/rbac.yaml

+3-15
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,13 @@ rules:
1515
- apiGroups:
1616
- "networking.alibaba.com"
1717
resources:
18-
- networks
19-
- networks/status
20-
- subnets
21-
- subnets/status
22-
- ipinstances
23-
- ipinstances/status
18+
- "*"
2419
verbs:
2520
- "*"
2621
- apiGroups:
2722
- "multicluster.alibaba.com"
2823
resources:
29-
- remoteclusters
30-
- remoteclusters/status
31-
- remotesubnets
32-
- remotesubnets/status
33-
- remotevteps
34-
- remotevteps/status
24+
- "*"
3525
verbs:
3626
- "*"
3727
- apiGroups:
@@ -99,9 +89,7 @@ rules:
9989
resources:
10090
- endpointslices
10191
verbs:
102-
- get
103-
- list
104-
- watch
92+
- "*"
10593
- apiGroups:
10694
- "coordination.k8s.io"
10795
resources:

0 commit comments

Comments
 (0)