Import OpenShift Cluster

支持将已部署的 OpenShift 集群接入平台,实现统一管理。

前提条件

  • 集群的 Kubernetes 版本和参数必须满足标准 Kubernetes 集群要求

  • 集成过程中需要使用 kubectl 命令,请在可访问集群的堡垒机上安装该 CLI 工具。

  • 为实现对节点、工作负载(Deployment、StatefulSet、DaemonSet)、Pod 和容器等指标的实时监控,确保目标集群已部署 Prometheus

获取 Registry 地址

  • 若使用平台在 global 集群 安装时部署的 Registry,请在 global 控制节点执行以下命令:

    if [ "$(kubectl get productbase -o jsonpath='{.items[].spec.registry.preferPlatformURL}')" = 'false' ]; then
        REGISTRY=$(kubectl get cm -n kube-public global-info -o jsonpath='{.data.registryAddress}')
    else
        REGISTRY=$(kubectl get cm -n kube-public global-info -o jsonpath='{.data.platformURL}' | awk -F // '{print $NF}')
    fi
    echo "Registry address is: $REGISTRY"
  • 若使用 外部 Registry,请手动设置 REGISTRY 变量:

    REGISTRY=<external-registry-address>  # 例如 registry.example.cn:60080 或 192.168.134.43
    echo "Registry address is: $REGISTRY"

检查是否需要额外的 Registry 配置

  1. 执行以下命令,检查 Registry 是否支持 HTTPS 且使用受信任的 CA 证书:

    REGISTRY=<registry-address-from-previous-step>
    
    if curl -s -o /dev/null --retry 3 --retry-delay 5 -- "https://${REGISTRY}/v2/"; then
        echo 'Pass: Registry uses a trusted CA certificate. No extra config needed.'
    else
        echo 'Fail: Registry does not support HTTPS or uses an untrusted certificate. Follow "Trust Insecure Registry".'
    fi
  2. 若检查未通过,请按照以下步骤操作。

信任不安全的 Registry

  1. 登录所有 OCP 集群节点。

  2. 在每个节点上配置 Registry 设置:

    sudo -i
    sudo chattr -i /
    
    sudo mkdir -p /etc/systemd/system/crio.service.d/
    cat | sudo tee /etc/systemd/system/crio.service.d/99-registry-cpaas-system.conf << 'EOF'
    [Service]
    ExecStart=
    ExecStart=/usr/bin/crio \
              --insecure-registry='<registry-address>' \  # 例如 registry.example.cn:60080 或 192.168.134.43
              $CRIO_CONFIG_OPTIONS \
              $CRIO_RUNTIME_OPTIONS \
              $CRIO_STORAGE_OPTIONS \
              $CRIO_NETWORK_OPTIONS \
              $CRIO_METRICS_OPTIONS
    EOF
  3. 重启 crio 服务:

    sudo systemctl daemon-reload && sudo systemctl restart crio

配置集群的 DNS

修改 global 集群中的 CoreDNS ConfigMap 以配置 DNS。

  1. 在堡垒机上获取 OCP 集群的基础域名:

    oc get dns cluster -o jsonpath='{.spec.baseDomain}'

    示例输出:

    ocp.example.com
  2. 登录平台管理控制台,切换到 global 集群,进入 集群管理 > 资源管理

  3. 编辑 kube-system 命名空间下的 cpaas-coredns ConfigMap

    使用 OCP 基础域名和 DNS 服务器地址(取自集群节点的 /etc/resolv.conf)添加新的配置块。

    示例:

    Corefile: |
    ocp.example.com:1053 {
        log
        forward . 192.168.31.220
    }
    .:1053 {
        log
        forward . 192.168.31.220
    }

获取集群信息

可选择以下方式之一:

方法 1(推荐):获取 KubeConfig 文件

  1. 在堡垒机上查找 kubeconfig 文件,确认包含管理员上下文。

  2. 将 kubeconfig 文件从堡垒机复制到本地机器:

    scp root@<bastion-ip>:</path/to/kubeconfig> <local-path>

方法 2:使用 Token、API Server 地址和 CA 证书

参见如何获取集群信息?

导入集群

  1. 在左侧导航中,进入 集群管理 > 集群

  2. 点击 导入集群

  3. 配置参数:

    参数说明
    Registry存储平台组件镜像的 Registry。平台默认:global 安装时配置的 Registry。私有 Registry:需填写 Registry 地址、端口、用户名和密码。公共 Registry:需更新云端凭据
    集群信息上传 KubeConfig 文件或手动输入。集群地址:API Server 地址。CA 证书:Base64 解码后的 CA 证书。认证方式:token 或具备 cluster-admin 权限的客户端证书。
  4. 点击 检测连通性

  5. 若成功,点击 导入。可在执行日志中查看进度。导入完成后,集群状态显示正常。

网络配置

确保 global 集群与导入集群之间的网络连通。详见导入集群的网络配置

部署插件

集成成功后,进入 Marketplace 部署所需插件,如监控、日志采集和日志存储。

部署日志采集前,请确保 /var/cpaas/ 有超过 50GB 的可用空间:

df -h /var/cpaas

更新审计策略

可修改集群的审计策略(spec.audit.profile):

  • Default:记录读写请求的元数据(OAuth 访问令牌创建时记录请求体)。
  • WriteRequestBodies:记录所有请求的元数据及写请求的请求体。
  • AllRequestBodies:记录所有请求的元数据和请求体。

敏感资源(如 Secrets、Routes、OAuthClient)仅记录元数据。

更新命令:

oc edit apiserver cluster

常见问题

为什么“添加节点”按钮是禁用状态?

平台 UI 不支持通过界面添加节点,请使用厂商提供的方法。

支持哪些证书?

  1. Kubernetes 证书:仅可见 API Server 证书,无自动轮换功能。
  2. 平台组件证书:可见且支持自动轮换。

OpenShift 集群不支持哪些功能?

  • 审计数据采集。
  • ETCD、Scheduler、Controller Manager 监控(仅支持 API Server 指标)。
  • API Server 以外的证书管理。