--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.12.1 name: submariners.submariner.io spec: group: submariner.io names: kind: Submariner listKind: SubmarinerList plural: submariners singular: submariner scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: Submariner is the Schema for the submariners API. 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: SubmarinerSpec defines the desired state of Submariner. properties: airGappedDeployment: type: boolean broker: description: Type of broker (must be "k8s"). type: string brokerK8sApiServer: description: The broker API URL. type: string brokerK8sApiServerToken: description: The broker API Token. type: string brokerK8sCA: description: The broker certificate authority. type: string brokerK8sInsecure: type: boolean brokerK8sRemoteNamespace: description: The Broker namespace. type: string brokerK8sSecret: type: string cableDriver: description: Cable driver implementation - any of [libreswan, wireguard, vxlan]. type: string ceIPSecDebug: description: Enable logging IPsec debugging information. type: boolean ceIPSecForceUDPEncaps: description: Force UDP encapsulation for IPsec. type: boolean ceIPSecIKEPort: description: The IPsec IKE port (500 usually). type: integer ceIPSecNATTPort: description: The IPsec NAT traversal port (4500 usually). type: integer ceIPSecPSK: description: The IPsec Pre-Shared Key which must be identical in all route agents across the cluster. type: string ceIPSecPSKSecret: type: string ceIPSecPreferredServer: description: Enable this cluster as a preferred server for data-plane connections. type: boolean clusterCIDR: description: The cluster CIDR. type: string clusterID: description: The cluster ID used to identify the tunnels. type: string clustersetIPCIDR: description: ClustersetIP CIDR for allocating ClustersetIPs to exported services. type: string colorCodes: type: string connectionHealthCheck: description: The gateway connection health check. properties: enabled: description: Enable the connection health check. type: boolean intervalSeconds: description: The interval at which health check pings are sent. format: int64 type: integer maxPacketLossCount: description: The maximum number of packets lost at which the health checker will mark the connection as down. format: int64 type: integer type: object coreDNSCustomConfig: description: Name of the custom CoreDNS configmap to configure forwarding to Lighthouse. It should be in / format where is optional and defaults to kube-system. properties: configMapName: description: Name of the custom CoreDNS configmap. type: string namespace: description: Namespace of the custom CoreDNS configmap. type: string type: object customDomains: description: List of domains to use for multi-cluster service discovery. items: type: string type: array x-kubernetes-list-type: set debug: description: Enable operator debugging. type: boolean globalCIDR: description: The Global CIDR super-net range for allocating GlobalCIDRs to each cluster. type: string haltOnCertificateError: description: Halt on certificate error (so the pod gets restarted). type: boolean imageOverrides: additionalProperties: type: string description: Override component images. type: object loadBalancerEnabled: description: Enable automatic Load Balancer in front of the gateways. type: boolean namespace: description: The namespace in which to deploy the submariner operator. type: string natEnabled: description: Enable NAT between clusters. type: boolean nodeSelector: additionalProperties: type: string type: object repository: description: The image repository. type: string serviceCIDR: description: The service CIDR. type: string serviceDiscoveryEnabled: description: Enable support for Service Discovery (Lighthouse). type: boolean clustersetIPEnabled: description: Enable ClustersetIP default for services exported on this cluster. type: boolean tolerations: items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array version: description: The image tag. type: string required: - broker - brokerK8sApiServer - brokerK8sRemoteNamespace - ceIPSecDebug - clusterCIDR - clusterID - debug - namespace - natEnabled - serviceCIDR type: object status: description: SubmarinerStatus defines the observed state of Submariner. properties: airGappedDeployment: type: boolean clusterCIDR: description: The current cluster CIDR. type: string clusterID: description: The current cluster ID. type: string clustersetIPCIDR: description: The current clustersetIP CIDR. type: string colorCodes: type: string deploymentInfo: description: Information about the deployment. properties: cloudProvider: type: string kubernetesType: type: string kubernetesTypeVersion: type: string kubernetesVersion: type: string type: object gatewayDaemonSetStatus: description: The status of the gateway DaemonSet. properties: lastResourceVersion: type: string mismatchedContainerImages: type: boolean nonReadyContainerStates: items: description: ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting. properties: running: description: Details about a running container properties: startedAt: description: Time at which the container was last (re-)started format: date-time type: string type: object terminated: description: Details about a terminated container properties: containerID: description: Container's ID in the format '://' type: string exitCode: description: Exit status from the last termination of the container format: int32 type: integer finishedAt: description: Time at which the container last terminated format: date-time type: string message: description: Message regarding the last termination of the container type: string reason: description: (brief) reason from the last termination of the container type: string signal: description: Signal from the last termination of the container format: int32 type: integer startedAt: description: Time at which previous execution of the container started format: date-time type: string required: - exitCode type: object waiting: description: Details about a waiting container properties: message: description: Message regarding why the container is not yet running. type: string reason: description: (brief) reason the container is not yet running. type: string type: object type: object type: array status: description: DaemonSetStatus represents the current status of a daemon set. properties: collisionCount: description: Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision. format: int32 type: integer conditions: description: Represents the latest available observations of a DaemonSet's current state. items: description: DaemonSetCondition describes the state of a DaemonSet at a certain point. properties: lastTransitionTime: description: Last time the condition transitioned from one status to another. format: date-time type: string message: description: A human readable message indicating details about the transition. type: string reason: description: The reason for the condition's last transition. type: string status: description: Status of the condition, one of True, False, Unknown. type: string type: description: Type of DaemonSet condition. type: string required: - status - type type: object type: array currentNumberScheduled: description: 'The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/' format: int32 type: integer desiredNumberScheduled: description: 'The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/' format: int32 type: integer numberAvailable: description: The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds) format: int32 type: integer numberMisscheduled: description: 'The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/' format: int32 type: integer numberReady: description: numberReady is the number of nodes that should be running the daemon pod and have one or more of the daemon pod running with a Ready Condition. format: int32 type: integer numberUnavailable: description: The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds) format: int32 type: integer observedGeneration: description: The most recent generation observed by the daemon set controller. format: int64 type: integer updatedNumberScheduled: description: The total number of nodes that are running updated daemon pod format: int32 type: integer required: - currentNumberScheduled - desiredNumberScheduled - numberMisscheduled - numberReady type: object required: - mismatchedContainerImages type: object gateways: description: Status of the gateways in the cluster. items: properties: connections: items: properties: endpoint: properties: backend: type: string backend_config: additionalProperties: type: string type: object cable_name: type: string cluster_id: maxLength: 63 minLength: 1 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 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 usingIP: type: string usingNAT: type: boolean 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: maxLength: 63 minLength: 1 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 type: array globalCIDR: description: The current global CIDR. type: string globalnetDaemonSetStatus: description: The status of the Globalnet DaemonSet. properties: lastResourceVersion: type: string mismatchedContainerImages: type: boolean nonReadyContainerStates: items: description: ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting. properties: running: description: Details about a running container properties: startedAt: description: Time at which the container was last (re-)started format: date-time type: string type: object terminated: description: Details about a terminated container properties: containerID: description: Container's ID in the format '://' type: string exitCode: description: Exit status from the last termination of the container format: int32 type: integer finishedAt: description: Time at which the container last terminated format: date-time type: string message: description: Message regarding the last termination of the container type: string reason: description: (brief) reason from the last termination of the container type: string signal: description: Signal from the last termination of the container format: int32 type: integer startedAt: description: Time at which previous execution of the container started format: date-time type: string required: - exitCode type: object waiting: description: Details about a waiting container properties: message: description: Message regarding why the container is not yet running. type: string reason: description: (brief) reason the container is not yet running. type: string type: object type: object type: array status: description: DaemonSetStatus represents the current status of a daemon set. properties: collisionCount: description: Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision. format: int32 type: integer conditions: description: Represents the latest available observations of a DaemonSet's current state. items: description: DaemonSetCondition describes the state of a DaemonSet at a certain point. properties: lastTransitionTime: description: Last time the condition transitioned from one status to another. format: date-time type: string message: description: A human readable message indicating details about the transition. type: string reason: description: The reason for the condition's last transition. type: string status: description: Status of the condition, one of True, False, Unknown. type: string type: description: Type of DaemonSet condition. type: string required: - status - type type: object type: array currentNumberScheduled: description: 'The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/' format: int32 type: integer desiredNumberScheduled: description: 'The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/' format: int32 type: integer numberAvailable: description: The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds) format: int32 type: integer numberMisscheduled: description: 'The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/' format: int32 type: integer numberReady: description: numberReady is the number of nodes that should be running the daemon pod and have one or more of the daemon pod running with a Ready Condition. format: int32 type: integer numberUnavailable: description: The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds) format: int32 type: integer observedGeneration: description: The most recent generation observed by the daemon set controller. format: int64 type: integer updatedNumberScheduled: description: The total number of nodes that are running updated daemon pod format: int32 type: integer required: - currentNumberScheduled - desiredNumberScheduled - numberMisscheduled - numberReady type: object required: - mismatchedContainerImages type: object loadBalancerStatus: description: The status of the load balancer DaemonSet. properties: status: description: LoadBalancerStatus represents the status of a load-balancer. properties: ingress: description: Ingress is a list containing ingress points for the load-balancer. Traffic intended for the service should be sent to these ingress points. items: description: 'LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.' properties: hostname: description: Hostname is set for load-balancer ingress points that are DNS based (typically AWS load-balancers) type: string ip: description: IP is set for load-balancer ingress points that are IP based (typically GCE or OpenStack load-balancers) type: string ports: description: Ports is a list of records of service ports If used, every port defined in the service should have an entry in it items: properties: error: description: 'Error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use CamelCase names - cloud provider specific error values must have names that comply with the format foo.example.com/CamelCase. --- The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)' maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string port: description: Port is the port number of the service port of which status is recorded here format: int32 type: integer protocol: default: TCP description: 'Protocol is the protocol of the service port of which status is recorded here The supported values are: "TCP", "UDP", "SCTP"' type: string required: - port - protocol type: object type: array x-kubernetes-list-type: atomic type: object type: array type: object type: object natEnabled: description: The current NAT status. type: boolean networkPlugin: description: The current network plugin. type: string routeAgentDaemonSetStatus: description: The status of the route agent DaemonSet. properties: lastResourceVersion: type: string mismatchedContainerImages: type: boolean nonReadyContainerStates: items: description: ContainerState holds a possible state of container. Only one of its members may be specified. If none of them is specified, the default one is ContainerStateWaiting. properties: running: description: Details about a running container properties: startedAt: description: Time at which the container was last (re-)started format: date-time type: string type: object terminated: description: Details about a terminated container properties: containerID: description: Container's ID in the format '://' type: string exitCode: description: Exit status from the last termination of the container format: int32 type: integer finishedAt: description: Time at which the container last terminated format: date-time type: string message: description: Message regarding the last termination of the container type: string reason: description: (brief) reason from the last termination of the container type: string signal: description: Signal from the last termination of the container format: int32 type: integer startedAt: description: Time at which previous execution of the container started format: date-time type: string required: - exitCode type: object waiting: description: Details about a waiting container properties: message: description: Message regarding why the container is not yet running. type: string reason: description: (brief) reason the container is not yet running. type: string type: object type: object type: array status: description: DaemonSetStatus represents the current status of a daemon set. properties: collisionCount: description: Count of hash collisions for the DaemonSet. The DaemonSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision. format: int32 type: integer conditions: description: Represents the latest available observations of a DaemonSet's current state. items: description: DaemonSetCondition describes the state of a DaemonSet at a certain point. properties: lastTransitionTime: description: Last time the condition transitioned from one status to another. format: date-time type: string message: description: A human readable message indicating details about the transition. type: string reason: description: The reason for the condition's last transition. type: string status: description: Status of the condition, one of True, False, Unknown. type: string type: description: Type of DaemonSet condition. type: string required: - status - type type: object type: array currentNumberScheduled: description: 'The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/' format: int32 type: integer desiredNumberScheduled: description: 'The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/' format: int32 type: integer numberAvailable: description: The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available (ready for at least spec.minReadySeconds) format: int32 type: integer numberMisscheduled: description: 'The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/' format: int32 type: integer numberReady: description: numberReady is the number of nodes that should be running the daemon pod and have one or more of the daemon pod running with a Ready Condition. format: int32 type: integer numberUnavailable: description: The number of nodes that should be running the daemon pod and have none of the daemon pod running and available (ready for at least spec.minReadySeconds) format: int32 type: integer observedGeneration: description: The most recent generation observed by the daemon set controller. format: int64 type: integer updatedNumberScheduled: description: The total number of nodes that are running updated daemon pod format: int32 type: integer required: - currentNumberScheduled - desiredNumberScheduled - numberMisscheduled - numberReady type: object required: - mismatchedContainerImages type: object serviceCIDR: description: The current service CIDR. type: string version: description: The image version in use by the various Submariner DaemonSets and Deployments. type: string required: - clusterID - natEnabled type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.12.1 name: servicediscoveries.submariner.io spec: group: submariner.io names: kind: ServiceDiscovery listKind: ServiceDiscoveryList plural: servicediscoveries singular: servicediscovery scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: ServiceDiscovery is the Schema for the servicediscoveries API. 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: ServiceDiscoverySpec defines the desired state of ServiceDiscovery. properties: brokerK8sApiServer: type: string brokerK8sApiServerToken: type: string brokerK8sCA: type: string brokerK8sInsecure: type: boolean brokerK8sRemoteNamespace: type: string brokerK8sSecret: type: string clusterID: type: string clustersetIPCIDR: type: string coreDNSCustomConfig: properties: configMapName: description: Name of the custom CoreDNS configmap. type: string namespace: description: Namespace of the custom CoreDNS configmap. type: string type: object customDomains: items: type: string type: array x-kubernetes-list-type: set debug: type: boolean globalnetEnabled: type: boolean haltOnCertificateError: type: boolean clustersetIPEnabled: type: boolean imageOverrides: additionalProperties: type: string type: object namespace: type: string nodeSelector: additionalProperties: type: string type: object repository: type: string tolerations: items: description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . properties: effect: description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. type: string tolerationSeconds: description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array version: type: string required: - brokerK8sApiServer - brokerK8sRemoteNamespace - clusterID - debug - namespace type: object status: description: ServiceDiscoveryStatus defines the observed state of ServiceDiscovery. properties: deploymentInfo: properties: cloudProvider: type: string kubernetesType: type: string kubernetesTypeVersion: type: string kubernetesVersion: type: string type: object type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.3.0 creationTimestamp: null name: brokers.submariner.io spec: group: submariner.io names: kind: Broker listKind: BrokerList plural: brokers singular: broker scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: Broker is the Schema for the brokers API 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: BrokerSpec defines the desired state of Broker properties: components: items: type: string type: array defaultCustomDomains: items: type: string type: array defaultGlobalnetClusterSize: type: integer globalnetCIDRRange: type: string globalnetEnabled: type: boolean type: object status: description: BrokerStatus defines the observed state of Broker type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: []