...
1apiVersion: apiextensions.k8s.io/v1
2kind: CustomResourceDefinition
3metadata:
4 annotations:
5 api-approved.openshift.io: https://github.com/openshift/api/pull/764
6 capability.openshift.io/name: Console
7 description: Extension for configuring openshift web console plugins.
8 displayName: ConsolePlugin
9 include.release.openshift.io/ibm-cloud-managed: "true"
10 include.release.openshift.io/self-managed-high-availability: "true"
11 include.release.openshift.io/single-node-developer: "true"
12 service.beta.openshift.io/inject-cabundle: "true"
13 name: consoleplugins.console.openshift.io
14spec:
15 conversion:
16 strategy: Webhook
17 webhook:
18 clientConfig:
19 service:
20 name: webhook
21 namespace: openshift-console-operator
22 path: /crdconvert
23 port: 9443
24 conversionReviewVersions:
25 - v1
26 - v1alpha1
27 group: console.openshift.io
28 names:
29 kind: ConsolePlugin
30 listKind: ConsolePluginList
31 plural: consoleplugins
32 singular: consoleplugin
33 scope: Cluster
34 versions:
35 - name: v1
36 schema:
37 openAPIV3Schema:
38 description: "ConsolePlugin is an extension for customizing OpenShift web console by dynamically loading code from another service running on the cluster. \n Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer)."
39 type: object
40 required:
41 - metadata
42 - spec
43 properties:
44 apiVersion:
45 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'
46 type: string
47 kind:
48 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'
49 type: string
50 metadata:
51 type: object
52 spec:
53 description: ConsolePluginSpec is the desired plugin configuration.
54 type: object
55 required:
56 - backend
57 - displayName
58 properties:
59 backend:
60 description: backend holds the configuration of backend which is serving console's plugin .
61 type: object
62 required:
63 - type
64 properties:
65 service:
66 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.
67 type: object
68 required:
69 - name
70 - namespace
71 - port
72 properties:
73 basePath:
74 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.
75 type: string
76 default: /
77 maxLength: 256
78 minLength: 1
79 pattern: ^[a-zA-Z0-9.\-_~!$&'()*+,;=:@\/]*$
80 name:
81 description: name of Service that is serving the plugin assets.
82 type: string
83 maxLength: 128
84 minLength: 1
85 namespace:
86 description: namespace of Service that is serving the plugin assets.
87 type: string
88 maxLength: 128
89 minLength: 1
90 port:
91 description: port on which the Service that is serving the plugin is listening to.
92 type: integer
93 format: int32
94 maximum: 65535
95 minimum: 1
96 type:
97 description: "type is the backend type which servers the console's plugin. Currently only \"Service\" is supported. \n ---"
98 type: string
99 enum:
100 - Service
101 displayName:
102 description: displayName is the display name of the plugin. The dispalyName should be between 1 and 128 characters.
103 type: string
104 maxLength: 128
105 minLength: 1
106 i18n:
107 description: i18n is the configuration of plugin's localization resources.
108 type: object
109 required:
110 - loadType
111 properties:
112 loadType:
113 description: loadType indicates how the plugin's localization resource should be loaded. Valid values are Preload, Lazy and the empty string. When set to Preload, all localization resources are fetched when the plugin is loaded. When set to Lazy, localization resources are lazily loaded as and when they are required by the console. When omitted or set to the empty string, the behaviour is equivalent to Lazy type.
114 type: string
115 enum:
116 - Preload
117 - Lazy
118 - ""
119 proxy:
120 description: proxy is a list of proxies that describe various service type to which the plugin needs to connect to.
121 type: array
122 items:
123 description: ConsolePluginProxy holds information on various service types to which console's backend will proxy the plugin's requests.
124 type: object
125 required:
126 - alias
127 - endpoint
128 properties:
129 alias:
130 description: "alias is a proxy name that identifies the plugin's proxy. An alias name should be unique per plugin. The console backend exposes following proxy endpoint: \n /api/proxy/plugin/<plugin-name>/<proxy-alias>/<request-path>?<optional-query-parameters> \n Request example path: \n /api/proxy/plugin/acm/search/pods?namespace=openshift-apiserver"
131 type: string
132 maxLength: 128
133 minLength: 1
134 pattern: ^[A-Za-z0-9-_]+$
135 authorization:
136 description: authorization provides information about authorization type, which the proxied request should contain
137 type: string
138 default: None
139 enum:
140 - UserToken
141 - None
142 caCertificate:
143 description: caCertificate provides the cert authority certificate contents, in case the proxied Service is using custom service CA. By default, the service CA bundle provided by the service-ca operator is used.
144 type: string
145 pattern: ^-----BEGIN CERTIFICATE-----([\s\S]*)-----END CERTIFICATE-----\s?$
146 endpoint:
147 description: endpoint provides information about endpoint to which the request is proxied to.
148 type: object
149 required:
150 - type
151 properties:
152 service:
153 description: 'service is an in-cluster Service that the plugin will connect to. The Service must use HTTPS. The console backend exposes an endpoint in order to proxy communication between the plugin and the Service. Note: service field is required for now, since currently only "Service" type is supported.'
154 type: object
155 required:
156 - name
157 - namespace
158 - port
159 properties:
160 name:
161 description: name of Service that the plugin needs to connect to.
162 type: string
163 maxLength: 128
164 minLength: 1
165 namespace:
166 description: namespace of Service that the plugin needs to connect to
167 type: string
168 maxLength: 128
169 minLength: 1
170 port:
171 description: port on which the Service that the plugin needs to connect to is listening on.
172 type: integer
173 format: int32
174 maximum: 65535
175 minimum: 1
176 type:
177 description: "type is the type of the console plugin's proxy. Currently only \"Service\" is supported. \n ---"
178 type: string
179 enum:
180 - Service
181 served: true
182 storage: false
183 - name: v1alpha1
184 schema:
185 openAPIV3Schema:
186 description: "ConsolePlugin is an extension for customizing OpenShift web console by dynamically loading code from another service running on the cluster. \n Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support."
187 type: object
188 required:
189 - metadata
190 - spec
191 properties:
192 apiVersion:
193 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'
194 type: string
195 kind:
196 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'
197 type: string
198 metadata:
199 type: object
200 spec:
201 description: ConsolePluginSpec is the desired plugin configuration.
202 type: object
203 required:
204 - service
205 properties:
206 displayName:
207 description: displayName is the display name of the plugin.
208 type: string
209 minLength: 1
210 proxy:
211 description: proxy is a list of proxies that describe various service type to which the plugin needs to connect to.
212 type: array
213 items:
214 description: ConsolePluginProxy holds information on various service types to which console's backend will proxy the plugin's requests.
215 type: object
216 required:
217 - alias
218 - type
219 properties:
220 alias:
221 description: "alias is a proxy name that identifies the plugin's proxy. An alias name should be unique per plugin. The console backend exposes following proxy endpoint: \n /api/proxy/plugin/<plugin-name>/<proxy-alias>/<request-path>?<optional-query-parameters> \n Request example path: \n /api/proxy/plugin/acm/search/pods?namespace=openshift-apiserver"
222 type: string
223 maxLength: 128
224 minLength: 1
225 pattern: ^[A-Za-z0-9-_]+$
226 authorize:
227 description: "authorize indicates if the proxied request should contain the logged-in user's OpenShift access token in the \"Authorization\" request header. For example: \n Authorization: Bearer sha256~kV46hPnEYhCWFnB85r5NrprAxggzgb6GOeLbgcKNsH0 \n By default the access token is not part of the proxied request."
228 type: boolean
229 default: false
230 caCertificate:
231 description: caCertificate provides the cert authority certificate contents, in case the proxied Service is using custom service CA. By default, the service CA bundle provided by the service-ca operator is used.
232 type: string
233 pattern: ^-----BEGIN CERTIFICATE-----([\s\S]*)-----END CERTIFICATE-----\s?$
234 service:
235 description: 'service is an in-cluster Service that the plugin will connect to. The Service must use HTTPS. The console backend exposes an endpoint in order to proxy communication between the plugin and the Service. Note: service field is required for now, since currently only "Service" type is supported.'
236 type: object
237 required:
238 - name
239 - namespace
240 - port
241 properties:
242 name:
243 description: name of Service that the plugin needs to connect to.
244 type: string
245 maxLength: 128
246 minLength: 1
247 namespace:
248 description: namespace of Service that the plugin needs to connect to
249 type: string
250 maxLength: 128
251 minLength: 1
252 port:
253 description: port on which the Service that the plugin needs to connect to is listening on.
254 type: integer
255 format: int32
256 maximum: 65535
257 minimum: 1
258 type:
259 description: type is the type of the console plugin's proxy. Currently only "Service" is supported.
260 type: string
261 pattern: ^(Service)$
262 service:
263 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.
264 type: object
265 required:
266 - basePath
267 - name
268 - namespace
269 - port
270 properties:
271 basePath:
272 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.
273 type: string
274 default: /
275 minLength: 1
276 pattern: ^/
277 name:
278 description: name of Service that is serving the plugin assets.
279 type: string
280 maxLength: 128
281 minLength: 1
282 namespace:
283 description: namespace of Service that is serving the plugin assets.
284 type: string
285 maxLength: 128
286 minLength: 1
287 port:
288 description: port on which the Service that is serving the plugin is listening to.
289 type: integer
290 format: int32
291 maximum: 65535
292 minimum: 1
293 served: true
294 storage: true
View as plain text