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


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

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

  • 将您的凭据和敏感配置挂载为 Kubernetes Secret
  • 将您的非敏感配置挂载为 Kubernetes ConfigMap

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

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

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

6.1. 挂载 Secret

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

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

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

先决条件

  • 对目标 OpenShift 集群具有管理权限的活动 oc 会话。请参阅 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
    Copy to Clipboard Toggle word wrap
  2. 可选:使用注解来配置如何挂载 Secret。

    Expand
    表 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>
Copy to Clipboard Toggle word wrap

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

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

$ mvn --settings /home/user/.m2/settings.xml clean install
Copy to Clipboard Toggle word wrap

6.1.1. 创建镜像拉取 secret

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

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

6.1.1.1. 使用 oc创建镜像 pull Secret

先决条件

  • 对目标 OpenShift 集群具有管理权限的活动 oc 会话。请参阅 CLI 入门

流程

  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>
    Copy to Clipboard Toggle word wrap
  2. 在镜像拉取 Secret 中添加以下标签:

    $ oc label secret <Secret_name> controller.devfile.io/devworkspace_pullsecret=true controller.devfile.io/watch-secret=true
    Copy to Clipboard Toggle word wrap

6.1.1.2. 从 .dockercfg 文件创建镜像拉取 Secret

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

先决条件

  • 对目标 OpenShift 集群具有管理权限的活动 oc 会话。请参阅 CLI 入门
  • base64 命令行工具安装在您使用的操作系统中。

流程

  1. .dockercfg 文件编码到 Base64 :

    $ cat .dockercfg | base64 | tr -d '\n'
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  3. 应用 Secret:

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF
    Copy to Clipboard Toggle word wrap

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

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

先决条件

  • 对目标 OpenShift 集群具有管理权限的活动 oc 会话。请参阅 CLI 入门
  • base64 命令行工具安装在您使用的操作系统中。

流程

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

    $ cat config.json | base64 | tr -d '\n'
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap
  3. 应用 Secret:

    $ oc apply -f - <<EOF
    <Secret_prepared_in_the_previous_step>
    EOF
    Copy to Clipboard Toggle word wrap

6.1.2. 使用 Git-provider 访问令牌

GitHub、GitLab、Bitbucket 或 Microsoft Azure Repos 的 OAuth 需要由机构的 OpenShift Dev Spaces 实例的管理员配置。如果您的管理员无法为 OpenShift Dev Spaces 用户配置它,则临时解决方案是使用个人访问令牌。您可以在 OpenShift Dev Spaces 仪表板的 用户首选项 页面中配置个人访问令牌: https:// <openshift_dev_spaces_fqdn>/dashboard/#/user-preferences?tab=personal-access-tokens,或者在命名空间中手动应用它作为 Kubernetes Secret。

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

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

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

您可以为每个 Git 供应商创建并应用多个 access-token Secret。您必须在用户项目中应用每个 Secret。

先决条件

  • 已登陆到集群。

    提示

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

    $ oc login https://<openshift_dev_spaces_fqdn> --username=<my_user>

流程

  1. 在 Git 提供程序的网站上生成您的访问令牌。

    重要

    个人访问令牌是敏感信息,应保留机密。将它们视为密码。如果您在身份验证时遇到问题,请确保使用正确的令牌并具有适当的克隆存储库权限:

    1. 在您的计算机上本地打开终端
    2. 使用 git 命令,使用您的个人访问令牌克隆存储库。git 命令的格式因 Git 提供程序而异。例如,可以使用以下命令进行 GitHub 个人访问令牌验证:
    git clone https://<PAT>@github.com/username/repo.git
    Copy to Clipboard Toggle word wrap

    <PAT > 替换为您的个人访问令牌,并将 username/repo 替换为适当的存储库路径。如果令牌有效并且具有必要的权限,克隆过程应该可以成功。否则,这代表了不正确的个人访问令牌、权限不足或其他问题。

    重要

    对于 GitHub Enterprise Cloud,请验证 令牌是否在机构 中使用

  2. 进入 web 浏览器中的 https:// <openshift_dev_spaces_fqdn> /api/user/id 来获取您的 OpenShift Dev Spaces 用户 ID。
  3. 准备新的 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-organization: <git_provider_organization>
    4
    
    stringData:
      token: <Content_of_access_token>
    type: Opaque
    Copy to Clipboard Toggle word wrap
    1
    您的 OpenShift Dev Spaces 用户 ID。
    2
    Git 提供程序名称: githubgitlabbitbucket-serverazure-devops
    3
    Git 提供程序 URL。
    4
    这一行仅适用于 azure-devops :您的 Git 供应商用户机构。
  4. 访问 https://<openshift_dev_spaces_fqdn&gt; /api/kubernetes/namespace 来获取您的 OpenShift Dev Spaces 用户命名空间,名为。
  5. 切换到集群中的 OpenShift Dev Spaces 用户命名空间。

    提示

    在 OpenShift 中:

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

      $ oc project

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

      $ oc project & lt;your_user_namespace>

  6. 应用 Secret。

    提示

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

    $ oc apply -f - <<EOF
    <Secret_prepared_in_step_5>
    EOF
    Copy to Clipboard Toggle word wrap

验证

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat