Example custom resource definitions

This page displays example custom resource definitions (CRD) for clusters in Telecom Network Automation.

Example WorkloadCluster CRD

apiVersion: apiextensions.k8s.io/v1  kind: CustomResourceDefinition  metadata:   annotations:   cert-manager.io/inject-ca-from: ${tna-namespace}/workloadcluster-serving-cert controller-gen.kubebuilder.io/version: v0.9.2   name: workloadclusters.infra.tna.cloud.google.com  spec:   conversion:   strategy: Webhook   webhook:   clientConfig:   service:   name: workloadcluster-webhook-service   namespace: ${tna-namespace}   path: /convert   conversionReviewVersions:   - v1   group: infra.tna.cloud.google.com   names:   kind: WorkloadCluster   listKind: WorkloadClusterList   plural: workloadclusters   singular: workloadcluster   scope: Cluster   versions:   - name: v1alpha1   schema:   openAPIV3Schema:   description: WorkloadCluster is the Schema for the workloadclusters  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: WorkloadClusterSpec defines the desired state of WorkloadCluster   properties:   VPC:   type: string   adminUser:   minLength: 1   pattern: ^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$   type: string   clusterIPv4CIDR:   items:   pattern: ^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$   type: string   maxItems: 1   minItems: 1   type: array  controlPlane:   properties:   nodeCount:   description: NodeCount specifies the number of nodes to serve as replicas of the Control Plane.   enum:   - 1   - 3   format: int64   type: integer  sharedDeploymentPolicy:   enum:   - SHARED_DEPLOYMENT_POLICY_UNSPECIFIED   - DISALLOWED   - ALLOWED  type: string   type: object   defaultMaxPodsPerNode:   format: int64   type: integer   externalLoadBalancerIpv4AddressPools:   description: ExternalLoadBalancerIpv4AddressPools specifies address pools for cluster data plane external load balancing.   items:   type: string   type: array   gdceVPNConnectionName:   type: string   labels:   additionalProperties:   type: string   type: object   location:  description: Location is the region ( for example us-central1 ) where the underlying cloud resources are created   minLength: 1   pattern: ^[a-zA-Z0-9-._~%!$&'()*+,;=@]+$   type: string   maintenancePolicy:   description: 'EdgeMaintenancePolicy : Cluster-wide maintenance policy configuration.'   properties:   endTime:   description: 'EndTime: The time that the window ends. The end time must take place after the start time.'   type: string   recurrence:   description: 'Recurrence: A rule (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how this window recurs. They go on for the span of time between the start and end time.'  type: string   startTime:   description: 'StartTime: The time that the window first starts.'   type: string   type: object   natGatewayIP:   type: string   nodePools:   items:   properties:  labels:  additionalProperties:  type: string  description: 'Add validation for labels'  type: object   name:   minLength: 1   pattern: ^[a-zA-Z0-9-._~%!$&'()*+,;=@]+$   type: string   nodeCount:   format: int64   minimum: 1   type: integer   scaleDownGracePeriodSeconds:   description: Number of seconds to wait for the workloads to   get gracefully removed from the nodes selected for removal during scale down. This is useful for critical NF workloads that cannot tolerate disruption during pod re-scheduling done by kubernetes on node removal. The node resources like HugePages, Sriov VFs will be drained after this period and will initiate node removal from the underlying infrastructure.  format: int64   type: integer  scaleDownTimestamp:  description: The timestamp at which the node pool scaledown was initiated.  format: date-time  type: string  required:   - name   - nodeCount   type: object   minItems: 1   type: array   serviceIPv4CIDR:   items:   pattern: ^([0-9]{1,3}\.){3}[0-9]{1,3}(\/([0-9]|[1-2][0-9]|3[0-2]))?$   type: string   maxItems: 1   minItems: 1   type: array  targetVersion:  enum:  - 1.5.0  type: string   type:   enum:   - GKE   - GDCE   type: string   vpnLabels:  additionalProperties:  type: string  type: object  zone:  description: This is the GDCE zone used by the local control plane and all the nodepools.  pattern: -edge  type: string  required:  - clusterIPv4CIDR  - location  - nodePools  - serviceIPv4CIDR  - type  type: object  status:  description: WorkloadClusterStatus defines the observed state of WorkloadCluster  properties:  conditions:  description: Conditions describes the reconciliation state of the object.  items:  description: "Condition contains details for one aspect of the   current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, \n type ExampleStatus struct{ // Represents the observations of the ExampleStatus current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" //   +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\"   patchStrategy:\"merge\" patchMergeKey:\"type\"   protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"   properties:  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  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  reason:  description: reason contains a programmatic identifier  indicating the reason for the last transition of the condition. 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   type:   description: type of condition in CamelCase or in   test.example.com/CamelCase. --- Many .condition.type values are consistent across   resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. 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  required:  - lastTransitionTime  - message  - reason  - status  - type  type: object  type: array  endpoint:  description: Endpoint is the IP address of the Kubernetes API server.  type: string  observedGeneration:  format: int64  type: integer  ownedResources:  items:  properties:  group:  type: string  kind:  type: string  message:  type: string  name:  type: string  namespace:  type: string  reason:  type: string  status:  type: string  version:  type: string  required:  - group  - kind  - message  - name  - namespace  - reason  - status  - version  type: object  type: array  required:   - observedGeneration   type: object    type: object   served: true   storage: true   subresources:   status: {}