第 6 章 ConsolePlugin [console.openshift.io/v1]
- 描述
consolePlugin 是一个扩展,可通过从集群中运行的另一个服务动态加载代码来自定义 OpenShift Web 控制台。
兼容性级别 1:在主发行版本中至少提供 12 个月或 3 个次版本(以更长的时间为准)。
- 类型
-
object
- 必填
-
metadata
-
spec
-
6.1. 规格 复制链接链接已复制到粘贴板!
属性 | 类型 | 描述 |
---|---|---|
|
| APIVersion 定义对象的这个表示法的版本化的 schema。服务器应该将识别的模式转换为最新的内部值,并可拒绝未识别的值。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
|
| kind 是一个字符串值,代表此对象所代表的 REST 资源。服务器可以从客户端向其提交请求的端点推断。无法更新。采用驼峰拼写法 (CamelCase)。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
| 标准对象元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
|
| spec 包含 console 插件所需的配置。 |
6.1.1. .spec 复制链接链接已复制到粘贴板!
- 描述
- spec 包含 console 插件所需的配置。
- 类型
-
object
- 必填
-
后端
-
displayName
-
属性 | 类型 | 描述 |
---|---|---|
|
| backend 包含提供控制台插件的后端配置。 |
|
| contentSecurityPolicy 是插件的 Content-Security-Policy (CSP)指令列表。每个指令指定了一个适合给定指令类型的值列表,例如用于 fetch 指令的远程端点列表,如 ScriptSrc。控制台 Web 应用程序使用 CSP 来检测和缓解某些类型的攻击,如跨站点脚本(XSS)和数据注入攻击。如果需要从集群外部加载资产或者是否观察到违反报告,则动态插件应指定此字段。动态插件应始终首选在集群中加载其资产,无论是供应商,还是从集群服务中获取。在 OpenShift Web 控制台中,可以在浏览器的控制台日志中查看 CSP 违反报告。可用的指令类型有 DefaultSrc, ScriptSrc, StyleSrc, ImgSrc, FontSrc 和 ConnectSrc。每个可用的指令只能在列表中定义一次。OpenShift Web 控制台的后端,值"self"自动包含在所有获取指令中。有关 CSP 指令的详情,请参考: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
OpenShift Web 控制台服务器在自己的默认值和所有启用的 ConsolePlugin CR 中聚合了 CSP 指令和值,将它们合并到通过 示例:ConsolePlugin A 指令:script-src: https://script1.com/, https://script2.com/ font-src: https://font1.com/ consolePlugin B 指令: script-src: https://script2.com/, https://script3.com/ font-src: https://font2.com/ img-src: https://img1.com/ 传递给 OpenShift Web 控制台服务器的统一 CSP 指令集: script-src: https://script1.com/, https://script2.com/, https://script3.com/ font-src: https://font1.com/, https://font2.com/ img-src: https://img1.com/ OpenShift Web 控制台服务器 CSP 响应标头: Content-Security-Policy: default-src 'self'; base-uri 'self'; script-src 'self' https://script1.com/ https://script3.com/ ; font-src 'self' https://font1.com/ https://font2.com/; img-src 'self' https://img1.com/; style-src 'self'; frame-src 'none'; object-src 'none' |
|
| ConsolePluginCSP 包含特定 CSP 指令的配置 |
|
| displayName 是插件的显示名称。dispalyName 应该介于 1 到 128 个字符之间。 |
|
| i18n 是插件本地化资源的配置。 |
|
| proxy 是代理列表,用于描述插件需要连接到的各种服务类型。 |
|
| ConsolePluginProxy 包含有关控制台后端将代理插件请求的各种服务类型的信息。 |
6.1.2. .spec.backend 复制链接链接已复制到粘贴板!
- 描述
- backend 包含提供控制台插件的后端配置。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| 服务是一个 Kubernetes 服务,它使用带有 HTTP 服务器的部署来公开插件。服务必须使用 HTTPS 和服务服务证书。控制台后端将使用服务 CA 捆绑包代理来自服务的插件资产。 |
|
| type 是服务器控制台插件的后端类型。目前只支持 "Service"。 |
6.1.3. .spec.backend.service 复制链接链接已复制到粘贴板!
- 描述
- 服务是一个 Kubernetes 服务,它使用带有 HTTP 服务器的部署来公开插件。服务必须使用 HTTPS 和服务服务证书。控制台后端将使用服务 CA 捆绑包代理来自服务的插件资产。
- 类型
-
object
- 必填
-
name
-
namespace
-
port
-
属性 | 类型 | 描述 |
---|---|---|
|
|
basePath 是插件资产的路径。主要资产是名为 |
|
| 为插件资产提供服务的 Service 名称。 |
|
| 为插件资产提供服务的命名空间。 |
|
| 为插件侦听的服务的端口。 |
6.1.4. .spec.contentSecurityPolicy 复制链接链接已复制到粘贴板!
- 描述
contentSecurityPolicy 是插件的 Content-Security-Policy (CSP)指令列表。每个指令指定了一个适合给定指令类型的值列表,例如用于 fetch 指令的远程端点列表,如 ScriptSrc。控制台 Web 应用程序使用 CSP 来检测和缓解某些类型的攻击,如跨站点脚本(XSS)和数据注入攻击。如果需要从集群外部加载资产或者是否观察到违反报告,则动态插件应指定此字段。动态插件应始终首选在集群中加载其资产,无论是供应商,还是从集群服务中获取。在 OpenShift Web 控制台中,可以在浏览器的控制台日志中查看 CSP 违反报告。可用的指令类型有 DefaultSrc, ScriptSrc, StyleSrc, ImgSrc, FontSrc 和 ConnectSrc。每个可用的指令只能在列表中定义一次。OpenShift Web 控制台的后端,值"self"自动包含在所有获取指令中。有关 CSP 指令的详情,请参考: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
OpenShift Web 控制台服务器在自己的默认值和所有启用的 ConsolePlugin CR 中聚合了 CSP 指令和值,将它们合并到通过
Content-Security-Policy
HTTP 响应标头发送到浏览器的单个策略字符串中。示例:ConsolePlugin A 指令:script-src: https://script1.com/, https://script2.com/ font-src: https://font1.com/
ConsolePlugin B directives: script-src: https://script2.com/, https://script3.com/ font-src: https://font2.com/ img-src: https://img1.com/
ConsolePlugin B directives: script-src: https://script2.com/, https://script3.com/ font-src: https://font2.com/ img-src: https://img1.com/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Unified set of CSP directives, passed to the OpenShift web console server: script-src: https://script1.com/, https://script2.com/, https://script3.com/ font-src: https://font1.com/, https://font2.com/ img-src: https://img1.com/
Unified set of CSP directives, passed to the OpenShift web console server: script-src: https://script1.com/, https://script2.com/, https://script3.com/ font-src: https://font1.com/, https://font2.com/ img-src: https://img1.com/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift web console server CSP response header: Content-Security-Policy: default-src 'self'; base-uri 'self'; script-src 'self' https://script1.com/ https://script2.com/ https://script3.com/; font-src 'self' https://font1.com/ https://font2.com/; img-src 'self' https://img1.com/; style-src 'self'; frame-src 'none'; object-src 'none'
OpenShift web console server CSP response header: Content-Security-Policy: default-src 'self'; base-uri 'self'; script-src 'self' https://script1.com/ https://script2.com/ https://script3.com/; font-src 'self' https://font1.com/ https://font2.com/; img-src 'self' https://img1.com/; style-src 'self'; frame-src 'none'; object-src 'none'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 类型
-
数组
6.1.5. .spec.contentSecurityPolicy[] 复制链接链接已复制到粘贴板!
- 描述
- ConsolePluginCSP 包含特定 CSP 指令的配置
- 类型
-
object
- 必填
-
指令
-
values
-
属性 | 类型 | 描述 |
---|---|---|
|
| 指令指定要配置哪些 Content-Security-Policy 指令。可用的指令类型有 DefaultSrc, ScriptSrc, StyleSrc, ImgSrc, FontSrc 和 ConnectSrc。DefaultSrc 指令充当其他 CSP fetch 指令的回退。有关 DefaultSrc 指令的更多信息,请参阅: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/default-src ScriptSrc 指令为 JavaScript 指定有效源。有关 ScriptSrc 指令的更多信息,请参阅: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src StyleSrc 指令为风格表指定有效的源。有关 StyleSrc 指令的更多信息,请参阅: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src ImgSrc 指令指定镜像和 favicons 的有效源。有关 ImgSrc 指令的更多信息,请参阅 :https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/img-src FontSrc 指令指定使用 @font-face 加载的字体的有效源。有关 FontSrc 指令的更多信息,请参阅 :https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/font-src ConnectSrc 指令限制可以使用脚本接口载入的 URL。有关 ConnectSrc 指令的详情,请参考: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src |
|
| 值定义要附加到此指令的控制台默认值的一组值。每个 ConsolePlugin 都可以使用它们的值定义自己的指令。它们由 OpenShift Web 控制台的后端设置,作为其 Content-Security-Policy 标头的一部分。阵列最多可包含 16 个值。每个指令值必须最大长度为 1024 个字符,且不得包含空格、逗号(,)、分号(;)或单引号(')。不允许值 '*'。数组中的每个值都必须是唯一的。 |
6.1.6. .spec.i18n 复制链接链接已复制到粘贴板!
- 描述
- i18n 是插件本地化资源的配置。
- 类型
-
object
- 必填
-
loadType
-
属性 | 类型 | 描述 |
---|---|---|
|
| loadType 表示插件的本地化资源应如何加载。有效值为 Preload、Lazy 和空字符串。当设置为 Preload 时,加载插件时会获取所有本地化资源。当设置为 Lazy 时,本地化资源会因为控制台需要时被加载。当省略或设置为空字符串时,行为等同于 Lazy 类型。 |
6.1.7. .spec.proxy 复制链接链接已复制到粘贴板!
- 描述
- proxy 是代理列表,用于描述插件需要连接到的各种服务类型。
- 类型
-
数组
6.1.8. .spec.proxy[] 复制链接链接已复制到粘贴板!
- 描述
- ConsolePluginProxy 包含有关控制台后端将代理插件请求的各种服务类型的信息。
- 类型
-
object
- 必填
-
alias
-
端点
-
属性 | 类型 | 描述 |
---|---|---|
|
| alias 是用于标识插件代理的代理名称。每个插件应具有唯一的别名名称。控制台后端公开以下代理端点: /api/proxy/plugin/<plugin-name>/<proxy-alias>/<request-path>?<optional-query-parameters> 请求示例路径: /api/proxy/plugin/acm/search/pods?namespace=openshift-apiserver |
|
| 授权提供有关代理请求应包含授权类型的信息 |
|
| caCertificate 提供证书颁发机构证书内容,以防代理服务使用自定义服务 CA。默认情况下使用 service-ca 操作器提供的服务 CA 捆绑包。 |
|
| 端点提供有关请求代理的端点的信息。 |
6.1.9. .spec.proxy[].endpoint 复制链接链接已复制到粘贴板!
- 描述
- 端点提供有关请求代理的端点的信息。
- 类型
-
object
- 必填
-
type
-
属性 | 类型 | 描述 |
---|---|---|
|
| Service 是一个插件将连接到的集群内服务。服务必须使用 HTTPS。控制台后端公开端点,以便代理插件和服务之间的通信。注意:现在需要 service 字段,因为目前只支持 "Service" 类型。 |
|
| type 是控制台插件的代理的类型。目前只支持 "Service"。 |
6.1.10. .spec.proxy[].endpoint.service 复制链接链接已复制到粘贴板!
- 描述
- Service 是一个插件将连接到的集群内服务。服务必须使用 HTTPS。控制台后端公开端点,以便代理插件和服务之间的通信。注意:现在需要 service 字段,因为目前只支持 "Service" 类型。
- 类型
-
object
- 必填
-
name
-
namespace
-
port
-
属性 | 类型 | 描述 |
---|---|---|
|
| 插件需要连接的服务名称。 |
|
| 插件需要连接的 Service 的命名空间 |
|
| 插件需要连接的服务的端口。 |