Azure AKSKubernetesクラスターをGitLabCI/CDKubernetes統合に追加しようとしています。
このコマンドを実行した後、PCからクラスターで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フォームでは、次のフィールドを入力する必要があります。
私はこれらの値を試しました:
<kubernetes-cluster-name>
を、Azureのクラスターの名前と、.kube/config
ファイルのクラスター名と一致するように配置しました。https://<resource-group-name+some-hexadecimal-chars>.hcp.westeurope.azmk8s.io:443
ファイルからコピーしたURL.kube/config
を配置しました。certificate-authority-data
ファイルから.kube/config
を試しましたが、機能せず、.kube/config
ファイルから3つすべてのbase64文字列を試しました。どれも機能しませんでした。.kube/config
ファイルからトークンを置きました。GitLabで、ボタンInstall
を押してHelmTillerをインストールしようとすると、次のエラーが発生しました。
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証明書にあると思います。おそらく、コマンドラインaz
またはkubectl
からこのコンテンツを取得する他の方法があります。
GitLabからAzureAKSへのこのKubernetes統合をすでに機能させている人はいますか?
後で、GitLabの「AddKubernetescluster」フォームの_certificate-authority-data
_フィールドにコンテンツをコピーしていた_.kube/config
_ファイルの_CA Certificate
_のbase64文字列がPEMであることがわかりました。形式ですが、base64でエンコードされています。
PEM形式は、すでに証明書ビットのbase64エンコード表現ですが、途中でいくつかの改行があります。このコンテンツ全体は、_.kube/config
_に送られる前に再びbase64でエンコードされるため、大きなbase64単一行文字列に変換されます。
この大きな1行の文字列をbase64でデコードする必要がありました(Chromeのコンソールウィンドウでjavascript atob("....")
を使用しました)。これにより、次のような結果が得られました。
_-----BEGIN CERTIFICATE-----
MIIEyDCCArCgAwIBAgIRAOL3N8oMIwWIxcFTZhTkfgMwDQYJKoZIhvcNAQELBQAw
...
...
...
5gP7yoL1peZ+AWjCgcUVZYiItqrBLpWYDgY9g8btYDUIiWlqkmC0+kBaPfwCtckx
cUp3vlwRITrv0mzrxiQjTLTUpEy7EcD+U6IecA==
-----END CERTIFICATE-----
_
次に、このコンテンツをGitLabの「CA証明書」フィールドにコピーしたところ、機能しました。