GitHub Actions工作流Kustomization阶段部署GKE失败问题求助
根因分析
报错核心原因是执行kustomize命令的目录下不存在kustomization.yaml文件,结合你提供的工作流配置,触发问题的具体逻辑如下:
- 你在job的全局配置中指定了
defaults.run.working-directory: api,所有run步骤默认都会在api子目录下执行 - 你的
kustomization.yaml文件要么未提交到仓库,要么存放在api目录以外的位置(比如仓库根目录、专门的k8s配置目录)
修复方案
- 第一步先确认你已经在仓库中提交了
kustomization.yaml文件,该文件是Kustomize的基础配置文件,需要提前编写好声明依赖的K8s资源,基础示例如下:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: # 替换为你实际的deployment、service等资源文件路径 - deployment.yaml - service.yaml images: - name: gcr.io/PROJECT_ID/IMAGE:TAG newName: placeholder newTag: placeholder
- 如果
kustomization.yaml存放在仓库根目录,修改Deploy步骤,显式指定工作目录覆盖全局配置:
- name: Deploy # 切换到仓库根目录执行命令 working-directory: . run: |- ./kustomize edit set image gcr.io/PROJECT_ID/IMAGE:TAG=gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA ./kustomize build . | kubectl apply -f - kubectl rollout status deployment/$DEPLOYMENT_NAME kubectl get services -o wide
如果kustomization.yaml存放在其他目录,将working-directory的值替换为对应路径即可。
- 可选优化:调整Kustomize安装步骤,将二进制文件放到系统PATH路径下,避免不同工作目录下找不到执行文件的问题:
- name: Set up Kustomize run: |- curl -sfLo kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v3.1.0/kustomize_3.1.0_linux_amd64 chmod u+x ./kustomize sudo mv ./kustomize /usr/local/bin/
修改后后续所有步骤都可以直接调用kustomize命令,无需加./前缀。
内容的提问来源于stack exchange,提问作者Bash
相关产品推荐
相关产品推荐

