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_keysecret_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 创建命名空间以部署构建的主要内容,如果未能解决你的问题,请参考以下文章

如何让kubectl变得更好用?

如何让kubectl变得更好用?

使用littleTools简化docker/kubectl的命令

Kubernetes安装krew解决"Error: unknown command "krew" for "kubectl""

解决kubectl get pods时 No resources found.问题

kubectl-trace 基于bpftrace 的kubernetes 集群性能分析工具