apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    api-approved.openshift.io: https://github.com/openshift/api/pull/764
    description: Extension for configuring openshift web console plugins.
    displayName: ConsolePlugin
    include.release.openshift.io/self-managed-high-availability: "true"
  name: consoleplugins.console.openshift.io
spec:
  group: console.openshift.io
  names:
    kind: ConsolePlugin
    listKind: ConsolePluginList
    plural: consoleplugins
    singular: consoleplugin
  scope: Cluster
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ConsolePlugin is an extension for customizing OpenShift web console
          by dynamically loading code from another service running on the cluster.
        type: object
        required:
        - metadata
        - spec
        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: ConsolePluginSpec is the desired plugin configuration.
            type: object
            required:
            - displayName
            - service
            properties:
              displayName:
                description: displayName is the display name of the plugin.
                type: string
              service:
                description: service is a Kubernetes Service that exposes the plugin
                  using a deployment with an HTTP server. The Service must use HTTPS
                  and service serving certificate. The console backend will proxy
                  the plugins assets from the Service using the service CA bundle.
                type: object
                required:
                - basePath
                - name
                - namespace
                - port
                properties:
                  basePath:
                    description: basePath is the path to the plugin's assets. The
                      primary asset it the manifest file called `plugin-manifest.json`,
                      which is a JSON document that contains metadata about the plugin
                      and the extensions.
                    type: string
                  name:
                    description: name of Service that is serving the plugin.
                    type: string
                  namespace:
                    description: namespace of Service that is serving the plugin.
                    type: string
                  port:
                    description: port on which the Service that is serving the plugin
                      is listening to.
                    type: integer
                    format: int32
    served: true
    storage: true
