gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:25:23 28 4
gpt4 key购买 nike

我正在尝试将我的 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 证书 - 证书颁发机构 bundle (PEM 格式)
  4. token
  5. 项目命名空间(可选,唯一)

我尝试了这些值:

  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. 我把 token 从 .kube/config文件。
  5. 将其留空,因为它是可选的。

在 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

我从昨天开始就试图让它发挥作用,在谷歌上搜索了很多,但没有找到任何东西。

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

这里有人已经实现了从 GitLab 到 Azure AKS 的 Kubernetes 集成吗?

最佳答案

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

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

我只需对这个大的单行字符串进行 Base64 解码(我在 Chrome 的控制台窗口中使用了 javascript atob("....") ),结果如下:

-----BEGIN CERTIFICATE-----
MIIEyDCCArCgAwIBAgIRAOL3N8oMIwWIxcFTZhTkfgMwDQYJKoZIhvcNAQELBQAw
...
...
...
5gP7yoL1peZ+AWjCgcUVZYiItqrBLpWYDgY9g8btYDUIiWlqkmC0+kBaPfwCtckx
cUp3vlwRITrv0mzrxiQjTLTUpEy7EcD+U6IecA==
-----END CERTIFICATE-----

然后我只是将此内容复制到 GitLab“CA 证书”字段中,它就起作用了。

关于azure - 如何将 Azure AKS Kubernetes 集群自签名 CA 添加到 GitLab CI/CD Kubernetes 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775758/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com