1
1

AWS上に作ったk3sクラスタの証明書作り直し

Last updated at Posted at 2024-06-21

せっかく作ったk3sクラスタですからローカル(Windows10)から接続して、色々試したいわけです。しかし、k3sクラスタを起動するのが久しぶりであったせいか、k3s内部証明書が期限切れしてしまったようです(デフォルトでは期限は1年)。また、同時にAWS Client VPNを使ってアクセスしようと思ったので、これを機に設定その他を見直しました。

以前に似たような記事を書きましたが、TLS認証を無理やりスキップするような内容だったので、あまりよくない記事だったと思います。色々試しながら以下のやり方に行きつきました(正しいと言い切る自信はない)。

手順

以下の操作は全て、k3sのコントロールプレーンのノードで行います。

secrets/k3s-serving の変更

AWS Client VPNを利用して接続することとしたので、Windows端末側のIPアドレスを設定してあげる必要があります。調べるとWindows側は192.168.252.0/22の中から割り当てられる事が分かりました。
sudo kubectl -n kube-system edit secrets/k3s-serving
を叩くとエディタが開くので(苦手な)viを操作し

metadata:
  annotations:
    listener.cattle.io/cn-__1-f16284: ::1
    listener.cattle.io/cn-10.43.0.1: 10.43.0.1
    listener.cattle.io/cn-127.0.0.1: 127.0.0.1
    listener.cattle.io/cn-172.31.42.76: 172.31.42.76
    listener.cattle.io/cn-172.31.46.204: 172.31.46.204
    listener.cattle.io/cn-172.31.47.52: 172.31.47.52
    listener.cattle.io/cn-ip-172-31-42-76: ip-172-31-42-76
    listener.cattle.io/cn-ip-172-31-46-204: ip-172-31-46-204
    listener.cattle.io/cn-ip-172-31-47-52: ip-172-31-47-52
+   listener.cattle.io/cn-ip-192-168-252-0: 192.168.252.0/22
    #(以下略)

と追記します。

キャッシュされた証明書の削除

kubernetes シークレットからキャッシュされた(期限切れ)証明書を削除します。
sudo kubectl -n kube-system edit secrets/k3s-serving

k3s停止

証明書を作り直すために、一時停止します。
sudo systemctl stop k3s

証明書のローテーション

念のため先に、dynamic-cert.jsonを削除しておきます。
sudo rm /var/lib/rancher/k3s/server/tls/dynamic-cert.json
次に証明書を再作成します。
sudo k3s certificate rotate

k3s再スタート

sudo systemctl start k3s

.kube/configを再確認

sudo cat /etc/rancher/k3s/k3s.yamlの中身を参考に、Windows端末側の.kube/configファイルを見直しました。

以上で、再び接続が可能になりました。

参考URL

以下の記事が参考になりました。ありがとうございました。
k3sクラスタを立ち上げたあとに、control-planeのIPアドレスを変えた時の対処方法
期限切れの K3s 証明書は自動ローテーションされないため接続問題が発生します

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1