落とし穴に立て札を立てるが如く

ハマりどころの解決が少しでも早くなることを願って書いていきます

cert-manager について簡潔にまとめておきますね

この記事は cloud.config tech blog にもマルチポストします

はじめに

最近触った環境で cert-manager というソフトウェアを使用していて、その概要について把握するのにまあまあ時間がかかったため、あとで忘れたときの備忘録として、そして同様にソフトウェアについて把握したい方向けに簡潔にまとめておきます。

cert-manager とは

Kubernetes や OpenShift 上で動作する TLS 証明書の管理ソフトウェアです。
Kubernetes 上で Pod として常駐し、証明書が期限切れになる前に定期的に証明書の更新を自動的に行ってくれます。
作成した証明書は Kubernetes の Secret として自動生成されます。
Helm またはマニフェストで直接インストール可能です。

インストール方法

※前提条件として Helm のインストールが必要ですが未インストールであれば別途インストールしてください

マニフェストでインストールする

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.yaml  

これで、cert-manager ネームスペースに cert-manager がインストールされます

Helm でインストールする

helm repo add jetstack https://charts.jetstack.io --force-update  
helm repo update  
  
helm install \  
  cert-manager jetstack/cert-manager \  
  --namespace cert-manager \  
  --create-namespace \  
  --version v1.14.5 \  
  --set installCRDs=true  

インストールされるカスタムリソース例

cert-manager をインストールすると、cert-manager で使用するいくつかのカスタムリソースが Kubernetes 上にインストールされます。
cert-manager を使用しているクラスターには以下のリソースが存在するため、探してみてください。
インストールされるものの中で代表的なものは以下です。

Issuer

証明書を取得する認証局の設定を行います。
取得する元の認証局によって設定値が異なります。
https://cert-manager.io/docs/concepts/issuer/
パターンによる実装例はこちらから
https://cert-manager.io/docs/configuration/issuers/

ClusterIssuer

Issuer を全ての Namespace で使いまわす場合に使用します。
設定値は Issuer とほぼ同じです。Namespace の指定がないのが大きな差異です。

Certificate

作成する証明書の詳細設定を行うリソースです。
証明書の有効期限や期限の何時間前に更新処理を行うか、作成した証明書を保存する Secret リソースの名前、証明書の CommonName 等を設定します。
https://cert-manager.io/docs/usage/certificate/#creating-certificate-resources

何か問題が起きたときは

証明書発行に何か問題が起きた場合は、まず cert-manager の Pod のログを確認することをお勧めします。
デフォルトでは cert-manager ネームスペースに証明書更新を実行する Pod がいるはずなので、 kubectl logsコマンドで Pod のログを確認してください。

また、cert-manager は起動時の設定次第では Prometheus 用フォーマットでメトリクスを出力できるので、そのメトリクスを監視することで証明書の更新失敗を検知できそうです。
具体的にどんな値が取得できるかは未検証&ドキュメントが見つかりません・・・
https://cert-manager.io/docs/devops-tips/prometheus-metrics/

おわりに

以前作業を行った環境で、名前だけは聞いていた cert-manager について実際に操作する段階でいろいろと調べる羽目になったため、同様に調べるときに欲しそうな情報だけまとめておきました。
同様の場面に遭遇した誰かの役に立つと幸いです。

参考