0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

cert-managerの0系から1系、apiVersionをv1へのアップグレードでエラーになる場合の対処法

Last updated at Posted at 2022-10-26

はじめに

Let's EncryptでSSL証明書を更新するためにGKEでcert-managerを動かしています。
今回、apiVersionをcert-manager.io/v1alpha2からcert-manager.io/v1に変更したさいに、ハマったのでメモ。

手順書

公式のドキュメントでいくとこのあたりを見ておく。

エラー内容

でも、うまく動かなかった。cert-mangaerのpodででたエラーは下記の通り。

cert-manager

k8s.io/client-go@v0.23.4/tools/cache/reflector.go:167: Failed to watch *v1.Certificate: failed to list *v1.Certificate: request to convert CR from an invalid group/version: cert-manager.io/v1alpha2

cert-manager-webhook

http: TLS handshake error from xxx.xxx.xxx.xxx:xxxxx: EOF

原因

v1に更新したはずなのに、v1alpha2を見ているようだ。古いCRDが残っているみたいです。
CRDとは、Custom Resource Definitionsというk8sが提供する独自のリソース定義の機能です。
ビルトインのリソースであるPodsやConfigMapと同じものです。

解決方法

今回、無停止である必要がなかったので、いったん名前空間ごと削除して作り直しました。

  1. 名前空間ごとcert-mangaerを削除
  2. 古いCRDを削除
  3. 新規でcert-mangaerを作成

手順2 「古いCRDを削除」の方法

本来であれば、手順1でkubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/{削除対象のバージョン}/cert-manager.yamlでCRDも削除される想定でした。
しかし消えなかったので、古いバージョンのCRDを特定する必要があります。(よく分からなかったので、とりあえずcertmanager関連は全部消しました)

$ kubectl get crd | grep certmanager
$ kubectl get crd | grep cert-manager

表示されたCRDの名前は、kubectl delete crd {CRDの名前}でも削除できないため、削除パッチを当てます。
finalizersを空にすることで削除できます。

kubectl patch crd/{{CRDの名前}} -p '{"metadata":{"finalizers":[]}}' --type=merge

#(例)
kubectl patch crd/certificaterequests.cert-manager.io -p '{"metadata":{"finalizers":[]}}' --type=merge
kubectl patch crd/certificates.cert-manager.io -p '{"metadata":{"finalizers":[]}}' --type=merge
kubectl patch crd/clusterissuers.cert-manager.io -p '{"metadata":{"finalizers":[]}}' --type=merge

削除後、新規でcert-mangaerを作成すると、正常にcert-managerが動作します。

おわりに

下記のissueを見て回ったけど、k8sの理解が浅くて解決方法が分からなかったですが、解決できてよかったです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?