美文网首页
gitlab CI 执行 kubectl 命令失败

gitlab CI 执行 kubectl 命令失败

作者: 0neBean | 来源:发表于2019-09-27 09:44 被阅读0次
    $ kubectl apply -f deployment.yml
    error: unable to recognize "deployment.yml": Get http://localhost:8080/api?timeout=32s: dial tcp [::1]:8080: connect: connection refused
    

    gitlab 将以gitlab-runner用户的身份运行runner命令,而并非root用户,所以需要给该用户赋予kubectl的访问权限:

    首先登陆 k8s master 节点,使用以下命令把 /etc/kubernetes/admin.conf内容输出为 base64 格式:

    cat /etc/kubernetes/admin.conf | base64
    

    以上这个这个值,是操作kubectl命令的凭证,我们将它放在gitlab的CI参数中。

     进入gitlab > Projects > your project > Settings > CI/CD > Variables
    

    设置变量 kube_config ,值为刚才的base64值。

    之后直接在.gitlab-ci.yml中获取该参数,设置访问权限即可,目前我们将参数设置到了项目中,也可以设置到组中,这样组下的项目就都可以访问该参数,我没有发现哪里可以设置全局的CI参数,如果你知道的话,可以给我留言。

    before_script:
      - mkdir -p /root/.kube
      - echo ${kube_config} | base64 -d > /root/.kube/config   
      - export KUBECONFIG=/root/.kube/config              
      - kubectl version                        
    

    哥还有一招更简单的办法,不过不是很明智,直接用root用户运行gitlab-runner:

    #直接把--user改成root
    vi /etc/systemd/system/gitlab-runner.service
    
    #重启runner
    systemctl daemon-reload
    systemctl restart gitlab-runner.service
    #搞定
    

    相关文章

      网友评论

          本文标题:gitlab CI 执行 kubectl 命令失败

          本文链接:https://www.haomeiwen.com/subject/fzhuuctx.html