apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: clusters.submariner.io spec: group: submariner.io names: kind: Cluster listKind: ClusterList plural: clusters singular: cluster scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: 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: properties: cluster_cidr: items: type: string type: array cluster_id: type: string color_codes: items: type: string type: array global_cidr: items: type: string type: array service_cidr: items: type: string type: array required: - cluster_cidr - cluster_id - color_codes - global_cidr - service_cidr type: object required: - spec type: object served: true storage: true status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: endpoints.submariner.io spec: group: submariner.io names: kind: Endpoint listKind: EndpointList plural: endpoints singular: endpoint scope: Namespaced versions: - name: v1 schema: openAPIV3Schema: 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: properties: backend: type: string backend_config: additionalProperties: type: string type: object cable_name: type: string cluster_id: type: string healthCheckIP: type: string hostname: type: string nat_enabled: type: boolean private_ip: type: string public_ip: type: string subnets: items: type: string type: array required: - backend - cable_name - cluster_id - hostname - nat_enabled - private_ip - public_ip - subnets type: object required: - spec type: object served: true storage: true status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: gateways.submariner.io spec: group: submariner.io names: kind: Gateway listKind: GatewayList plural: gateways singular: gateway scope: Namespaced versions: - additionalPrinterColumns: - description: High availability status of the Gateway jsonPath: .status.haStatus name: HA Status type: string name: v1 schema: openAPIV3Schema: 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 status: properties: connections: items: properties: endpoint: properties: backend: type: string backend_config: additionalProperties: type: string type: object cable_name: type: string cluster_id: type: string healthCheckIP: type: string hostname: type: string nat_enabled: type: boolean private_ip: type: string public_ip: type: string subnets: items: type: string type: array required: - backend - cable_name - cluster_id - hostname - nat_enabled - private_ip - public_ip - subnets type: object latency: description: LatencySpec describes the round trip time information in nanoseconds for a packet between the gateway pods of two clusters. properties: averageRTT: format: int64 type: integer lastRTT: description: TODO This shall be deleted once the operator is using the latest. Using Optional to avoid validation errors when this field is not used. format: int64 type: integer maxRTT: format: int64 type: integer minRTT: format: int64 type: integer stddevRTT: format: int64 type: integer type: object latencyRTT: description: LatencySpec describes the round trip time information for a packet between the gateway pods of two clusters. properties: average: type: string last: type: string max: type: string min: type: string stdDev: type: string type: object status: type: string statusMessage: type: string required: - endpoint - status - statusMessage type: object type: array haStatus: type: string localEndpoint: properties: backend: type: string backend_config: additionalProperties: type: string type: object cable_name: type: string cluster_id: type: string healthCheckIP: type: string hostname: type: string nat_enabled: type: boolean private_ip: type: string public_ip: type: string subnets: items: type: string type: array required: - backend - cable_name - cluster_id - hostname - nat_enabled - private_ip - public_ip - subnets type: object statusFailure: type: string version: type: string required: - connections - haStatus - localEndpoint - statusFailure - version type: object required: - status type: object served: true storage: true subresources: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: serviceexports.multicluster.x-k8s.io spec: group: multicluster.x-k8s.io scope: Namespaced names: plural: serviceexports singular: serviceexport kind: ServiceExport shortNames: - svcex versions: - name: v1alpha1 served: true storage: true subresources: status: {} additionalPrinterColumns: - name: Age type: date jsonPath: .metadata.creationTimestamp "schema": "openAPIV3Schema": description: ServiceExport declares that the Service with the same name and namespace as this export should be consumable from other clusters. 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 status: description: status describes the current state of an exported service. Service configuration comes from the Service that had the same name and namespace as this ServiceExport. Populated by the multi-cluster service implementation's controller. type: object properties: conditions: type: array items: description: "ServiceExportCondition contains details for the current condition of this service export. \n Once [KEP-1623](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/1623-standardize-conditions) is implemented, this will be replaced by metav1.Condition." type: object required: - status - type properties: lastTransitionTime: type: string format: date-time message: type: string reason: type: string status: description: Status is one of {"True", "False", "Unknown"} type: string enum: - "True" - "False" - Unknown type: description: ServiceExportConditionType identifies a specific condition. type: string x-kubernetes-list-map-keys: - type x-kubernetes-list-type: map --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: serviceimports.multicluster.x-k8s.io spec: group: multicluster.x-k8s.io scope: Namespaced names: plural: serviceimports singular: serviceimport kind: ServiceImport shortNames: - svcim versions: - name: v1alpha1 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