7.3. 在集群中部署插件


您可以将插件部署到 OpenShift Container Platform 集群。

7.3.1. 使用 Docker 构建镜像

要在集群中部署插件,您需要构建镜像并首先将其推送到镜像 registry。

流程

  1. 使用以下命令构建镜像:

    $ docker build -t quay.io/my-repositroy/my-plugin:latest .
  2. 可选:如果要测试您的镜像,请运行以下命令:

    $ docker run -it --rm -d -p 9001:80 quay.io/my-repository/my-plugin:latest
  3. 运行以下命令推送镜像:

    $ docker push quay.io/my-repository/my-plugin:latest

7.3.2. 在集群中部署插件

在将镜像推送到 registry 后,您可以使用 Helm Chart 将插件部署到集群中。

先决条件

  • 您必须具有包含之前推送的插件的镜像位置。

    注意

    您可以根据插件的需求指定附加参数。values.yaml 文件提供了一组完整的 suported 参数。

流程

  1. 要将插件部署到集群中,请使用插件名称作为 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 安全性相关的配置。

  2. 可选: 您可以使用 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"。

对于每个条目,您必须分别在 endpointalias 字段中指定代理的端点和别名。对于 Service 代理类型,您必须将端点 type 字段设置为 Serviceservice 必须包含 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

1
代理的别名。
2
如果服务代理请求必须包含登录用户的 OpenShift Container Platform 访问令牌,您必须将 authorization 字段设置为 UserToken
注意

如果服务代理请求不包含登录用户的 OpenShift Container Platform 访问令牌,请将 authorization 字段设置为 None

3
如果服务使用自定义服务 CA,caCertificate 字段必须包含证书捆绑包。
4
代理的端点。

7.3.4. 在浏览器中禁用您的插件

控制台用户可以使用 disable-plugins 查询参数来禁用通常会在运行时加载的特定或所有动态插件。

流程

  • 要禁用特定的插件,请从以逗号分隔的插件名称列表中删除您要禁用的插件。
  • 要禁用所有插件,请在 disable-plugins 查询参数中有一个空字符串。
注意

集群管理员可以在 web 控制台的 Cluster Settings 页面中禁用插件。

7.3.5. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.