# Licensed to Apache Software Foundation (ASF) under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Apache Software Foundation (ASF) licenses this file to you under
# the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  name: uis.operator.skywalking.apache.org
spec:
  group: operator.skywalking.apache.org
  names:
    kind: UI
    listKind: UIList
    plural: uis
    singular: ui
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The version
      jsonPath: .spec.version
      name: Version
      priority: 1
      type: string
    - description: The number of expected instance
      jsonPath: .spec.instances
      name: Instances
      type: string
    - description: The number of running
      jsonPath: .status.availableReplicas
      name: Running
      type: string
    - description: The address of OAP server
      jsonPath: .status.internalAddress
      name: InternalAddress
      type: string
    - description: The address of OAP server
      jsonPath: .status.externalIPs
      name: ExternalIPs
      type: string
    - description: The address of OAP server
      jsonPath: .status.ports
      name: Ports
      type: string
    - jsonPath: .spec.image
      name: Image
      priority: 1
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: UI is the Schema for the uis 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: UISpec defines the desired state of UI
            properties:
              OAPServerAddress:
                description: Backend OAP server address
                type: string
              image:
                description: Image is the UI Docker image to deploy.
                type: string
              instances:
                description: Count is the number of UI pods
                format: int32
                type: integer
              service:
                description: Service relevant settings
                properties:
                  ingress:
                    description: Ingress defines the behavior of an ingress
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: Annotations is an unstructured key value map
                          stored with a resource that may be set by external tools
                          to store and retrieve arbitrary metadata. They are not queryable
                          and should be preserved when modifying objects.
                        type: object
                      host:
                        description: Host is the fully qualified domain name of a
                          network host, as defined by RFC 3986. Note the following
                          deviations from the "host" part of the URI as defined in
                          RFC 3986
                        type: string
                      ingressClassName:
                        description: IngressClassName is the name of the IngressClass
                          cluster resource. The associated IngressClass defines which
                          controller will implement the resource. This replaces the
                          deprecated `kubernetes.io/ingress.class` annotation. For
                          backwards compatibility, when that annotation is set, it
                          must be given precedence over this field. The controller
                          may emit a warning if the field and annotation have different
                          values. Implementations of this API should ignore Ingresses
                          without a class specified. An IngressClass resource may
                          be marked as default, which can be used to set a default
                          value for this field. For more information, refer to the
                          IngressClass documentation.
                        type: string
                      tls:
                        description: TLS configuration. Currently the Ingress only
                          supports a single TLS port, 443. If multiple members of
                          this list specify different hosts, they will be multiplexed
                          on the same port according to the hostname specified through
                          the SNI TLS extension, if the ingress controller fulfilling
                          the ingress supports SNI.
                        items:
                          description: IngressTLS describes the transport layer security
                            associated with an Ingress.
                          properties:
                            hosts:
                              description: Hosts are a list of hosts included in the
                                TLS certificate. The values in this list must match
                                the name/s used in the tlsSecret. Defaults to the
                                wildcard host setting for the loadbalancer controller
                                fulfilling this Ingress, if left unspecified.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            secretName:
                              description: SecretName is the name of the secret used
                                to terminate TLS traffic on port 443. Field is left
                                optional to allow TLS routing based on SNI hostname
                                alone. If the SNI host in a listener conflicts with
                                the "Host" header field used by an IngressRule, the
                                SNI host is used for termination and value of the
                                Host header is used for routing.
                              type: string
                          type: object
                        type: array
                    type: object
                  template:
                    description: ServiceTemplate defines the behavior of a service.
                    properties:
                      clusterIP:
                        description: clusterIP is the IP address of the service and
                          is usually assigned randomly.
                        type: string
                      externalIPs:
                        description: externalIPs is a list of IP addresses for which
                          nodes in the cluster will also accept traffic for this service.
                        items:
                          type: string
                        type: array
                      loadBalancerIP:
                        description: 'Only applies to Service Type: LoadBalancer LoadBalancer
                          will get created with the IP specified in this field.'
                        type: string
                      loadBalancerSourceRanges:
                        description: If specified and supported by the platform, this
                          will restrict traffic through the cloud-provider load-balancer
                          will be restricted to the specified client IPs.
                        items:
                          type: string
                        type: array
                      type:
                        description: type determines how the Service is exposed.
                        type: string
                    type: object
                type: object
              version:
                description: Version of UI.
                type: string
            required:
            - instances
            - version
            type: object
          status:
            description: UIStatus defines the observed state of UI
            properties:
              availableReplicas:
                description: Total number of available pods (ready for at least minReadySeconds)
                  targeted by this deployment.
                format: int32
                type: integer
              conditions:
                description: Represents the latest available observations of the underlying
                  deployment's current state.
                items:
                  description: DeploymentCondition describes the state of a deployment
                    at a certain point.
                  properties:
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another.
                      format: date-time
                      type: string
                    lastUpdateTime:
                      description: The last time this condition was updated.
                      format: date-time
                      type: string
                    message:
                      description: A human readable message indicating details about
                        the transition.
                      type: string
                    reason:
                      description: The reason for the condition's last transition.
                      type: string
                    status:
                      description: Status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: Type of deployment condition.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
              externalIPs:
                description: externalIPs is a list of IP addresses for which nodes
                  in the cluster will also accept traffic for this service.
                items:
                  type: string
                type: array
              internalAddress:
                type: string
              ports:
                description: Ports that will be exposed by this service.
                items:
                  format: int32
                  type: integer
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
