我完全陷入困境。我编写了 terraform 代码来部署带有工作节点的 eks 集群,当我使用 terraform 部署它时,一切正常,我能够执行 kubectl get 节点,但是,当我使用推送到 github 并使用 github 操作时,一切仍在部署,但是当我尝试使用 kubectl get 节点访问集群时,出现此错误:
E0505 22:34:58.473467 28812 memcache.go:265]无法获取当前服务器API组列表:服务器已要求客户端提供凭据 E0505 22:34:59.011805 28812 memcache.go:265]无法获取当前服务器API组列表:服务器已要求客户端提供凭据 E0505 22:34:59.764169 28812 memcache.go:265]无法获取当前服务器API组列表:服务器已要求客户端提供凭据 E0505 22:35:00.350556 28812 memcache.go:265]无法获取当前服务器API组列表:服务器已要求客户端提供凭据 E0505 22:35:01.067397 28812 memcache.go:265]无法获取当前服务器API组列表:服务器已要求客户端提供凭据 错误:您必须登录到服务器(服务器已要求客户端提供凭据)
我应该提到,在我的 github 存储库中,我确保添加了 GitHubActionsTerraformIAMrole 的 IAM 角色 arn,这是 OIDC 设置的一部分。我将其添加为环境秘密。
这是我的工作流程文件,任何帮助将不胜感激!!
名称:Terraform 部署工作流程
在:
推:
分支机构:
- 主要
- 开发
权限: id 令牌:写入 内容:阅读
工作: 地形: 运行:ubuntu-latest 环境: ${{ (github.ref == 'refs/heads/main' && '生产') || (github.ref == 'refs/heads/staging' && 'staging') || ‘开发’}}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/[email protected]
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.IAM_ROLE }}
audience: sts.amazonaws.com
- name: Terraform Initialize
run: terraform init -reconfigure -backend-config="bucket=project-x" -backend-config="key=terraform.tfstate" -backend-config="region=us-east-1"
working-directory: ./roots/main-eks-root/
- name: Terraform Plan
run: terraform plan -var-file="project.tfvars" -out=tfplan
working-directory: ./roots/main-eks-root/
- name: Terraform Apply
run: terraform apply -auto-approve "tfplan"
working-directory: ./roots/main-eks-root/
我尝试在本地使用相同的 tfvars 文件和 github 操作来部署这两种配置。只有本地有效,所以我猜测它具有 github actions 凭证,但我不确定。
您找到解决方案了吗?,我也遇到了同样的问题,我被困住了。