# 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: []
