代码之家  ›  专栏  ›  技术社区  ›  lmcarreiro

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

  •  10
  • lmcarreiro  · 技术社区  · 7 年前

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

    我可以执行 kubectl 运行此命令后,来自PC的群集上的命令:

    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 URL
    3. CA证书-证书颁发机构包(PEM格式)
    4. 令牌
    5. 项目命名空间(可选,唯一)

    我尝试过这些价值观:

    1. 我把我的 <kubernetes-cluster-name> 匹配Azure上群集的名称和
    2. https://<resource-group-name+some-hexadecimal-chars>.hcp.westeurope.azmk8s.io:443
    3. certificate-authority-data

    Install

    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
    

    az

    1 回复  |  直到 7 年前
        1
  •  14
  •   lmcarreiro    7 年前

    后来我发现 certificate-authority-data .kube/config 我将其内容复制到 CA Certificate gitlab字段的“add kubernetes cluster”形式,是pem格式,但base64编码。

    PEM格式已经是证书位的Base64编码表示,但中间有一些断线。整个内容在转到 .kube/配置 所以它变成了一个大的base64单线串。

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

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

    然后我把这个内容复制到gitlab的“CA证书”字段中,它就工作了。