7.3. 在集群中部署插件
您可以将插件部署到 OpenShift Container Platform 集群。
7.3.1. 使用 Docker 构建镜像
要在集群中部署插件,您需要构建镜像并首先将其推送到镜像 registry。
流程
使用以下命令构建镜像:
$ docker build -t quay.io/my-repositroy/my-plugin:latest .
可选:如果要测试您的镜像,请运行以下命令:
$ docker run -it --rm -d -p 9001:80 quay.io/my-repository/my-plugin:latest
运行以下命令推送镜像:
$ docker push quay.io/my-repository/my-plugin:latest
7.3.2. 在集群中部署插件
在将镜像推送到 registry 后,您可以使用 Helm Chart 将插件部署到集群中。
先决条件
您必须具有包含之前推送的插件的镜像位置。
注意您可以根据插件的需求指定附加参数。
values.yaml
文件提供了一组完整的 suported 参数。
流程
要将插件部署到集群中,请使用插件名称作为 Helm 发行版本名称安装 Helm chart,作为 Helm 发行版本名称,或由
-n
命令行选项指定的现有命名空间。使用以下命令,提供plugin.image
参数中镜像的位置:$ helm upgrade -i my-plugin charts/openshift-console-plugin -n my-plugin-namespace --create-namespace --set plugin.image=my-plugin-image-location
其中:
n <my-plugin-namespace>
- 指定要将插件部署到的现有命名空间。
--create-namespace
- 可选:如果部署到新命名空间,请使用此参数。
--set plugin.image=my-plugin-image-location
-
指定
plugin.image
参数中镜像的位置。
注意如果您要在 OpenShift Container Platform 4.10 及更新的版本中部署,建议通过添加参数
--set plugin.securityContext.enabled=false
来排除与 pod 安全性相关的配置。可选: 您可以使用
charts/openshift-console-plugin/values.yaml
文件中的一组支持的参数来指定任何其他参数。plugin: name: "" description: "" image: "" imagePullPolicy: IfNotPresent replicas: 2 port: 9443 securityContext: enabled: true podSecurityContext: enabled: true runAsNonRoot: true seccompProfile: type: RuntimeDefault containerSecurityContext: enabled: true allowPrivilegeEscalation: false capabilities: drop: - ALL resources: requests: cpu: 10m memory: 50Mi basePath: / certificateSecretName: "" serviceAccount: create: true annotations: {} name: "" patcherServiceAccount: create: true annotations: {} name: "" jobs: patchConsoles: enabled: true image: "registry.redhat.io/openshift4/ose-tools-rhel8@sha256:e44074f21e0cca6464e50cb6ff934747e0bd11162ea01d522433a1a1ae116103" podSecurityContext: enabled: true runAsNonRoot: true seccompProfile: type: RuntimeDefault containerSecurityContext: enabled: true allowPrivilegeEscalation: false capabilities: drop: - ALL resources: requests: cpu: 10m memory: 50Mi
验证
-
从 Administration
Cluster Settings Configuration Console operator.openshift.io
Console plugins 或访问 Overview 页面来查看启用的插件列表。
显示新插件配置可能需要几分钟时间。如果没有看到插件,则在最近启用了插件时,可能需要刷新浏览器。如果您在运行时收到任何错误,请在浏览器开发人员工具中检查 JS 控制台,以查看插件代码中的任何错误。
7.3.3. 插件服务代理
如果您需要从插件向集群服务发出 HTTP 请求,您可以使用 spec.proxy
数组字段在 ConsolePlugin
资源中声明服务代理。控制台后端公开 /api/proxy/plugin/<plugin-name>/<proxy-alias>/<request-path>?<optional-query-parameters>
端点来代理插件和服务之间的通信。代理请求默认使用 服务 CA 捆绑包。服务必须使用 HTTPS。
该插件必须使用 consolefetch
API 从 JavaScript 代码发出请求,或者一些请求可能会失败。如需更多信息,请参阅 "Dynamic plugin API"。
对于每个条目,您必须分别在 endpoint
和 alias
字段中指定代理的端点和别名。对于 Service 代理类型,您必须将端点 type
字段设置为 Service
,service
必须包含 name
, namespace
, 和 port
字段的值。例如,/api/proxy/plugin/helm/helm-charts/releases?limit=10
是代理请求路径,它来自带有一个 helm-charts
服务的 helm
插件,列出 10 个 helm release。
服务代理示例
apiVersion: console.openshift.io/v1 kind: ConsolePlugin metadata: name:<plugin-name> spec: proxy: - alias: helm-charts 1 authorization: UserToken 2 caCertificate: '-----BEGIN CERTIFICATE-----\nMIID....'en 3 endpoint: 4 service: name: <service-name> namespace: <service-namespace> port: <service-port> type: Service
7.3.4. 在浏览器中禁用您的插件
控制台用户可以使用 disable-plugins
查询参数来禁用通常会在运行时加载的特定或所有动态插件。
流程
- 要禁用特定的插件,请从以逗号分隔的插件名称列表中删除您要禁用的插件。
-
要禁用所有插件,请在
disable-plugins
查询参数中有一个空字符串。
集群管理员可以在 web 控制台的 Cluster Settings 页面中禁用插件。