この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

cert-managerのアップグレード

RancherはAPIバージョンcert-manager.io/v1と互換性があり、最後にcert-managerバージョンv1.13.1でテストされました。

Rancherはcert-managerを使用して、RancherのHAデプロイメント用にTLS証明書を自動的に生成および更新します。2019年秋の時点で、RancherのHAデプロイメントを持っている場合に対処する必要があるcert-managerに関する3つの重要な変更が行われる予定です:

これらの変更に対処するために、このガイドは2つのことを行います:

  1. cert-managerのアップグレード手順を文書化します。

  2. cert-manager APIの変更を説明し、データの移行のためのcert-managerの公式ドキュメントへのリンクを提供します。

重要:

cert-managerを1.5より古いバージョンから最新バージョンにアップグレードする場合は、以下のオプションCの手順に従ってください。このアップグレードを実行するためにRancherを再インストールする必要はありません。

cert-managerのアップグレード

これらの指示で使用されるネームスペースは、cert-managerが現在インストールされているネームスペースに依存します。それがkube-systemにある場合は、以下の指示でそれを使用してください。`kubectl get pods --all-namespaces`を実行して、cert-manager-*ポッドがリストされている名前空間を確認できます。cert-managerが実行されているネームスペースを変更しないでください。そうしないと問題が発生する可能性があります。

cert-managerをアップグレードするには、これらの指示に従ってください:

オプションA:インターネットアクセスで cert-manager をアップグレードする

クリックして開く
  1. 既存のリソースをバックアップ(予防策として)

     kubectl get -o yaml --all-namespaces \
     issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yaml
    重要:

    0.11.0 より古いバージョンからアップグレードする場合は、バックアップしたすべてのリソースの apiVersion を certmanager.k8s.io/v1alpha1 から cert-manager.io/v1alpha2 に更新してください。他のリソースに cert-manager のアノテーションを使用している場合は、新しい API グループを反映するようにそれらを更新する必要があります。詳細については、 追加のアノテーション変更に関するドキュメントを参照してください。

  2. 既存のデプロイメントをアンインストール

     helm uninstall cert-manager

    インストールしたバージョン vX.Y.Z のリンクを使用して CustomResourceDefinition を削除します。

     kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yaml
  3. CustomResourceDefinition リソースを別々にインストールします。

     kubectl apply --validate=false -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yaml

    Kubernetes v1.15 以下を実行している場合は、上記の kubectl apply コマンドに --validate=false フラグを追加する必要があります。そうしないと、cert-manager の CustomResourceDefinition リソースの x-kubernetes-preserve-unknown-fields フィールドに関連する検証エラーが発生します。これは無害なエラーで、kubectl がリソースの検証を行う方法によって発生します。

  4. 必要に応じて cert-manager のためのネームスペースを作成します。

     kubectl create namespace cert-manager
  5. Jetstack Helm リポジトリを追加します。

     helm repo add jetstack https://charts.jetstack.io
  6. ローカル Helm チャートリポジトリのキャッシュを更新します。

    helm repo update
  7. 新しいバージョンの cert-manager をインストールします。

     helm install \
       cert-manager jetstack/cert-manager \
       --namespace cert-manager
  8. バックアップリソースを復元

     kubectl apply -f cert-manager-backup.yaml

オプション B:エアギャップ環境で cert-manager をアップグレードする

クリックして開く

=== 前提条件

アップグレードを実行する前に、必要なコンテナイメージをプライベートレジストリに追加し、必要な Kubernetes マニフェストファイルをダウンロードまたはレンダリングして、エアギャップ環境を準備する必要があります。

  1. プライベートレジストリの準備に必要なコンテナイメージを使ってガイドに従ってください。

  2. インターネットに接続されたシステムから、Helm に cert-manager リポジトリを追加します。

     helm repo add jetstack https://charts.jetstack.io
     helm repo update
  3. Helm チャートリポジトリから最新の cert-manager チャートを取得します。

     helm fetch jetstack/cert-manager
  4. チャートをインストールするために使用したいオプションでcert-managerテンプレートをレンダリングします。プライベートレジストリから画像を取得するために`image.repository`オプションを設定することを忘れないでください。これにより、Kubernetesマニフェストファイルを含む`cert-manager`ディレクトリが作成されます。

    Helm 3コマンドは次のとおりです:

     helm template cert-manager ./cert-manager-v0.12.0.tgz --output-dir . \
     --namespace cert-manager \
     --set image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-controller
     --set webhook.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-webhook
     --set cainjector.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-cainjector
  5. cert-managerの必要なCRDファイル(古いものと新しいもの)をダウンロードします。

     curl -L -o cert-manager-crd.yaml https://raw.githubusercontent.com/cert-manager/cert-manager/release-0.12/deploy/manifests/00-crds.yaml
     curl -L -o cert-manager/cert-manager-crd-old.yaml https://raw.githubusercontent.com/cert-manager/cert-manager/release-X.Y/deploy/manifests/00-crds.yaml

