第 6 章 在工作区中使用凭证和配置


您可以在工作区中使用凭证和配置。

要做到这一点,将凭证和配置挂载到您机构 OpenShift Dev Spaces 实例的 OpenShift 集群中的 Dev Workspace 容器中:

  • 将凭证和敏感配置挂载为 Kubernetes Secret
  • 将非敏感配置挂载为 Kubernetes ConfigMap

如果您需要允许集群中的 Dev Workspace Pod 访问需要身份验证的容器 registry,请为 Dev Workspace Pod 创建 镜像拉取 Secret

挂载过程使用标准 Kubernetes 挂载机制,需要对现有资源应用额外的标签和注解。在启动新的工作区或重启现有工作区时,资源会被挂载。

您可以为各种组件创建永久挂载点:

6.1. 挂载 Secret

要将机密数据挂载到工作区中,请使用 Kubernetes Secret。

使用 Kubernetes Secret,您可以挂载用户名、密码、SSH 密钥对、身份验证令牌(如 AWS)和敏感配置。

将 Kubernetes Secret 挂载到您机构 OpenShift Dev Spaces 实例的 OpenShift 集群中的 Dev Workspace 容器。

先决条件

  • 一个活跃的 oc 会话,它具有到目标 OpenShift 集群的管理权限。请参阅开始使用 CLI
  • 在用户项目中,您要创建新的 Secret,或确定要挂载到所有 Dev Workspace 容器的现有 Secret。

流程

  1. 将挂载 Secret 所需的标签添加到 Secret 中。

    $ oc label secret <Secret_name> \
            controller.devfile.io/mount-to-devworkspace=true \
            controller.devfile.io/watch-secret=true
  2. 可选: 使用注解来配置 Secret 的挂载方式。

    表 6.1. 可选注解
    注解描述

    controller.devfile.io/mount-path:

    指定挂载路径。

    默认为 /etc/secret/ <Secret_name>

    controller.devfile.io/mount-as:

    指定如何挂载资源: 文件子路径env

    默认为 文件

    mount-as :文件将 键和值挂载为挂载路径中的文件。

    mount-as: 子路径 使用子路径卷挂载在挂载路径中挂载键和值。

    mount-as: env 将键和值作为环境变量挂载到所有 Dev Workspace 容器中。

例 6.1. 将 Secret 挂载为文件

apiVersion: v1
kind: Secret
metadata:
  name: mvn-settings-secret
  labels:
    controller.devfile.io/mount-to-devworkspace: 'true'
    controller.devfile.io/watch-secret: 'true'
  annotations:
    controller.devfile.io/mount-path: '/home/user/.m2'
data:
  settings.xml: <Base64_encoded_content>

当您启动一个工作区时,dev Workspace 容器中将提供 /home/user/.m2/settings.xml 文件。

使用 Maven,您可以为 settings.xml 文件设置自定义路径。例如:

$ mvn --settings /home/user/.m2/settings.xml clean install

6.1.1. 创建镜像拉取 secret

要允许机构 OpenShift Dev Spaces 实例的 OpenShift 集群中的 Dev Workspace Pod 访问需要身份验证的容器 registry,请创建一个镜像 pull Secret。

您可以使用 oc.dockercfg 文件或 config.json 文件创建镜像 pull Secret。

6.1.1.1. 使用 oc创建镜像拉取 Secret

先决条件

流程

  1. 在用户项目中,使用私有容器 registry 详情和凭证创建镜像 pull Secret:

    $ oc create secret docker-registry <Secret_name> \
        --docker-server=<registry_server> \
        --docker-username=<username> \
        --docker-password=<password> \
        --docker-email=<email_address>
  2. 在镜像 pull Secret 中添加以下标签:

    $ oc label secret <Secret_name> controller.devfile.io/devworkspace_pullsecret=true controller.devfile.io/watch-secret=true

6.1.1.2. 从 .dockercfg 文件创建镜像 pull Secret

如果您已将私有容器 registry 的凭证存储在 .dockercfg 文件中,您可以使用该文件创建镜像 pull Secret。

先决条件

  • 一个活跃的 oc 会话,它具有到目标 OpenShift 集群的管理权限。请参阅开始使用 CLI
  • base64 命令行工具安装在您要使用的操作系统中。

流程

  1. .dockercfg 文件编码为 Base64:

    $ cat .dockercfg | base64 | tr -d '\n'
  2. 在用户项目中创建一个新的 OpenShift Secret:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <Secret_name>
      labels:
        controller.devfile.io/devworkspace_pullsecret: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      .dockercfg: <Base64_content_of_.dockercfg>
    type: kubernetes.io/dockercfg
  3. 应用 Secret:

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF

