3.7.2. 将不信任的 TLS 证书导入到 OpenShift Dev Spaces

默认情况下,OpenShift Dev Spaces 组件之间的外部通信通过 TLS 加密。OpenShift Dev Spaces 组件与代理、源代码存储库和身份提供程序等外部服务的通信可能还需要 TLS。所有使用 TLS 加密的通信都需要使用由可信证书颁发机构(CA)签名的 TLS 证书。

当 OpenShift Dev Spaces 组件或外部服务使用的证书由不信任的 CA 签名时,您必须将 CA 证书导入到 OpenShift Dev Spaces 实例,以便每个 OpenShift Dev Spaces 组件将证书视为可信 CA 签名。您必须在以下情况下完成此操作:

  • 底层 OpenShift 集群使用由不受信任的 CA 签名的 TLS 证书。OpenShift Dev Spaces 服务器或工作空间组件连接到外部 OIDC 供应商或使用由不受信任的 CA 签名的 TLS 证书的 Git 服务器。

OpenShift Dev Spaces 在项目中使用标记的 ConfigMap 作为 TLS 证书的来源。ConfigMap 可以为每个证书随机有一个任意键数。

注意

当 OpenShift 集群包含通过集群范围的代理配置 添加 的集群范围内 的可信 CA 证书时,OpenShift Dev Spaces Operator 会检测到它们并将其自动注入到 ConfigMap 中。OpenShift Dev Spaces 会自动使用 config.openshift.io/inject-trusted-cabundle="true" 标签标记 ConfigMap。根据此注解,OpenShift 会在 ConfigMap 的 ca-bundle.crt 键中自动注入集群范围的可信 CA 证书。

重要

一些 OpenShift Dev Spaces 组件需要一个完整的证书链来信任端点。如果使用中间证书配置集群,请将整个链(包括自签名 root)添加到 OpenShift Dev Spaces。

3.7.2.1. 在 OpenShift Dev Spaces 中添加新 CA 证书

以下流程适用于已安装和运行的实例,以及要安装的实例。

先决条件

  • 具有目标 OpenShift 集群的管理权限的活跃 oc 会话。请参阅 CLI 入门
  • 存在 OpenShift Dev Spaces 的命名空间。

流程

  1. 保存导入本地文件系统所需的证书。

    小心
    • 具有简介短语 BEGIN TRUSTED CERTIFICATE CERTIFICATE 的证书可能包括在 PEM TRUSTED CERTIFICATE 格式,它不会被 Java 不支持。使用以下命令将其转换为支持的 CERTIFICATE 格式:

      • openssl x509 -in cert.pem -out cert.cer
  2. 使用所需的 TLS 证书创建新 ConfigMap:

    $ oc create configmap custom-certs --from-file=<bundle-file-path> -n=openshift-devspaces

    要应用多个捆绑包,请添加另一个 -from-file= <bundle-file-path>。另外,还可创建另一个 ConfigMap。

  3. 使用 app.kubernetes.io/part-of=che.eclipse.orgapp.kubernetes.io/component=ca-bundle 标签创建的 ConfigMap 标签:

    $ oc label configmap custom-certs app.kubernetes.io/part-of=che.eclipse.org app.kubernetes.io/component=ca-bundle -n <devspaces-namespace-name>
  4. 如果 OpenShift Dev Spaces 之前没有部署,则部署 OpenShift Dev Spaces。否则等待 OpenShift Dev Spaces 推出完成。
  5. 重启正在运行的工作区以使更改生效。