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

lmc*_*iro 10 azure gitlab-ci kubernetes 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>
Run Code Online (Sandbox Code Playgroud)

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

  1. Kubernetes集群名称
  2. API URL
  3. CA证书 - 证书颁发机构捆绑(PEM格式)
  4. 代币
  5. 项目命名空间(可选,唯一)

我试过这些值:

  1. 我把我<kubernetes-cluster-name>与azure上的集群名称和.kube/config文件上的集群名称相匹配.
  2. 我把url 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. 将其留空,因为它是可选的.

在GitLab中,当我尝试按下按钮Install安装Helm Tiller时,我收到此错误:

Something went wrong while installing Helm Tiller
Can't start installation process. nested asn1 error
Run Code Online (Sandbox Code Playgroud)

有时我会得到这个错误:

Kubernetes error: SSL_connect returned=1 errno=0 state=error: certificate verify failed
Run Code Online (Sandbox Code Playgroud)

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

我认为这个问题是这个领域的第三次,CA证书,也许还有一些其他的方式来获得在命令行该内容azkubectl.

这里有人从GitLab到Azure AKS的Kubernetes集成吗?

lmc*_*iro 14

我后来发现我将其内容复制到GitLab"添加Kubernetes集群"字段certificate-authority-data.kube/config文件中的base64字符串CA Certificate,它是PEM格式,但是base64编码.

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

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

-----BEGIN CERTIFICATE-----
MIIEyDCCArCgAwIBAgIRAOL3N8oMIwWIxcFTZhTkfgMwDQYJKoZIhvcNAQELBQAw
...
...
...
5gP7yoL1peZ+AWjCgcUVZYiItqrBLpWYDgY9g8btYDUIiWlqkmC0+kBaPfwCtckx
cUp3vlwRITrv0mzrxiQjTLTUpEy7EcD+U6IecA==
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

然后我只是将这些内容复制到GitLab"CA证书"字段中并且它有效.

  • 嘿,只是想补充一点,您可以运行以下命令来为您执行此操作: `kubectl config view --raw -o jsonpath="{.clusters[?(@.name == 'YOUR_CLUSTER_NAME')].cluster .证书颁发机构数据}" | Base64-d| openssl x509-文本` (2认同)