Github Action:使用 kubectl 创建命名空间以部署构建
Posted
技术标签:
【中文标题】Github Action:使用 kubectl 创建命名空间以部署构建【英文标题】:Github Action: Creating namespace using kubectl in order to deploy the build 【发布时间】:2021-10-08 04:56:43 【问题描述】:我正在创建一个 GitHub 工作流操作,以将构建部署到集成集群中,首先,我想使用 kubectl 创建一个命名空间,但出现错误: error: You must be logged in to the server (Unauthorized)
这是我的 action.yaml sn-p
uses: cancue/eks-action@v0.0.2
env:
aws_access_key_id: $ secrets.AWS_ACCESS_KEY_ID
aws_secret_access_key: $ secrets.AWS_SECRET_ACCESS_KEY
aws_region: $AWS_REGION
cluster_name: $EKS_CLUSTER_NAME
kubeconfig: $ secrets.INTEGRATION_CLUSTER_SECRETS
with:
args: |
kubectl create ns namespace:pr#$ github.sha
我是编写动作工作流的新手。 提前致谢。
【问题讨论】:
kubeconfig
包含哪些数据?如果您使用 EKS 默认身份验证,则必须执行 aws eks get-token
,并且获取令牌的用户必须包含在 auth configmap 中。 docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
嘿@jordanm,这只是服务的凭据和端点
【参考方案1】:
你可以试试
- name: verify deployment
uses: kodermax/kubectl-aws-eks@master
env:
KUBE_CONFIG_DATA: $ secrets.KUBE_CONFIG_DATA
with:
args: create ns <namespace-name>
但是您的配置看起来不错,但确保您已为 kubeconfig 添加了正确的数据。
另外,检查您使用的access_key
和secret_key
是否有权访问EKS 集群。
例如:https://github.com/marketplace/actions/kubectl-aws-eks
快速修复:
一旦您在环境中设置了访问权限和密码,使用该命令从 AWS 获取配置,您可以删除在 Gitaction seceret 中添加配置文件。
aws eks update-kubeconfig --region ap-south-1 --name <Cluster name>
秘密
KUBE_CONFIG_DATA – 必需:base64 编码的 kubeconfig 文件,其中包含 Kubernetes 访问集群的凭据。您可以通过运行以下命令来获取它:
cat $HOME/.kube/config | base64
【讨论】:
嘿@harsh,谢谢你的解决方案,实际问题是访问凭据。您提供的解决方案也为我工作。 :) 嘿@NitikaKuhar,新的写作动作仍然很快解决它。很高兴听到这个问题得到解决:) 谢谢@harsh,实际上,我最近两天一直在处理这个问题,你建议的解决方案,我也试过了,但当时它也给了我同样的效果错误。我忘了检查对 EKS 集群的访问权限,在你提到我检查过它并且它有效之后。 哇...!令人印象深刻的读者,您注意到那条线并认真对待它,我只是在阅读Unauthorized
后写了那条笔记,以检查 EKS 访问 coincidentally
这是唯一的问题。甚至在建议检查 EKS 访问之前,我认为这是一件非常小的事情,如果一个人执行操作,他/她对此了解更多,但都会错过次要配置:)以上是关于Github Action:使用 kubectl 创建命名空间以部署构建的主要内容,如果未能解决你的问题,请参考以下文章
使用littleTools简化docker/kubectl的命令
Kubernetes安装krew解决"Error: unknown command "krew" for "kubectl""