You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenShift中使用oc命令批量修改路由的TLS证书与密钥

OpenShift oc命令批量修改Edge路由TLS证书配置

如果你仅需要调整TLS配置中的cert和key参数,同时保留路由其余原有配置(如CA证书、不安全策略、端口绑定、域名等),可以通过以下方案实现单路由修改和批量修改:


单个Edge路由证书更新命令

使用oc patch命令可实现指定字段定向修改,不会覆盖其他已有配置:

oc patch route test-route -n test \
  -p '{"spec":{"tls":{"certificate":"'"$(cat /data/new-test.crt.pem)"'","key":"'"$(cat /data/new-test.key.pem)"'"}}}'

批量更新多路由证书配置

场景1:多个路由使用相同的新证书

如果需要更新指定命名空间下所有Edge类型路由的证书,可直接遍历执行:

# 先读取新证书内容到变量,避免重复读取文件
NEW_CERT=$(cat /data/new-test.crt.pem)
NEW_KEY=$(cat /data/new-test.key.pem)

# 批量遍历所有edge类型路由执行更新
oc get routes -n test -o jsonpath='{.items[?(@.spec.tls.termination=="edge")].metadata.name}' | tr ' ' '\n' | while read ROUTE_NAME; do
  oc patch route ${ROUTE_NAME} -n test \
    -p '{"spec":{"tls":{"certificate":"'"${NEW_CERT}"'","key":"'"${NEW_KEY}"'"}}}'
  echo "已更新路由: ${ROUTE_NAME}"
done

场景2:每个路由对应独立的证书文件

提前将证书文件按{路由名}.crt.pem、{路由名}.key.pem的格式统一存放在指定目录,即可批量匹配更新:

# 自定义证书存放目录和目标命名空间
CERT_DIR="/data/certs/"
TARGET_NS="test"

for CERT_FILE in ${CERT_DIR}/*.crt.pem; do
  ROUTE_NAME=$(basename ${CERT_FILE} .crt.pem)
  # 校验对应私钥文件存在后再执行更新
  if [ -f "${CERT_DIR}/${ROUTE_NAME}.key.pem" ]; then
    NEW_CERT=$(cat ${CERT_FILE})
    NEW_KEY=$(cat ${CERT_DIR}/${ROUTE_NAME}.key.pem)
    oc patch route ${ROUTE_NAME} -n ${TARGET_NS} \
      -p '{"spec":{"tls":{"certificate":"'"${NEW_CERT}"'","key":"'"${NEW_KEY}"'"}}}'
    echo "已更新路由: ${ROUTE_NAME}"
  else
    echo "路由${ROUTE_NAME}对应的私钥文件不存在,跳过更新"
  fi
done

注意:正式执行前可以在oc patch命令末尾添加--dry-run=client -o yaml参数,预览修改内容确认符合预期后再正式运行,避免误改配置。

内容的提问来源于stack exchange,提问作者ddakker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:48:02