=== cert-managerをインストールします。

  1. 予防策として、既存のリソースをバックアップします。

     kubectl get -o yaml --all-namespaces \
     issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yaml
    重要:

    0.11.0 より古いバージョンからアップグレードする場合は、バックアップしたすべてのリソースの apiVersion を certmanager.k8s.io/v1alpha1 から cert-manager.io/v1alpha2 に更新してください。他のリソースに cert-manager のアノテーションを使用している場合は、新しい API グループを反映するようにそれらを更新する必要があります。詳細については、 追加のアノテーション変更に関するドキュメントを参照してください。

  2. 既存のcert-managerインストールを削除します。

     kubectl -n cert-manager \
     delete deployment,sa,clusterrole,clusterrolebinding \
     -l 'app=cert-manager' -l 'chart=cert-manager-v0.5.2'

    インストールしたバージョンvX.Yへのリンクを使用してCustomResourceDefinitionを削除します。

     kubectl delete -f cert-manager/cert-manager-crd-old.yaml
  3. CustomResourceDefinition リソースを別々にインストールします。

     kubectl apply -f cert-manager/cert-manager-crd.yaml
    重要:

    Kubernetes v1.15 以下を実行している場合は、上記の kubectl apply コマンドに --validate=false フラグを追加する必要があります。そうしないと、cert-manager の CustomResourceDefinition リソースの x-kubernetes-preserve-unknown-fields フィールドに関連する検証エラーが発生します。これは無害なエラーで、kubectl がリソースの検証を行う方法によって発生します。

  4. cert-manager用のネームスペースを作成します。

     kubectl create namespace cert-manager
  5. cert-managerをインストールします。

     kubectl -n cert-manager apply -R -f ./cert-manager
  6. バックアップリソースを復元

     kubectl apply -f cert-manager-backup.yaml

オプションC:バージョン1.5およびそれ以下からcert-managerをアップグレードします。

クリックして開く

以前は、古いバージョンからcert-managerをアップグレードするために、Rancherのアンインストールと再インストールが推奨されていました。以下の方法を使用することで、追加の手順なしでcert-managerをアップグレードし、プロダクション環境をより良く保護できます:

  1. cert-manager CLIツールである`cmctl`を、 インストールガイドに従ってインストールします。

  2. etcdに保存されている可能性のある、廃止対象のAPIバージョンのcert-managerカスタムリソースがv1に移行されることを確認してください:

     cmctl upgrade migrate-api-version
  3. cert-managerをv1.7.1に通常の`helm upgrade`でアップグレードします。必要に応じて、バージョン1.5から1.7に直接移行できます。

  4. Helmのチュートリアルに従って、 リリースマニフェストのAPIバージョンを更新します。チャートリリース名は`release_name=rancher`で、リリースネームスペースは`release_namespace=cattle-system`です。

  5. デコードされたファイルで、`cert-manager.io/v1beta1`を検索し、それを `cert-manager.io/v1`に置き換えます。

  6. 通常の`helm upgrade`でRancherをアップグレードします。

デプロイメントを確認します。

cert-managerをインストールしたら、kube-systemネームスペースで実行中のポッドを確認することで、正しくデプロイされているかを確認できます。

kubectl get pods --namespace cert-manager

NAME                                       READY   STATUS    RESTARTS   AGE
cert-manager-5c6866597-zw7kh               1/1     Running   0          2m
cert-manager-cainjector-577f6d9fd7-tr77l   1/1     Running   0          2m
cert-manager-webhook-787858fcdb-nlzsq      1/1     Running   0          2m

cert-manager APIの変更とデータ移行


Rancherは現在、cert-managerのバージョン1.6.2および1.7.1をサポートしています。v1.7.xを推奨します。なぜなら、v1.6.xは2022年3月30日にサービス終了となるからです。詳細を読むには、cert-managerのドキュメントを参照してください。cert-managerをバージョン1.5から1.6にアップグレードする手順については、アップストリームのcert-managerドキュメント こちらを参照してください。cert-managerをバージョン1.6から1.7にアップグレードする手順については、アップストリームのcert-managerドキュメント こちらを参照してください。


cert-managerは`certificate.spec.acme.solvers`フィールドの使用を廃止し、今後のリリースでそのサポートを完全に削除します。

cert-managerのドキュメントによると、ACME証明書リソースを設定するための新しいフォーマットがv0.8で導入されました。具体的には、チャレンジソルバーの設定フィールドが移動されました。古いフォーマットと新しいフォーマットの両方がv0.9からサポートされていますが、古いフォーマットのサポートはcert-managerの今後のリリースで削除されます。cert-managerのドキュメントは、アップグレード後にACME発行者および証明書リソースを新しいフォーマットに更新することを強く推奨しています。

変更の詳細と移行手順については、 cert-manager v0.7からv0.8へのアップグレード手順を参照してください。

v0.11リリースでは、以前のcert-managerバージョンで使用されていたv1alpha1 APIが削除され、APIグループがcertmanager.k8s.ioからcert-manager.ioに変更されました。

また、v0.8リリースで非推奨となった古いフォーマットのサポートも削除されました。これは、v0.11にアップグレードする前に、ACME発行者向けに新しいソルバー方式の設定フォーマットへ移行する必要があることを意味します。詳細については、 v0.8へのアップグレードガイドをご覧ください。

変更の詳細と移行手順については、 cert-manager v0.10からv0.11へのアップグレード手順をご覧ください。

cert-managerのアップグレード情報の詳細については、 こちらをご覧ください。