This documentation is for a release that is no longer maintained
See documentation for the latest supported version.第 6 章 在工作区中使用凭证和配置
您可以在工作区中使用凭证和配置。
要做到这一点,将凭证和配置挂载到您的机构 OpenShift Dev Spaces 实例的 OpenShift 集群中的 Dev Workspace
容器中:
如果您需要允许集群中的 Dev Workspace
Pod 访问需要身份验证的容器 registry,请为 Dev Workspace
Pod 创建镜像 pull Secret。
挂载过程使用标准 Kubernetes 挂载机制,需要将额外的标签和注解应用到现有资源。在启动新的工作区或重启现有工作区时,会挂载资源。
您可以为各种组件创建永久挂载点:
-
Maven 配置,如 特定于用户的
settings.xml
文件 - SSH 密钥对
- Git-provider 访问令牌
- Git 配置
- AWS 授权令牌
- 配置文件
- 持久性存储
6.1. 挂载 Secret 复制链接链接已复制到粘贴板!
要将机密数据挂载到工作区中,请使用 Kubernetes Secret。
使用 Kubernetes Secret,您可以挂载用户名、密码、SSH 密钥对、身份验证令牌(如 AWS)和敏感配置。
将 Kubernetes Secret 挂载到您组织的 OpenShift Dev Spaces 实例的 OpenShift 集群中的 Dev Workspace
容器。
先决条件
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。 -
在用户项目中,您创建新的 Secret,或确定要挂载到所有
Dev Workspace
容器的现有 Secret。
流程
将 Secret 挂载所需的标签添加到 Secret 中。
oc label secret <Secret_name> \ controller.devfile.io/mount-to-devworkspace=true \ controller.devfile.io/watch-secret=true
$ oc label secret <Secret_name> \ controller.devfile.io/mount-to-devworkspace=true \ controller.devfile.io/watch-secret=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:使用注解来配置如何挂载 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 挂载为文件
当您启动一个工作区时,/home/user/.m2/settings.xml
文件将在 Dev Workspace
容器中提供。
使用 Maven,您可以为 settings.xml
文件设置自定义路径。例如:
mvn --settings /home/user/.m2/settings.xml clean install
$ 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
文件来创建镜像拉取 Secret。
6.1.1.1. 使用 oc创建镜像 pull Secret 复制链接链接已复制到粘贴板!
先决条件
-
对目标 OpenShift 集群具有管理权限的活动
oc
会话。请参阅 CLI 入门。
流程
在用户项目中,使用私有容器 registry 详情和凭证创建一个镜像 pull Secret:
oc create secret docker-registry <Secret_name> \ --docker-server=<registry_server> \ --docker-username=<username> \ --docker-password=<password> \ --docker-email=<email_address>
$ oc create secret docker-registry <Secret_name> \ --docker-server=<registry_server> \ --docker-username=<username> \ --docker-password=<password> \ --docker-email=<email_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在镜像拉取 Secret 中添加以下标签:
oc label secret <Secret_name> controller.devfile.io/devworkspace_pullsecret=true controller.devfile.io/watch-secret=true
$ oc label secret <Secret_name> controller.devfile.io/devworkspace_pullsecret=true controller.devfile.io/watch-secret=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.1.2. 从 .dockercfg 文件创建镜像拉取 Secret 复制链接链接已复制到粘贴板!
如果您已将私有容器 registry 的凭证存储在 .dockercfg
文件中,您可以使用该文件来创建镜像 pull Secret。
流程
将
.dockercfg
文件编码到 Base64 :cat .dockercfg | base64 | tr -d '\n'
$ cat .dockercfg | base64 | tr -d '\n'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在用户项目中创建新的 OpenShift Secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 Secret:
oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.1.3. 从 config.json 文件创建镜像 pull Secret 复制链接链接已复制到粘贴板!
如果您已将私有容器 registry 的凭证存储在 $HOME/.docker/config.json
文件中,您可以使用该文件来创建镜像 pull Secret。
流程
将
$HOME/.docker/config.json
文件编码为 Base64。cat config.json | base64 | tr -d '\n'
$ cat config.json | base64 | tr -d '\n'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在用户项目中创建新的 OpenShift Secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 Secret:
oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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>
流程
在 Git 提供程序的网站上生成您的访问令牌。
重要个人访问令牌是敏感信息,应保留机密。将它们视为密码。如果您在身份验证时遇到问题,请确保使用正确的令牌并具有适当的克隆存储库权限:
- 在您的计算机上本地打开终端
-
使用
git
命令,使用您的个人访问令牌克隆存储库。git
命令的格式因 Git 提供程序而异。例如,可以使用以下命令进行 GitHub 个人访问令牌验证:
git clone https://<PAT>@github.com/username/repo.git
git clone https://<PAT>@github.com/username/repo.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<PAT
> 替换为您的个人访问令牌,并将username/repo
替换为适当的存储库路径。如果令牌有效并且具有必要的权限,克隆过程应该可以成功。否则,这代表了不正确的个人访问令牌、权限不足或其他问题。重要对于 GitHub Enterprise Cloud,请验证 令牌是否在机构 中使用。
-
进入 web
浏览器中的 https:// <openshift_dev_spaces_fqdn> /api/user/id
来获取您的 OpenShift Dev Spaces 用户 ID。 准备新的 OpenShift Secret。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
访问
https://<openshift_dev_spaces_fqdn> /api/kubernetes/namespace
来获取您的 OpenShift Dev Spaces 用户命名空间,名为。 切换到集群中的 OpenShift Dev Spaces 用户命名空间。
提示在 OpenShift 中:
oc
命令行工具可返回您当前位于集群中的命名空间,您可以使用该命名空间检查当前的命名空间:$ oc project
如果需要,您可以在命令行中切换到 OpenShift Dev Spaces 用户命名空间:
$ oc project & lt;your_user_namespace>
应用 Secret。
提示在 OpenShift 中,您可以使用
oc
命令行工具:oc apply -f - <<EOF <Secret_prepared_in_step_5> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_step_5> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
- 使用 Git 提供程序主机的远程 Git 存储库的 URL,启动新的工作区。
- 进行一些更改,并从工作区推送到远程 Git 存储库。