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

如何在GitHub Actions中修改kustomize.yaml的Ingress域名值

在GitHub Actions中替换Kustomize配置里的域名

下面提供三种可行的实现方式,按需选择:

方法一:用sed直接文本替换(快速简单)

适合场景:域名字符串唯一,无其他地方会被误匹配的情况。

在GitHub Actions的步骤中添加以下命令,直接修改kustomize.yaml文件:

- name: 替换Kustomize中的域名
  run: |
    sed -i 's/the.new.domain.com/${{ secrets.NEW_DOMAIN }}/g' kustomize.yaml

说明:

  • ${{ secrets.NEW_DOMAIN }}是存储在GitHub Secrets中的新域名,也可以用环境变量${{ env.NEW_DOMAIN }}
  • sed -i表示原地修改文件,s/旧值/新值/g是全局替换规则

方法二:用yq精准修改YAML结构(安全可靠)

适合场景:需要精准定位YAML节点,避免误改其他内容。

首先安装yq工具,再执行修改命令:

- name: 安装yq工具
  uses: mikefarah/yq@v4.40.5

- name: 更新Ingress域名
  run: |
    yq eval '.patches[0].patch |= sub("the.new.domain.com", "${{ secrets.NEW_DOMAIN }}")' -i kustomize.yaml

说明:

  • yq是专门处理YAML的工具,能精准定位到patches数组第一个元素的patch字段
  • sub函数仅替换指定字符串,比sed更安全,不会破坏YAML结构

方法三:改用Kustomize Vars管理(最佳实践)

适合场景:长期维护的项目,希望遵循Kustomize的配置管理规范,避免直接修改patch内容。

  1. 先修改你的kustomize.yaml,引入变量和ConfigMap生成器:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

# 定义变量,引用ConfigMap中的host值
vars:
- name: INGRESS_HOST
  objref:
    kind: ConfigMap
    name: domain-config
    apiVersion: v1
  fieldref:
    fieldpath: data.host

patches:
- patch: |-
    - op: replace
      path: /spec/rules/0/host
      value: $(INGRESS_HOST)  # 用变量替代硬编码域名
  target:
    kind: Ingress
    name: the_name_of_ingress

# 生成存储域名的ConfigMap
configMapGenerator:
- name: domain-config
  literals:
  - host=the.new.domain.com
  1. 在GitHub Actions中用kustomize edit命令更新ConfigMap的域名值:
- name: 更新Ingress域名变量
  run: |
    kustomize edit set configmap domain-config --from-literal=host=${{ secrets.NEW_DOMAIN }}

说明:

  • 这种方式将域名作为配置变量管理,符合Kustomize的设计理念,后续修改更灵活
  • 执行kustomize build时会自动将变量替换为实际域名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:39:40