apiVersion: template.openshift.io/v1 kind: Template metadata: name: console-plugin-template annotations: openshift.io/display-name: OpenShift Console Plugin Template openshift.io/documentation-url: "https://github.com/spadgett/console-plugin-template" description: >- nginx HTTP server for an OpenShift console plugin creating using the template at https://github.com/spadgett/console-plugin-template iconClass: icon-nginx tags: openshift,console,plugin,nginx parameters: - description: Name of your plugin. This name must match the name in the consolePlugin declaration in package.json. name: PLUGIN_NAME value: console-plugin-template required: true - description: Namespace for your plugin. The namespace will be created by the template. name: NAMESPACE value: console-plugin-template required: true - description: Container image of the plugin. name: IMAGE value: quay.io/spadgett/console-plugin-template:latest required: true message: >- To enable the plugin on the cluster, run the following command: oc patch consoles.operator.openshift.io cluster --patch '{ "spec": { "plugins": ["${PLUGIN_NAME}"] } }' --type=merge For more information about using this template, see https://github.com/spadgett/console-plugin-template objects: - apiVersion: v1 kind: Namespace metadata: name: '${NAMESPACE}' - apiVersion: apps/v1 kind: Deployment metadata: name: '${PLUGIN_NAME}' namespace: '${NAMESPACE}' labels: app: '${PLUGIN_NAME}' app.kubernetes.io/component: '${PLUGIN_NAME}' app.kubernetes.io/instance: '${PLUGIN_NAME}' app.kubernetes.io/part-of: '${PLUGIN_NAME}' app.openshift.io/runtime-namespace: '${NAMESPACE}' spec: replicas: 1 selector: matchLabels: app: '${PLUGIN_NAME}' template: metadata: labels: app: '${PLUGIN_NAME}' spec: containers: - name: '${PLUGIN_NAME}' image: '${IMAGE}' ports: - containerPort: 9443 protocol: TCP imagePullPolicy: Always volumeMounts: - name: plugin-serving-cert readOnly: true mountPath: /var/serving-cert - name: nginx-conf readOnly: true mountPath: /etc/nginx/nginx.conf subPath: nginx.conf volumes: - name: plugin-serving-cert secret: secretName: plugin-serving-cert defaultMode: 420 - name: nginx-conf configMap: name: nginx-conf defaultMode: 420 restartPolicy: Always dnsPolicy: ClusterFirst strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 25% - apiVersion: v1 kind: ConfigMap metadata: name: nginx-conf namespace: '${NAMESPACE}' labels: app: '${PLUGIN_NAME}' app.kubernetes.io/part-of: '${PLUGIN_NAME}' data: nginx.conf: | error_log /dev/stdout info; events {} http { access_log /dev/stdout; include /etc/nginx/mime.types; default_type application/octet-stream; keepalive_timeout 65; server { listen 9443 ssl; ssl_certificate /var/serving-cert/tls.crt; ssl_certificate_key /var/serving-cert/tls.key; root /usr/share/nginx/html; } } - apiVersion: v1 kind: Service metadata: annotations: service.alpha.openshift.io/serving-cert-secret-name: plugin-serving-cert name: '${PLUGIN_NAME}' namespace: '${NAMESPACE}' labels: app: '${PLUGIN_NAME}' app.kubernetes.io/component: '${PLUGIN_NAME}' app.kubernetes.io/instance: '${PLUGIN_NAME}' app.kubernetes.io/part-of: '${PLUGIN_NAME}' spec: ports: - name: 9443-tcp protocol: TCP port: 9443 targetPort: 9443 selector: app: '${PLUGIN_NAME}' type: ClusterIP sessionAffinity: None - apiVersion: console.openshift.io/v1alpha1 kind: ConsolePlugin metadata: name: '${PLUGIN_NAME}' spec: displayName: 'Console Plugin Template' service: name: '${PLUGIN_NAME}' namespace: '${NAMESPACE}' port: 9443 basePath: '/'