6.1.1.3. 从 config.json 文件创建镜像 pull Secret

如果您已将私有容器 registry 的凭证存储在 $HOME/.docker/config.json 文件中,您可以使用该文件来创建镜像 pull Secret。

先决条件

  • 一个活跃的 oc 会话,它具有到目标 OpenShift 集群的管理权限。请参阅开始使用 CLI
  • base64 命令行工具安装在您要使用的操作系统中。

流程

  1. $HOME/.docker/config.json 文件编码为 Base64。

    $ cat config.json | base64 | tr -d '\n'
  2. 在用户项目中创建一个新的 OpenShift Secret:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <Secret_name>
      labels:
        controller.devfile.io/devworkspace_pullsecret: 'true'
        controller.devfile.io/watch-secret: 'true'
    data:
      .dockerconfigjson: <Base64_content_of_config.json>
    type: kubernetes.io/dockerconfigjson
  3. 应用 Secret:

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF

6.1.2. 使用 Git-provider 访问令牌

GitHub、GitLab、Bitbucket 或 Microsoft Azure Repos 的 OAuth 需要 由机构的 OpenShift Dev Spaces 实例的管理员配置。如果管理员无法为 OpenShift Dev Spaces 用户配置它,则临时解决方案是将个人访问令牌作为 Kubernetes Secret 应用。

将访问令牌挂载为 Secret 可让 OpenShift Dev Spaces 服务器访问创建工作区期间克隆的远程存储库,包括访问存储库的 /.che/.vscode 文件夹。

在您的机构 OpenShift Dev Spaces 实例的 OpenShift 集群的用户项目中应用 Secret。

应用 Secret 后,您可以使用托管在 GitHub、GitLab、Bitbucket Server 或 Microsoft Azure Repos 上的私有 Git 存储库克隆来创建工作区。

您可以为每个 Git 供应商创建并应用多个访问令牌 Secret。您必须在用户项目中应用每个 Secret。

先决条件

  • 具有运行机构的 OpenShift Dev Spaces 实例的集群的集群管理员权限。
  • 已登陆到集群。

    提示

    在 OpenShift 中,您可以使用 oc 命令行工具登录到集群:

    $ oc login "https://devspaces-<openshift_deployment_name>.<domain_name>" --username=<my_user>

流程

  1. 在 Git 提供程序的网站上生成您的访问令牌。
  2. 将您的访问令牌编码为 Base64。

    提示

    如果安装了 base64 命令行工具,可以使用命令行:

    $ echo -n '<your_access_token_string>' | base64
  3. 进入 "https://devspaces- &lt;openshift_deployment_name& gt; . <domain_name> "/api/user/id,以获取您的 OpenShift Dev Spaces 用户 ID。
  4. 准备新的 OpenShift Secret。

    kind: Secret
    apiVersion: v1
    metadata:
      name: personal-access-token-<your_choice_of_name_for_this_token>
      labels:
        app.kubernetes.io/component: scm-personal-access-token
        app.kubernetes.io/part-of: che.eclipse.org
      annotations:
        che.eclipse.org/che-userid: <devspaces_user_id>1
        che.eclipse.org/scm-personal-access-token-name: <git_provider_name>2
        che.eclipse.org/scm-url: <git_provider_endpoint>3
        che.eclipse.org/scm-username: <git_provider_username>4
        che.eclipse.org/scm-organization: <git_provider_organization>5
    data:
      token: <Base64_encoded_access_token>
    type: Opaque
    1
    您的 OpenShift Dev Spaces 用户 ID。
    2
    Git 供应商名称: githubgitlabbitbucket-serverazure-devops
    3
    Git 供应商 URL。
    4
    Git 供应商用户名。对于 azure-devops,用户的电子邮件地址。
    5
    这一行仅适用于 azure-devops :您的 Git 供应商用户组织。
  5. 访问 "https://devspaces-<openshift_deployment_name>.<domain_name>"/api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间作为 name
  6. 切换到集群中的 OpenShift Dev Spaces 用户命名空间。

    提示

    在 OpenShift 中:

    • oc 命令行工具可以返回集群中当前处于的命名空间,您可以使用它来检查当前的命名空间:

      $ oc project
    • 如果需要,您可以在命令行中切换到 OpenShift Dev Spaces 用户命名空间:

      $ oc project <your_user_namespace>
  7. 应用 Secret。

    提示

    在 OpenShift 中,您可以使用 oc 命令行工具:

    $ oc apply -f - <<EOF
    <Secret_prepared_in_step_5>
    EOF

验证

  1. 使用 Git 提供程序主机的远程 Git 存储库的 URL 来启动新的工作区
  2. 进行一些更改,并从工作区推送到远程 Git 存储库。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.