...

Text file src/github.com/openshift/api/operator/v1/0000_70_dns-operator_00.crd.yaml

Documentation: github.com/openshift/api/operator/v1

     1apiVersion: apiextensions.k8s.io/v1
     2kind: CustomResourceDefinition
     3metadata:
     4  annotations:
     5    api-approved.openshift.io: https://github.com/openshift/api/pull/475
     6    include.release.openshift.io/ibm-cloud-managed: "true"
     7    include.release.openshift.io/self-managed-high-availability: "true"
     8    include.release.openshift.io/single-node-developer: "true"
     9  name: dnses.operator.openshift.io
    10spec:
    11  group: operator.openshift.io
    12  names:
    13    kind: DNS
    14    listKind: DNSList
    15    plural: dnses
    16    singular: dns
    17  scope: Cluster
    18  versions:
    19    - name: v1
    20      schema:
    21        openAPIV3Schema:
    22          description: "DNS manages the CoreDNS component to provide a name resolution service for pods and services in the cluster. \n This supports the DNS-based service discovery specification: https://github.com/kubernetes/dns/blob/master/docs/specification.md \n More details: https://kubernetes.io/docs/tasks/administer-cluster/coredns \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer)."
    23          properties:
    24            apiVersion:
    25              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'
    26              type: string
    27            kind:
    28              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'
    29              type: string
    30            metadata:
    31              type: object
    32            spec:
    33              description: spec is the specification of the desired behavior of the DNS.
    34              properties:
    35                cache:
    36                  description: 'cache describes the caching configuration that applies to all server blocks listed in the Corefile. This field allows a cluster admin to optionally configure: * positiveTTL which is a duration for which positive responses should be cached. * negativeTTL which is a duration for which negative responses should be cached. If this is not configured, OpenShift will configure positive and negative caching with a default value that is subject to change. At the time of writing, the default positiveTTL is 900 seconds and the default negativeTTL is 30 seconds or as noted in the respective Corefile for your version of OpenShift.'
    37                  properties:
    38                    negativeTTL:
    39                      description: "negativeTTL is optional and specifies the amount of time that a negative response should be cached. \n If configured, it must be a value of 1s (1 second) or greater up to a theoretical maximum of several years. This field expects an unsigned duration string of decimal numbers, each with optional fraction and a unit suffix, e.g. \"100s\", \"1m30s\", \"12h30m10s\". Values that are fractions of a second are rounded down to the nearest second. If the configured value is less than 1s, the default value will be used. If not configured, the value will be 0s and OpenShift will use a default value of 30 seconds unless noted otherwise in the respective Corefile for your version of OpenShift. The default value of 30 seconds is subject to change."
    40                      pattern: ^(0|([0-9]+(\.[0-9]+)?(ns|us|µs|μs|ms|s|m|h))+)$
    41                      type: string
    42                    positiveTTL:
    43                      description: "positiveTTL is optional and specifies the amount of time that a positive response should be cached. \n If configured, it must be a value of 1s (1 second) or greater up to a theoretical maximum of several years. This field expects an unsigned duration string of decimal numbers, each with optional fraction and a unit suffix, e.g. \"100s\", \"1m30s\", \"12h30m10s\". Values that are fractions of a second are rounded down to the nearest second. If the configured value is less than 1s, the default value will be used. If not configured, the value will be 0s and OpenShift will use a default value of 900 seconds unless noted otherwise in the respective Corefile for your version of OpenShift. The default value of 900 seconds is subject to change."
    44                      pattern: ^(0|([0-9]+(\.[0-9]+)?(ns|us|µs|μs|ms|s|m|h))+)$
    45                      type: string
    46                  type: object
    47                logLevel:
    48                  default: Normal
    49                  description: 'logLevel describes the desired logging verbosity for CoreDNS. Any one of the following values may be specified: * Normal logs errors from upstream resolvers. * Debug logs errors, NXDOMAIN responses, and NODATA responses. * Trace logs errors and all responses. Setting logLevel: Trace will produce extremely verbose logs. Valid values are: "Normal", "Debug", "Trace". Defaults to "Normal".'
    50                  enum:
    51                    - Normal
    52                    - Debug
    53                    - Trace
    54                  type: string
    55                managementState:
    56                  description: managementState indicates whether the DNS operator should manage cluster DNS
    57                  pattern: ^(Managed|Unmanaged|Force|Removed)$
    58                  type: string
    59                nodePlacement:
    60                  description: "nodePlacement provides explicit control over the scheduling of DNS pods. \n Generally, it is useful to run a DNS pod on every node so that DNS queries are always handled by a local DNS pod instead of going over the network to a DNS pod on another node.  However, security policies may require restricting the placement of DNS pods to specific nodes. For example, if a security policy prohibits pods on arbitrary nodes from communicating with the API, a node selector can be specified to restrict DNS pods to nodes that are permitted to communicate with the API.  Conversely, if running DNS pods on nodes with a particular taint is desired, a toleration can be specified for that taint. \n If unset, defaults are used. See nodePlacement for more details."
    61                  properties:
    62                    nodeSelector:
    63                      additionalProperties:
    64                        type: string
    65                      description: "nodeSelector is the node selector applied to DNS pods. \n If empty, the default is used, which is currently the following: \n kubernetes.io/os: linux \n This default is subject to change. \n If set, the specified selector is used and replaces the default."
    66                      type: object
    67                    tolerations:
    68                      description: "tolerations is a list of tolerations applied to DNS pods. \n If empty, the DNS operator sets a toleration for the \"node-role.kubernetes.io/master\" taint.  This default is subject to change.  Specifying tolerations without including a toleration for the \"node-role.kubernetes.io/master\" taint may be risky as it could lead to an outage if all worker nodes become unavailable. \n Note that the daemon controller adds some tolerations as well.  See https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/"
    69                      items:
    70                        description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
    71                        properties:
    72                          effect:
    73                            description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
    74                            type: string
    75                          key:
    76                            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.
    77                            type: string
    78                          operator:
    79                            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.
    80                            type: string
    81                          tolerationSeconds:
    82                            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.
    83                            format: int64
    84                            type: integer
    85                          value:
    86                            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.
    87                            type: string
    88                        type: object
    89                      type: array
    90                  type: object
    91                operatorLogLevel:
    92                  default: Normal
    93                  description: 'operatorLogLevel controls the logging level of the DNS Operator. Valid values are: "Normal", "Debug", "Trace". Defaults to "Normal". setting operatorLogLevel: Trace will produce extremely verbose logs.'
    94                  enum:
    95                    - Normal
    96                    - Debug
    97                    - Trace
    98                  type: string
    99                servers:
   100                  description: "servers is a list of DNS resolvers that provide name query delegation for one or more subdomains outside the scope of the cluster domain. If servers consists of more than one Server, longest suffix match will be used to determine the Server. \n For example, if there are two Servers, one for \"foo.com\" and another for \"a.foo.com\", and the name query is for \"www.a.foo.com\", it will be routed to the Server with Zone \"a.foo.com\". \n If this field is nil, no servers are created."
   101                  items:
   102                    description: Server defines the schema for a server that runs per instance of CoreDNS.
   103                    properties:
   104                      forwardPlugin:
   105                        description: forwardPlugin defines a schema for configuring CoreDNS to proxy DNS messages to upstream resolvers.
   106                        properties:
   107                          policy:
   108                            default: Random
   109                            description: "policy is used to determine the order in which upstream servers are selected for querying. Any one of the following values may be specified: \n * \"Random\" picks a random upstream server for each query. * \"RoundRobin\" picks upstream servers in a round-robin order, moving to the next server for each new query. * \"Sequential\" tries querying upstream servers in a sequential order until one responds, starting with the first server for each new query. \n The default value is \"Random\""
   110                            enum:
   111                              - Random
   112                              - RoundRobin
   113                              - Sequential
   114                            type: string
   115                          transportConfig:
   116                            description: "transportConfig is used to configure the transport type, server name, and optional custom CA or CA bundle to use when forwarding DNS requests to an upstream resolver. \n The default value is \"\" (empty) which results in a standard cleartext connection being used when forwarding DNS requests to an upstream resolver."
   117                            properties:
   118                              tls:
   119                                description: tls contains the additional configuration options to use when Transport is set to "TLS".
   120                                properties:
   121                                  caBundle:
   122                                    description: "caBundle references a ConfigMap that must contain either a single CA Certificate or a CA Bundle. This allows cluster administrators to provide their own CA or CA bundle for validating the certificate of upstream resolvers. \n 1. The configmap must contain a `ca-bundle.crt` key. 2. The value must be a PEM encoded CA certificate or CA bundle. 3. The administrator must create this configmap in the openshift-config namespace. 4. The upstream server certificate must contain a Subject Alternative Name (SAN) that matches ServerName."
   123                                    properties:
   124                                      name:
   125                                        description: name is the metadata.name of the referenced config map
   126                                        type: string
   127                                    required:
   128                                      - name
   129                                    type: object
   130                                  serverName:
   131                                    description: serverName is the upstream server to connect to when forwarding DNS queries. This is required when Transport is set to "TLS". ServerName will be validated against the DNS naming conventions in RFC 1123 and should match the TLS certificate installed in the upstream resolver(s).
   132                                    maxLength: 253
   133                                    pattern: ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$
   134                                    type: string
   135                                required:
   136                                  - serverName
   137                                type: object
   138                              transport:
   139                                description: "transport allows cluster administrators to opt-in to using a DNS-over-TLS connection between cluster DNS and an upstream resolver(s). Configuring TLS as the transport at this level without configuring a CABundle will result in the system certificates being used to verify the serving certificate of the upstream resolver(s). \n Possible values: \"\" (empty) - This means no explicit choice has been made and the platform chooses the default which is subject to change over time. The current default is \"Cleartext\". \"Cleartext\" - Cluster admin specified cleartext option. This results in the same functionality as an empty value but may be useful when a cluster admin wants to be more explicit about the transport, or wants to switch from \"TLS\" to \"Cleartext\" explicitly. \"TLS\" - This indicates that DNS queries should be sent over a TLS connection. If Transport is set to TLS, you MUST also set ServerName. If a port is not included with the upstream IP, port 853 will be tried by default per RFC 7858 section 3.1; https://datatracker.ietf.org/doc/html/rfc7858#section-3.1."
   140                                enum:
   141                                  - TLS
   142                                  - Cleartext
   143                                  - ""
   144                                type: string
   145                            type: object
   146                          upstreams:
   147                            description: "upstreams is a list of resolvers to forward name queries for subdomains of Zones. Each instance of CoreDNS performs health checking of Upstreams. When a healthy upstream returns an error during the exchange, another resolver is tried from Upstreams. The Upstreams are selected in the order specified in Policy. Each upstream is represented by an IP address or IP:port if the upstream listens on a port other than 53. \n A maximum of 15 upstreams is allowed per ForwardPlugin."
   148                            items:
   149                              type: string
   150                            maxItems: 15
   151                            type: array
   152                        type: object
   153                      name:
   154                        description: name is required and specifies a unique name for the server. Name must comply with the Service Name Syntax of rfc6335.
   155                        type: string
   156                      zones:
   157                        description: zones is required and specifies the subdomains that Server is authoritative for. Zones must conform to the rfc1123 definition of a subdomain. Specifying the cluster domain (i.e., "cluster.local") is invalid.
   158                        items:
   159                          type: string
   160                        type: array
   161                    type: object
   162                  type: array
   163                upstreamResolvers:
   164                  default: {}
   165                  description: "upstreamResolvers defines a schema for configuring CoreDNS to proxy DNS messages to upstream resolvers for the case of the default (\".\") server \n If this field is not specified, the upstream used will default to /etc/resolv.conf, with policy \"sequential\""
   166                  properties:
   167                    policy:
   168                      default: Sequential
   169                      description: "Policy is used to determine the order in which upstream servers are selected for querying. Any one of the following values may be specified: \n * \"Random\" picks a random upstream server for each query. * \"RoundRobin\" picks upstream servers in a round-robin order, moving to the next server for each new query. * \"Sequential\" tries querying upstream servers in a sequential order until one responds, starting with the first server for each new query. \n The default value is \"Sequential\""
   170                      enum:
   171                        - Random
   172                        - RoundRobin
   173                        - Sequential
   174                      type: string
   175                    transportConfig:
   176                      description: "transportConfig is used to configure the transport type, server name, and optional custom CA or CA bundle to use when forwarding DNS requests to an upstream resolver. \n The default value is \"\" (empty) which results in a standard cleartext connection being used when forwarding DNS requests to an upstream resolver."
   177                      properties:
   178                        tls:
   179                          description: tls contains the additional configuration options to use when Transport is set to "TLS".
   180                          properties:
   181                            caBundle:
   182                              description: "caBundle references a ConfigMap that must contain either a single CA Certificate or a CA Bundle. This allows cluster administrators to provide their own CA or CA bundle for validating the certificate of upstream resolvers. \n 1. The configmap must contain a `ca-bundle.crt` key. 2. The value must be a PEM encoded CA certificate or CA bundle. 3. The administrator must create this configmap in the openshift-config namespace. 4. The upstream server certificate must contain a Subject Alternative Name (SAN) that matches ServerName."
   183                              properties:
   184                                name:
   185                                  description: name is the metadata.name of the referenced config map
   186                                  type: string
   187                              required:
   188                                - name
   189                              type: object
   190                            serverName:
   191                              description: serverName is the upstream server to connect to when forwarding DNS queries. This is required when Transport is set to "TLS". ServerName will be validated against the DNS naming conventions in RFC 1123 and should match the TLS certificate installed in the upstream resolver(s).
   192                              maxLength: 253
   193                              pattern: ^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]))*$
   194                              type: string
   195                          required:
   196                            - serverName
   197                          type: object
   198                        transport:
   199                          description: "transport allows cluster administrators to opt-in to using a DNS-over-TLS connection between cluster DNS and an upstream resolver(s). Configuring TLS as the transport at this level without configuring a CABundle will result in the system certificates being used to verify the serving certificate of the upstream resolver(s). \n Possible values: \"\" (empty) - This means no explicit choice has been made and the platform chooses the default which is subject to change over time. The current default is \"Cleartext\". \"Cleartext\" - Cluster admin specified cleartext option. This results in the same functionality as an empty value but may be useful when a cluster admin wants to be more explicit about the transport, or wants to switch from \"TLS\" to \"Cleartext\" explicitly. \"TLS\" - This indicates that DNS queries should be sent over a TLS connection. If Transport is set to TLS, you MUST also set ServerName. If a port is not included with the upstream IP, port 853 will be tried by default per RFC 7858 section 3.1; https://datatracker.ietf.org/doc/html/rfc7858#section-3.1."
   200                          enum:
   201                            - TLS
   202                            - Cleartext
   203                            - ""
   204                          type: string
   205                      type: object
   206                    upstreams:
   207                      default:
   208                        - type: SystemResolvConf
   209                      description: "Upstreams is a list of resolvers to forward name queries for the \".\" domain. Each instance of CoreDNS performs health checking of Upstreams. When a healthy upstream returns an error during the exchange, another resolver is tried from Upstreams. The Upstreams are selected in the order specified in Policy. \n A maximum of 15 upstreams is allowed per ForwardPlugin. If no Upstreams are specified, /etc/resolv.conf is used by default"
   210                      items:
   211                        anyOf:
   212                          - not:
   213                              required:
   214                                - address
   215                                - port
   216                            properties:
   217                              type:
   218                                enum:
   219                                  - ""
   220                                  - SystemResolvConf
   221                          - optional:
   222                              - port
   223                            properties:
   224                              type:
   225                                enum:
   226                                  - Network
   227                            required:
   228                              - address
   229                        description: "Upstream can either be of type SystemResolvConf, or of type Network. \n * For an Upstream of type SystemResolvConf, no further fields are necessary: The upstream will be configured to use /etc/resolv.conf. * For an Upstream of type Network, a NetworkResolver field needs to be defined with an IP address or IP:port if the upstream listens on a port other than 53."
   230                        properties:
   231                          address:
   232                            anyOf:
   233                              - format: ipv4
   234                              - format: ipv6
   235                            description: Address must be defined when Type is set to Network. It will be ignored otherwise. It must be a valid ipv4 or ipv6 address.
   236                            type: string
   237                          port:
   238                            default: 53
   239                            description: Port may be defined when Type is set to Network. It will be ignored otherwise. Port must be between 65535
   240                            format: int32
   241                            maximum: 65535
   242                            minimum: 1
   243                            type: integer
   244                          type:
   245                            description: "Type defines whether this upstream contains an IP/IP:port resolver or the local /etc/resolv.conf. Type accepts 2 possible values: SystemResolvConf or Network. \n * When SystemResolvConf is used, the Upstream structure does not require any further fields to be defined: /etc/resolv.conf will be used * When Network is used, the Upstream structure must contain at least an Address"
   246                            enum:
   247                              - SystemResolvConf
   248                              - Network
   249                              - ""
   250                            type: string
   251                        required:
   252                          - type
   253                        type: object
   254                      maxItems: 15
   255                      type: array
   256                  type: object
   257              type: object
   258            status:
   259              description: status is the most recently observed status of the DNS.
   260              properties:
   261                clusterDomain:
   262                  description: "clusterDomain is the local cluster DNS domain suffix for DNS services. This will be a subdomain as defined in RFC 1034, section 3.5: https://tools.ietf.org/html/rfc1034#section-3.5 Example: \"cluster.local\" \n More info: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service"
   263                  type: string
   264                clusterIP:
   265                  description: "clusterIP is the service IP through which this DNS is made available. \n In the case of the default DNS, this will be a well known IP that is used as the default nameserver for pods that are using the default ClusterFirst DNS policy. \n In general, this IP can be specified in a pod's spec.dnsConfig.nameservers list or used explicitly when performing name resolution from within the cluster. Example: dig foo.com @<service IP> \n More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies"
   266                  type: string
   267                conditions:
   268                  description: "conditions provide information about the state of the DNS on the cluster. \n These are the supported DNS conditions: \n * Available - True if the following conditions are met: * DNS controller daemonset is available. - False if any of those conditions are unsatisfied."
   269                  items:
   270                    description: OperatorCondition is just the standard condition fields.
   271                    properties:
   272                      lastTransitionTime:
   273                        format: date-time
   274                        type: string
   275                      message:
   276                        type: string
   277                      reason:
   278                        type: string
   279                      status:
   280                        type: string
   281                      type:
   282                        type: string
   283                    type: object
   284                  type: array
   285              required:
   286                - clusterDomain
   287                - clusterIP
   288              type: object
   289          type: object
   290      served: true
   291      storage: true
   292      subresources:
   293        status: {}

View as plain text