From d575a184caf45b7a9aff2859972242732f093447 Mon Sep 17 00:00:00 2001 From: Arvind Thirumurugan Date: Tue, 12 Aug 2025 15:33:53 -0700 Subject: [PATCH] copy member CRDs from fleet, fleet-networking --- .../templates/crds/appliedworks.yaml | 325 ++- .../templates/crds/networking.yaml | 2021 +++++------------ 2 files changed, 752 insertions(+), 1594 deletions(-) diff --git a/charts/member-agent-arc/templates/crds/appliedworks.yaml b/charts/member-agent-arc/templates/crds/appliedworks.yaml index e67422a1e..e96c26004 100644 --- a/charts/member-agent-arc/templates/crds/appliedworks.yaml +++ b/charts/member-agent-arc/templates/crds/appliedworks.yaml @@ -3,128 +3,227 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.4 + controller-gen.kubebuilder.io/version: v0.16.0 + name: appliedworks.placement.kubernetes-fleet.io labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} kubernetes.azure.com/managedby: fleet - name: appliedworks.placement.kubernetes-fleet.io spec: group: placement.kubernetes-fleet.io names: categories: - - fleet - - fleet-placement + - fleet + - fleet-placement kind: AppliedWork listKind: AppliedWorkList plural: appliedworks singular: appliedwork scope: Cluster versions: - - name: v1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - workName: - type: string - workNamespace: - type: string - required: - - workName - - workNamespace - type: object - status: - properties: - appliedResources: - items: - properties: - group: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - ordinal: - type: integer - resource: - type: string - uid: - type: string - version: - type: string - required: - - ordinal - type: object - type: array - type: object - required: - - spec - type: object - served: true - storage: false - subresources: - status: {} - - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - workName: - type: string - workNamespace: - type: string - required: - - workName - - workNamespace - type: object - status: - properties: - appliedResources: - items: - properties: - group: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - ordinal: - type: integer - resource: - type: string - uid: - type: string - version: - type: string - required: - - ordinal - type: object - type: array - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} + - name: v1 + schema: + openAPIV3Schema: + description: |- + AppliedWork represents an applied work on managed cluster that is placed + on a managed cluster. An appliedwork links to a work on a hub recording resources + deployed in the managed cluster. + When the agent is removed from managed cluster, cluster-admin on managed cluster + can delete appliedwork to remove resources deployed by the agent. + The name of the appliedwork must be the same as {work name} + The namespace of the appliedwork should be the same as the resource applied on + the managed cluster. + 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 represents the desired configuration of AppliedWork. + properties: + workName: + description: WorkName represents the name of the related work on the + hub. + type: string + workNamespace: + description: WorkNamespace represents the namespace of the related + work on the hub. + type: string + required: + - workName + - workNamespace + type: object + status: + description: Status represents the current status of AppliedWork. + properties: + appliedResources: + description: |- + AppliedResources represents a list of resources defined within the Work that are applied. + Only resources with valid GroupVersionResource, namespace, and name are suitable. + An item in this slice is deleted when there is no mapped manifest in Work.Spec or by finalizer. + The resource relating to the item will also be removed from managed cluster. + The deleted resource may still be present until the finalizers for that resource are finished. + However, the resource will not be undeleted, so it can be removed from this list and eventual consistency is preserved. + items: + description: |- + AppliedResourceMeta represents the group, version, resource, name and namespace of a resource. + Since these resources have been created, they must have valid group, version, resource, namespace, and name. + properties: + group: + description: Group is the group of the resource. + type: string + kind: + description: Kind is the kind of the resource. + type: string + name: + description: Name is the name of the resource + type: string + namespace: + description: |- + Namespace is the namespace of the resource, the resource is cluster scoped if the value + is empty + type: string + ordinal: + description: |- + Ordinal represents an index in manifests list, so the condition can still be linked + to a manifest even though manifest cannot be parsed successfully. + type: integer + resource: + description: Resource is the resource type of the resource + type: string + uid: + description: |- + UID is set on successful deletion of the Kubernetes resource by controller. The + resource might be still visible on the managed cluster after this field is set. + It is not directly settable by a client. + type: string + version: + description: Version is the version of the resource. + type: string + required: + - ordinal + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: false + subresources: + status: {} + - name: v1beta1 + schema: + openAPIV3Schema: + description: |- + AppliedWork represents an applied work on managed cluster that is placed + on a managed cluster. An appliedwork links to a work on a hub recording resources + deployed in the managed cluster. + When the agent is removed from managed cluster, cluster-admin on managed cluster + can delete appliedwork to remove resources deployed by the agent. + The name of the appliedwork must be the same as {work name} + The namespace of the appliedwork should be the same as the resource applied on + the managed cluster. + 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 represents the desired configuration of AppliedWork. + properties: + workName: + description: WorkName represents the name of the related work on the + hub. + type: string + workNamespace: + description: WorkNamespace represents the namespace of the related + work on the hub. + type: string + required: + - workName + - workNamespace + type: object + status: + description: Status represents the current status of AppliedWork. + properties: + appliedResources: + description: |- + AppliedResources represents a list of resources defined within the Work that are applied. + Only resources with valid GroupVersionResource, namespace, and name are suitable. + An item in this slice is deleted when there is no mapped manifest in Work.Spec or by finalizer. + The resource relating to the item will also be removed from managed cluster. + The deleted resource may still be present until the finalizers for that resource are finished. + However, the resource will not be undeleted, so it can be removed from this list and eventual consistency is preserved. + items: + description: |- + AppliedResourceMeta represents the group, version, resource, name and namespace of a resource. + Since these resources have been created, they must have valid group, version, resource, namespace, and name. + properties: + group: + description: Group is the group of the resource. + type: string + kind: + description: Kind is the kind of the resource. + type: string + name: + description: Name is the name of the resource. + type: string + namespace: + description: |- + Namespace is the namespace of the resource, the resource is cluster scoped if the value + is empty. + type: string + ordinal: + description: |- + Ordinal represents an index in manifests list, so the condition can still be linked + to a manifest even though manifest cannot be parsed successfully. + type: integer + resource: + description: Resource is the resource type of the resource. + type: string + uid: + description: |- + UID is set on successful deletion of the Kubernetes resource by controller. The + resource might be still visible on the managed cluster after this field is set. + It is not directly settable by a client. + type: string + version: + description: Version is the version of the resource. + type: string + required: + - ordinal + type: object + type: array + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} diff --git a/charts/member-agent-arc/templates/crds/networking.yaml b/charts/member-agent-arc/templates/crds/networking.yaml index 44fcd28e1..bbd9c94b1 100644 --- a/charts/member-agent-arc/templates/crds/networking.yaml +++ b/charts/member-agent-arc/templates/crds/networking.yaml @@ -1,1571 +1,630 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: endpointsliceexports.networking.fleet.azure.com - labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} - kubernetes.azure.com/managedby: fleet -spec: - group: networking.fleet.azure.com - names: - categories: - - fleet-networking - kind: EndpointSliceExport - listKind: EndpointSliceExportList - plural: endpointsliceexports - singular: endpointsliceexport - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - addressType: - default: IPv4 - enum: - - IPv4 - type: string - endpointSliceReference: - properties: - apiVersion: - type: string - clusterId: - type: string - exportedSince: - format: date-time - type: string - generation: - format: int64 - type: integer - kind: - type: string - name: - type: string - namespace: - type: string - namespacedName: - type: string - resourceVersion: - type: string - uid: - type: string - required: - - clusterId - - generation - - kind - - name - - namespace - - namespacedName - - resourceVersion - - uid - type: object - x-kubernetes-map-type: atomic - endpoints: - items: - properties: - addresses: - items: - type: string - type: array - required: - - addresses - type: object - type: array - x-kubernetes-list-type: atomic - ownerServiceReference: - properties: - name: - type: string - namespace: - type: string - namespacedName: - type: string - required: - - name - - namespace - - namespacedName - type: object - ports: - items: - properties: - appProtocol: - type: string - name: - type: string - port: - format: int32 - type: integer - protocol: - default: TCP - type: string - type: object - x-kubernetes-map-type: atomic - type: array - x-kubernetes-list-type: atomic - required: - - addressType - - endpointSliceReference - - endpoints - - ownerServiceReference - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: endpointsliceimports.networking.fleet.azure.com + controller-gen.kubebuilder.io/version: v0.16.0 + name: multiclusterservices.networking.fleet.azure.com labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} kubernetes.azure.com/managedby: fleet spec: group: networking.fleet.azure.com names: categories: - - fleet-networking - kind: EndpointSliceImport - listKind: EndpointSliceImportList - plural: endpointsliceimports - singular: endpointsliceimport + - fleet-networking + kind: MultiClusterService + listKind: MultiClusterServiceList + plural: multiclusterservices + shortNames: + - mcs + singular: multiclusterservice scope: Namespaced versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - addressType: - default: IPv4 - enum: - - IPv4 - type: string - endpointSliceReference: + - additionalPrinterColumns: + - jsonPath: .spec.serviceImport.name + name: Service-Import + type: string + - jsonPath: .status.loadBalancer.ingress[0].ip + name: External-IP + type: string + - jsonPath: .status.conditions[?(@.type=='Valid')].status + name: Is-Valid + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: MultiClusterService is the Schema for creating north-south L4 + load balancer to consume services across clusters. + 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: MultiClusterServiceSpec defines the desired state of MultiClusterService. + properties: + serviceImport: + description: ServiceImport is the reference to the Service with the + same name exported in the member clusters. + properties: + name: + description: Name is the name of the referent. + maxLength: 63 + pattern: ^([a-z]([-a-z0-9]*[a-z0-9])?)$ + type: string + required: + - name + type: object + type: object + status: + description: MultiClusterServiceStatus represents the current status of + a multi-cluster service. + properties: + conditions: + description: Current service state + items: + description: Condition contains details for one aspect of the current + state of this API Resource. properties: - apiVersion: - type: string - clusterId: - type: string - exportedSince: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string - generation: + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 + minimum: 0 type: integer - kind: - type: string - name: - type: string - namespace: - type: string - namespacedName: - type: string - resourceVersion: + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown type: string - uid: + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + 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 required: - - clusterId - - generation - - kind - - name - - namespace - - namespacedName - - resourceVersion - - uid + - lastTransitionTime + - message + - reason + - status + - type type: object - x-kubernetes-map-type: atomic - endpoints: - items: - properties: - addresses: - items: + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + loadBalancer: + description: |- + LoadBalancerStatus represents the status of a load-balancer. + if one is present. + 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 - type: array - required: - - addresses - type: object - type: array - x-kubernetes-list-type: atomic - ownerServiceReference: - properties: - name: - type: string - namespace: - type: string - namespacedName: - type: string - required: - - name - - namespace - - namespacedName - type: object - ports: - items: - properties: - appProtocol: - type: string - name: - type: string - port: - format: int32 - type: integer - protocol: - default: TCP - type: string - type: object - x-kubernetes-map-type: atomic - type: array - x-kubernetes-list-type: atomic - required: - - addressType - - endpointSliceReference - - endpoints - - ownerServiceReference - type: object - required: - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] + ip: + description: |- + IP is set for load-balancer ingress points that are IP based + (typically GCE or OpenStack load-balancers) + type: string + ipMode: + description: |- + IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified. + Setting this to "VIP" indicates that traffic is delivered to the node with + the destination set to the load-balancer's IP and port. + Setting this to "Proxy" indicates that traffic is delivered to the node or pod with + the destination set to the node's IP and node port or the pod's IP and port. + Service implementations may use this information to adjust traffic routing. + 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. + 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: + - error + - port + - protocol + type: object + type: array + x-kubernetes-list-type: atomic + type: object + type: array + x-kubernetes-list-type: atomic + type: object + type: object + required: + - spec + type: object + x-kubernetes-validations: + - message: metadata.name max length is 63 + rule: size(self.metadata.name) < 64 + served: true + storage: true + subresources: + status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: internalserviceexports.networking.fleet.azure.com + controller-gen.kubebuilder.io/version: v0.16.0 + name: serviceexports.networking.fleet.azure.com labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} kubernetes.azure.com/managedby: fleet spec: group: networking.fleet.azure.com names: categories: - - fleet-networking - kind: InternalServiceExport - listKind: InternalServiceExportList - plural: internalserviceexports + - fleet-networking + kind: ServiceExport + listKind: ServiceExportList + plural: serviceexports shortNames: - - internalsvcexport - singular: internalserviceexport + - svcexport + singular: serviceexport scope: Namespaced versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - isDNSLabelConfigured: - type: boolean - isInternalLoadBalancer: - type: boolean - ports: - items: - properties: - appProtocol: - type: string - name: - type: string - port: - format: int32 - maximum: 65535 - minimum: 1 - type: integer - protocol: - default: TCP - enum: - - TCP - - UDP - - SCTP - type: string - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-type: atomic - publicIPResourceID: - type: string - serviceReference: + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Valid')].status + name: Is-Valid + type: string + - jsonPath: .status.conditions[?(@.type=='Conflict')].status + name: Is-Conflicted + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + ServiceExport declares that the associated service should be exported to other clusters. + The annotation "networking.fleet.azure.com/weight" specifies the proportion of requests forwarded to the cluster + within a serviceImport. + The actual value is the ceiling value of a number computed as weight/(sum of all weights in the serviceImport). + If weight is set to 0, no traffic should be forwarded for this entry. + If unspecified, weight defaults to 1. + The value should be in the range [0, 1000]. + 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: ServiceExportStatus contains the current status of an export. + properties: + conditions: + items: + description: Condition contains details for one aspect of the current + state of this API Resource. properties: - apiVersion: - type: string - clusterId: - type: string - exportedSince: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string - generation: + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 + minimum: 0 type: integer - kind: - type: string - name: - type: string - namespace: - type: string - namespacedName: - type: string - resourceVersion: + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown type: string - uid: + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + 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 required: - - clusterId - - generation - - kind - - name - - namespace - - namespacedName - - resourceVersion - - uid + - lastTransitionTime + - message + - reason + - status + - type type: object - x-kubernetes-map-type: atomic - type: - type: string - weight: - format: int64 - type: integer - required: - - ports - - serviceReference - type: object - status: - properties: - conditions: - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - maxLength: 32768 - type: string - observedGeneration: - format: int64 - minimum: 0 - type: integer - reason: - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - enum: - - "True" - - "False" - - Unknown - type: string - type: - 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 - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: internalserviceimports.networking.fleet.azure.com - labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} - kubernetes.azure.com/managedby: fleet -spec: - group: networking.fleet.azure.com - names: - categories: - - fleet-networking - kind: InternalServiceImport - listKind: InternalServiceImportList - plural: internalserviceimports - shortNames: - - internalsvcimport - singular: internalserviceimport - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - serviceImportReference: + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + type: object + x-kubernetes-validations: + - message: metadata.name max length is 63 + rule: size(self.metadata.name) < 64 + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.conditions[?(@.type=='Valid')].status + name: Is-Valid + type: string + - jsonPath: .status.conditions[?(@.type=='Conflict')].status + name: Is-Conflicted + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: |- + ServiceExport declares that the associated service should be exported to other clusters. + The annotation "networking.fleet.azure.com/weight" specifies the proportion of requests forwarded to the cluster + within a serviceImport. + The actual value is the ceiling value of a number computed as weight/(sum of all weights in the serviceImport). + If weight is set to 0, no traffic should be forwarded for this entry. + If unspecified, weight defaults to 1. + The value should be in the range [0, 1000]. + 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: ServiceExportStatus contains the current status of an export. + properties: + conditions: + items: + description: Condition contains details for one aspect of the current + state of this API Resource. properties: - apiVersion: - type: string - clusterId: - type: string - exportedSince: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string - generation: + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 + minimum: 0 type: integer - kind: - type: string - name: - type: string - namespace: - type: string - namespacedName: - type: string - resourceVersion: + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown type: string - uid: + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. + 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 required: - - clusterId - - generation - - kind - - name - - namespace - - namespacedName - - resourceVersion - - uid - type: object - x-kubernetes-map-type: atomic - required: - - serviceImportReference - type: object - status: - properties: - clusters: - items: - properties: - cluster: - type: string - required: - - cluster - type: object - type: array - x-kubernetes-list-map-keys: - - cluster - x-kubernetes-list-type: map - ips: - items: - type: string - maxItems: 1 - type: array - ports: - items: - properties: - appProtocol: - type: string - name: - type: string - port: - format: int32 - maximum: 65535 - minimum: 1 - type: integer - protocol: - default: TCP - enum: - - TCP - - UDP - - SCTP - type: string - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-type: atomic - sessionAffinity: - type: string - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object + - lastTransitionTime + - message + - reason + - status + - type type: object - type: - enum: - - ClusterSetIP - - Headless - type: string - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + type: object + type: object + x-kubernetes-validations: + - message: metadata.name max length is 63 + rule: size(self.metadata.name) < 64 + served: true + storage: true + subresources: + status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: multiclusterservices.networking.fleet.azure.com - labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} - kubernetes.azure.com/managedby: fleet -spec: - group: networking.fleet.azure.com - names: - categories: - - fleet-networking - kind: MultiClusterService - listKind: MultiClusterServiceList - plural: multiclusterservices - shortNames: - - mcs - singular: multiclusterservice - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.serviceImport.name - name: Service-Import - type: string - - jsonPath: .status.loadBalancer.ingress[0].ip - name: External-IP - type: string - - jsonPath: .status.conditions[?(@.type=='Valid')].status - name: Is-Valid - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - serviceImport: - properties: - name: - maxLength: 63 - pattern: ^([a-z]([-a-z0-9]*[a-z0-9])?)$ - type: string - required: - - name - type: object - type: object - status: - properties: - conditions: - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - maxLength: 32768 - type: string - observedGeneration: - format: int64 - minimum: 0 - type: integer - reason: - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - enum: - - "True" - - "False" - - Unknown - type: string - type: - 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 - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - loadBalancer: - properties: - ingress: - items: - properties: - hostname: - type: string - ip: - type: string - ipMode: - type: string - ports: - items: - properties: - error: - 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: - format: int32 - type: integer - protocol: - default: TCP - type: string - required: - - error - - port - - protocol - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: array - x-kubernetes-list-type: atomic - type: object - type: object - required: - - spec - type: object - x-kubernetes-validations: - - message: metadata.name max length is 63 - rule: size(self.metadata.name) < 64 - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null - name: serviceexports.networking.fleet.azure.com - labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} - kubernetes.azure.com/managedby: fleet -spec: - group: networking.fleet.azure.com - names: - categories: - - fleet-networking - kind: ServiceExport - listKind: ServiceExportList - plural: serviceexports - shortNames: - - svcexport - singular: serviceexport - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.conditions[?(@.type=='Valid')].status - name: Is-Valid - type: string - - jsonPath: .status.conditions[?(@.type=='Conflict')].status - name: Is-Conflicted - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - status: - properties: - conditions: - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - maxLength: 32768 - type: string - observedGeneration: - format: int64 - minimum: 0 - type: integer - reason: - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - enum: - - "True" - - "False" - - Unknown - type: string - type: - 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 - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - type: object - type: object - x-kubernetes-validations: - - message: metadata.name max length is 63 - rule: size(self.metadata.name) < 64 - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.7.0 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.16.0 name: serviceimports.networking.fleet.azure.com labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} kubernetes.azure.com/managedby: fleet spec: group: networking.fleet.azure.com names: categories: - - fleet-networking + - fleet-networking kind: ServiceImport listKind: ServiceImportList plural: serviceimports shortNames: - - svcimport + - svcimport singular: serviceimport scope: Namespaced versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - status: - properties: - clusters: - items: - properties: - cluster: - type: string - required: - - cluster - type: object - type: array - x-kubernetes-list-map-keys: - - cluster - x-kubernetes-list-type: map - ips: - items: - type: string - maxItems: 1 - type: array - ports: - items: - properties: - appProtocol: - type: string - name: - type: string - port: - format: int32 - maximum: 65535 - minimum: 1 - type: integer - protocol: - default: TCP - enum: - - TCP - - UDP - - SCTP - type: string - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-type: atomic - sessionAffinity: - type: string - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - enum: - - ClusterSetIP - - Headless - type: string - type: object - type: object - x-kubernetes-validations: - - message: metadata.name max length is 63 - rule: size(self.metadata.name) < 64 - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - name: trafficmanagerbackends.networking.fleet.azure.com - labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} - kubernetes.azure.com/managedby: fleet -spec: - group: networking.fleet.azure.com - names: - categories: - - fleet-networking - kind: TrafficManagerBackend - listKind: TrafficManagerBackendList - plural: trafficmanagerbackends - shortNames: - - tmb - singular: trafficmanagerbackend - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .spec.profile.name - name: Profile - type: string - - jsonPath: .spec.backend.name - name: Backend - type: string - - jsonPath: .status.conditions[?(@.type=='Accepted')].status - name: Is-Accepted - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - backend: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: ServiceImport describes a service imported from clusters in a + ClusterSet. + 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 contains information about the exported services that form + the multi-cluster service referenced by this ServiceImport. + properties: + clusters: + description: clusters is the list of exporting clusters from which + this service was derived. + items: + description: ClusterStatus contains service configuration mapped + to a specific source cluster. properties: - name: - type: string - required: - - name - type: object - x-kubernetes-validations: - - message: spec.backend is immutable - rule: self == oldSelf - profile: - properties: - name: + cluster: + description: cluster is the name of the exporting cluster. Must + be a valid RFC-1123 DNS label. type: string required: - - name + - cluster type: object - x-kubernetes-validations: - - message: spec.profile is immutable - rule: self == oldSelf - weight: - default: 1 - format: int64 - maximum: 1000 - minimum: 0 - type: integer - required: - - backend - - profile - type: object - status: - properties: - conditions: - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - maxLength: 32768 - type: string - observedGeneration: - format: int64 - minimum: 0 - type: integer - reason: - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - enum: - - "True" - - "False" - - Unknown - type: string - type: - 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 - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - endpoints: - items: - properties: - from: - properties: - cluster: - type: string - weight: - format: int64 - type: integer - required: - - cluster - type: object - name: - type: string - resourceID: - type: string - target: - type: string - weight: - format: int64 - type: integer - required: - - name - type: object - type: array - type: object - required: - - spec - type: object - x-kubernetes-validations: - - message: metadata.name max length is 63 - rule: size(self.metadata.name) < 64 - served: false - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .spec.profile.name - name: Profile - type: string - - jsonPath: .spec.backend.name - name: Backend - type: string - - jsonPath: .status.conditions[?(@.type=='Accepted')].status - name: Is-Accepted - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - backend: + type: array + x-kubernetes-list-map-keys: + - cluster + x-kubernetes-list-type: map + ips: + description: ip will be used as the VIP for this service when type + is ClusterSetIP. + items: + type: string + maxItems: 1 + type: array + ports: + items: + description: ServicePort represents the port on which the service + is exposed. properties: - name: + 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 - required: - - name - type: object - x-kubernetes-validations: - - message: spec.backend is immutable - rule: self == oldSelf - profile: - properties: name: - type: string - required: - - name - type: object - x-kubernetes-validations: - - message: spec.profile is immutable - rule: self == oldSelf - weight: - default: 1 - format: int64 - maximum: 1000 - minimum: 0 - type: integer - required: - - backend - - profile - type: object - status: - properties: - conditions: - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - maxLength: 32768 - type: string - observedGeneration: - format: int64 - minimum: 0 - type: integer - reason: - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - enum: - - "True" - - "False" - - Unknown - type: string - type: - 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 - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - endpoints: - items: - properties: - from: - properties: - cluster: - type: string - weight: - format: int64 - type: integer - required: - - cluster - type: object - name: - type: string - resourceID: - type: string - target: - type: string - weight: - format: int64 - type: integer - required: - - name - type: object - type: array - type: object - required: - - spec - type: object - x-kubernetes-validations: - - message: metadata.name max length is 63 - rule: size(self.metadata.name) < 64 - served: true - storage: true - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.15.0 - name: trafficmanagerprofiles.networking.fleet.azure.com - labels: -{{- if .Values.legacyAddonDelivery }} - addonmanager.kubernetes.io/mode: Reconcile -{{- end }} - kubernetes.azure.com/managedby: fleet -spec: - group: networking.fleet.azure.com - names: - categories: - - fleet-networking - kind: TrafficManagerProfile - listKind: TrafficManagerProfileList - plural: trafficmanagerprofiles - shortNames: - - tmp - singular: trafficmanagerprofile - scope: Namespaced - versions: - - additionalPrinterColumns: - - jsonPath: .status.dnsName - name: DNS-Name - type: string - - jsonPath: .status.conditions[?(@.type=='Programmed')].status - name: Is-Programmed - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - monitorConfig: - properties: - customHeaders: - items: - properties: - name: - minLength: 1 - type: string - value: - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - intervalInSeconds: - default: 30 - enum: - - 10 - - 30 - format: int64 - type: integer - path: - default: / - type: string - port: - default: 80 - format: int64 - type: integer - protocol: - default: HTTP - enum: - - HTTP - - HTTPS - - TCP - type: string - timeoutInSeconds: - format: int64 - maximum: 10 - minimum: 5 - type: integer - toleratedNumberOfFailures: - default: 3 - format: int64 - maximum: 9 - minimum: 0 - type: integer - type: object - resourceGroup: - type: string - x-kubernetes-validations: - - message: resourceGroup is immutable - rule: self == oldSelf - required: - - resourceGroup - type: object - status: - properties: - conditions: - items: - properties: - lastTransitionTime: - format: date-time - type: string - message: - maxLength: 32768 - type: string - observedGeneration: - format: int64 - minimum: 0 - type: integer - reason: - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - enum: - - "True" - - "False" - - Unknown - type: string - type: - 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 - required: - - lastTransitionTime - - message - - reason - - status - - type - type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - dnsName: - type: string - resourceID: - type: string - type: object - required: - - spec - type: object - x-kubernetes-validations: - - message: metadata.name max length is 63 - rule: size(self.metadata.name) < 64 - served: false - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.dnsName - name: DNS-Name - type: string - - jsonPath: .status.conditions[?(@.type=='Programmed')].status - name: Is-Programmed - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - monitorConfig: - properties: - customHeaders: - items: - properties: - name: - minLength: 1 - type: string - value: - minLength: 1 - type: string - required: - - name - - value - type: object - maxItems: 8 - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map - intervalInSeconds: - default: 30 - enum: - - 10 - - 30 - format: int64 - type: integer - path: - default: / + 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: - default: 80 - format: int64 + description: The port that will be exposed by this service. + format: int32 + maximum: 65535 + minimum: 1 type: integer protocol: - default: HTTP + default: TCP + description: |- + The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". + Default is TCP. enum: - - HTTP - - HTTPS - - TCP - type: string - timeoutInSeconds: - format: int64 - maximum: 10 - minimum: 5 - type: integer - toleratedNumberOfFailures: - default: 3 - format: int64 - maximum: 9 - minimum: 0 - type: integer + - TCP + - UDP + - SCTP + type: string + targetPort: + anyOf: + - type: integer + - type: string + description: The port to access on the pods targeted by the + service. + x-kubernetes-int-or-string: true + required: + - port type: object - x-kubernetes-validations: - - message: timeoutInSeconds must be between 5 and 10 when intervalInSeconds - is 30 - rule: 'has(self.intervalInSeconds) && self.intervalInSeconds == - 30 ? (!has(self.timeoutInSeconds) || (self.timeoutInSeconds >= - 5 && self.timeoutInSeconds <= 10)) : true' - - message: timeoutInSeconds must be between 5 and 9 when intervalInSeconds - is 10 - rule: 'has(self.intervalInSeconds) && self.intervalInSeconds == - 10 ? (!has(self.timeoutInSeconds) || (self.timeoutInSeconds >= - 5 && self.timeoutInSeconds <= 9)) : true' - resourceGroup: - type: string - x-kubernetes-validations: - - message: resourceGroup is immutable - rule: self == oldSelf - required: - - resourceGroup - type: object - status: - properties: - conditions: - items: + type: array + 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. + properties: + clientIP: + description: clientIP contains the configurations of Client IP + based session affinity. properties: - lastTransitionTime: - format: date-time - type: string - message: - maxLength: 32768 - type: string - observedGeneration: - format: int64 - minimum: 0 + 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). + format: int32 type: integer - reason: - maxLength: 1024 - minLength: 1 - pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ - type: string - status: - enum: - - "True" - - "False" - - Unknown - type: string - type: - 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 - required: - - lastTransitionTime - - message - - reason - - status - - type type: object - type: array - x-kubernetes-list-map-keys: - - type - x-kubernetes-list-type: map - dnsName: - type: string - resourceID: - type: string - type: object - required: - - spec - type: object - x-kubernetes-validations: - - message: metadata.name max length is 63 - rule: size(self.metadata.name) < 64 - served: true - storage: true - subresources: - status: {} + type: object + type: + description: |- + type defines the type of this service. + Must be ClusterSetIP or Headless. + enum: + - ClusterSetIP + - Headless + type: string + type: object + type: object + x-kubernetes-validations: + - message: metadata.name max length is 63 + rule: size(self.metadata.name) < 64 + served: true + storage: true + subresources: + status: {}