如何将Azure AKS Kubernetes群集自签名CA添加到GitLab CI / CD Kubernetes集成?

时间:2018-06-09 15:19:27

标签: azure kubernetes gitlab-ci kubernetes-helm azure-aks

我正在尝试将我的Azure AKS Kubernetes群集添加到我的GitLab CI / CD Kubernetes集成中。

运行此命令后,我可以在我的电脑上执行kubectl命令:

az aks get-credentials --resource-group <resource-group-name> --name <kubernetes-cluster-name>

它创建了一个.kube/config文件,内容如下:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <some long base64 string here>
    server: https://<resource-group-name+some-hexadecimal-chars>.hcp.westeurope.azmk8s.io:443
  name: <kubernetes-cluster-name>
contexts:
- context:
    cluster: <kubernetes-cluster-name>
    user: clusterUser_<resource-group-name>_<kubernetes-cluster-name>
  name: <kubernetes-cluster-name>
current-context: <kubernetes-cluster-name>
kind: Config
preferences: {}
users:
- name: clusterUser_<resource-group-name>_<kubernetes-cluster-name>
  user:
    client-certificate-data: <some long base64 string here>
    client-key-data: <some long base64 string here>
    token: <some secret string of hexadecimal chars here>

在GitLab表单中,我必须输入以下字段:

  1. Kubernetes群集名称
  2. API网址
  3. CA证书 - 证书颁发机构捆绑包(PEM格式)
  4. 令牌
  5. 项目名称空间(可选,唯一)
  6. 我尝试了这些值:

    1. 我将<kubernetes-cluster-name>与azure上的群集名称和.kube/config文件上的群集名称相匹配。
    2. 我将网址https://<resource-group-name+some-hexadecimal-chars>.hcp.westeurope.azmk8s.io:443.kube/config文件中复制。
    3. 我首先尝试了certificate-authority-data文件中的.kube/config,但没有用,我已经尝试了.kube/config文件中的所有三个base64字符串,没有一个工作。
    4. 我从.kube/config文件中添加了令牌。
    5. 将其留空,因为它是可选的。
    6. 在GitLab中,当我尝试按下按钮Install来安装Helm Tiller时,我收到了这个错误:

      Something went wrong while installing Helm Tiller
      Can't start installation process. nested asn1 error
      

      有时我会收到此错误:

      Kubernetes error: SSL_connect returned=1 errno=0 state=error: certificate verify failed
      

      我试图让它从昨天开始工作,谷歌很多,但没有找到任何东西。

      我认为问题在于第3个字段,即CA证书,也许还有其他方法可以从命令行azkubectl获取此内容。

      这里是否有人已经将这个Kubernetes从GitLab集成到Azure AKS工作?

1 个答案:

答案 0 :(得分:14)

我后来发现certificate-authority-data文件的.kube/config中的base64字符串我将其内容复制到GitLab的“{1}}字段”添加Kubernetes集群“表单中,是PEM格式,但是base64编码。

PEM格式已经是证书位的base64编码表示,但它在中间有一些换行符。整个内容在进入CA Certificate之前再次进行base64编码,因此它变成了一个很大的base64单行字符串。

我只需要对这个大的单行字符串进行base64解码(我在Chrome的控制台窗口中使用了javascript .kube/config),这给了我类似的东西:

atob("....")

然后我只是将这些内容复制到GitLab“CA证书”字段中,然后就可以了。