Un nouveau monde parfumé

香り立つ備忘録

Rancher Server の CA 証明書を入れ替えた後に cluster が Inactive になる件

背景

最近自前で簡単な PKI を運用し始めたので、これまで自己署名証明書で運用していた Rancher Server のCA証明書/サーバー証明書/秘密鍵をそこで作った第四種オレオレ証明書*1へと移行した。

ところ、数時間後に cluster 画面で state が Inactive となってしまい、確認したところ cattle-cluster-agent が以下のようなログを吐いていた。

2019/05/30 15:53:24 [INFO] 2019/05/30 15:53:24 http: TLS handshake error from {ランチャーサーバー}: remote error: tls: bad certificate

環境

  • Rancher 2.3
  • Imported k3s 0.5.0 Cluster

対処

github.com github.com

cattle-cluster-agent および cattle-node-agent環境変数 CATTLE_CA_CHECKSUM をなんとかする。

Rancher Server の Docker コンテナが動いている場所で、次のようにすると新しいチェックサムが得られる。

 $ docker exec ${rancher-server container id} kubectl get setting cacerts -o json | jq -r .value | sha256sum  | awk '{ print $1 }'
65a964b1fe8a39621f5096f47ca32a2327ac02886fe6ec0fde2121bff665abdb

ので、この値で CATTLE_CA_CHECKSUM を上書きしてやる。ワイは k3s server 上で /opt/k3s kubectl edit deployment cattle-cluster-agent -n cattle-system/opt/k3s kubectl edit daemonset cattle-node-agent -n cattle-system しました。

edit で再デプロイが走れば cluster が Active に帰ってくるはずです。

具体的なやり方についてはこちらの shell script を参考にさせていただいた。

CATTLE_CA_CHECKSUM を空にしたらしたで良い感じに動くようだけど、ひとまずちゃんと上書きしたら良くなったので良かった。

雑記

  • Rancher って謎のオレオレ k8s API 喋ってて rancher/rancher コンテナ内で kubectl 使って色々できるんですね、resource 名メチャクチャだけど… 知らなかった。

  • Q. なんで Let's Encrypt やらないんですか

    • A. single-node install でポート 8080/8443 とか使ってると ACME(http) 微妙にだるくない…?