| # Copied from https://github.com/kubernetes-sigs/mcs-api/blob/master/config/crd/multicluster.x-k8s.io_serviceimports.yaml |
| # Copyright 2020 The Kubernetes Authors. |
| # |
| # 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. |
| apiVersion: apiextensions.k8s.io/v1 |
| kind: CustomResourceDefinition |
| metadata: |
| name: serviceimports.{{ .Group }} |
| spec: |
| group: {{ .Group }} |
| scope: Namespaced |
| names: |
| plural: serviceimports |
| singular: serviceimport |
| kind: ServiceImport |
| shortNames: |
| - svcim |
| versions: |
| - name: {{ .Version }} |
| served: true |
| storage: true |
| subresources: |
| status: {} |
| additionalPrinterColumns: |
| - name: Type |
| type: string |
| description: The type of this ServiceImport |
| jsonPath: .spec.type |
| - name: IP |
| type: string |
| description: The VIP for this ServiceImport |
| jsonPath: .spec.ips |
| - name: Age |
| type: date |
| jsonPath: .metadata.creationTimestamp |
| "schema": |
| "openAPIV3Schema": |
| description: ServiceImport describes a service imported from clusters in a |
| ClusterSet. |
| type: object |
| properties: |
| apiVersion: |
| description: 'APIVersion defines the versioned schema of this representation |
| of an object. Servers should convert recognized schemas to the latest |
| internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' |
| type: string |
| kind: |
| description: 'Kind is a string value representing the REST resource this |
| object represents. Servers may infer this from the endpoint the client |
| submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' |
| type: string |
| metadata: |
| type: object |
| spec: |
| description: spec defines the behavior of a ServiceImport. |
| type: object |
| required: |
| - ports |
| - type |
| properties: |
| ips: |
| description: ip will be used as the VIP for this service when type |
| is ClusterSetIP. |
| type: array |
| maxItems: 1 |
| items: |
| type: string |
| ports: |
| type: array |
| items: |
| description: ServicePort represents the port on which the service |
| is exposed |
| type: object |
| required: |
| - port |
| properties: |
| appProtocol: |
| description: The application protocol for this port. This field |
| follows standard Kubernetes label syntax. Un-prefixed names |
| are reserved for IANA standard service names (as per RFC-6335 |
| and http://www.iana.org/assignments/service-names). Non-standard |
| protocols should use prefixed names such as mycompany.com/my-custom-protocol. |
| Field can be enabled with ServiceAppProtocol feature gate. |
| type: string |
| name: |
| description: The name of this port within the service. This |
| must be a DNS_LABEL. All ports within a ServiceSpec must have |
| unique names. When considering the endpoints for a Service, |
| this must match the 'name' field in the EndpointPort. Optional |
| if only one ServicePort is defined on this service. |
| type: string |
| port: |
| description: The port that will be exposed by this service. |
| type: integer |
| format: int32 |
| protocol: |
| description: The IP protocol for this port. Supports "TCP", |
| "UDP", and "SCTP". Default is TCP. |
| type: string |
| x-kubernetes-list-type: atomic |
| sessionAffinity: |
| description: 'Supports "ClientIP" and "None". Used to maintain session |
| affinity. Enable client IP based session affinity. Must be ClientIP |
| or None. Defaults to None. Ignored when type is Headless More info: |
| https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' |
| type: string |
| sessionAffinityConfig: |
| description: sessionAffinityConfig contains session affinity configuration. |
| type: object |
| properties: |
| clientIP: |
| description: clientIP contains the configurations of Client IP |
| based session affinity. |
| type: object |
| properties: |
| timeoutSeconds: |
| description: timeoutSeconds specifies the seconds of ClientIP |
| type session sticky time. The value must be >0 && <=86400(for |
| 1 day) if ServiceAffinity == "ClientIP". Default value is |
| 10800(for 3 hours). |
| type: integer |
| format: int32 |
| type: |
| description: type defines the type of this service. Must be ClusterSetIP |
| or Headless. |
| type: string |
| enum: |
| - ClusterSetIP |
| - Headless |
| status: |
| description: status contains information about the exported services that |
| form the multi-cluster service referenced by this ServiceImport. |
| type: object |
| properties: |
| clusters: |
| description: clusters is the list of exporting clusters from which |
| this service was derived. |
| type: array |
| items: |
| description: ClusterStatus contains service configuration mapped |
| to a specific source cluster |
| type: object |
| required: |
| - cluster |
| properties: |
| cluster: |
| description: cluster is the name of the exporting cluster. Must |
| be a valid RFC-1123 DNS label. |
| type: string |
| x-kubernetes-list-map-keys: |
| - cluster |
| x-kubernetes-list-type: map |