9.8.3. Ingress コントローラーの証明書を作成する
Ingress Controller 用の証明書を作成し、ブートストラップされたデフォルトの自己署名証明書を、cert-manager で管理される外部証明書に置き換えることができます。
この手順を実行する前に、以下の Ingress Controller の動作を理解していることを確認してください。
- cert-manager Operator を使用して証明書を更新またはローテーションする場合、証明書やキーなどのシークレットの内容のみが更新されます。秘密の名前は変更されない。Kubelet はこれらの更新をマウントされたボリュームに自動的に反映するため、ルーターはファイルの変更を検出し、新しい証明書とキーをホットリロードできます。その結果、ルーターデプロイメントのローリングアップデートはトリガーされず、また必要もありません。
- 秘密の名前は、イングレスコントローラーの設定で参照されます。デフォルトの Ingress 証明書を置き換えたり、イングレスコントローラーの設定で別のシークレット名を使用したりする場合は、変更を適用するために設定をパッチ適用または編集する必要があります。この操作により、ルーター Pod のローリングアップデートがトリガーされ、新しいルーター Pod は新しい証明書/鍵ペアをロードします。
詳細は、この Red Hat Knowledgebase Solution を参照してください。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - cert-manager Operator for Red Hat OpenShift のバージョン 1.13.0 以降がインストールされている。
手順
- 発行者を作成します。詳細は、「関連情報」セクションの「発行者の設定」を参照してください。
証明書を作成します。
Certificateオブジェクトを定義する YAML ファイル (例:certificate.yaml) を作成します。certificate.yamlファイルの例apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: <tls_cert> namespace: openshift-ingress spec: isCA: false commonName: "apps.<cluster_base_domain>" secretName: <secret_name> dnsNames: - "apps.<cluster_base_domain>" - "\*.apps.<cluster_base_domain>" issuerRef: name: <issuer_name> kind: Issuerここでは、以下のようになります。
<tls_cert>- 証明書の名前を指定します。
<cluster_base_domain>- 共通名 (CN) を指定します。
<secret_name>- 証明書を含むシークレットを作成する際の名前を指定します。
<cluster_base_domain>- Ingress の DNS 名を指定します。
< 発行者名 >- 発行者の名前を指定します。
次のコマンドを実行して、
Certificateオブジェクトを作成します。$ oc create -f certificate.yaml
- デフォルトの ingress 証明書を置き換えます。詳細は、「関連情報」セクションの「デフォルトの ingress 証明書を置き換える」セクションを参照してください。
検証
次のコマンドを実行して、証明書が作成され、使用できる状態になっていることを確認します。
$ oc get certificate -n openshift-ingress以下のコマンドを実行して、秘密オブジェクトの定義と内容を確認してください。
$ oc get secret <secretName> -n openshift-ingress以下のコマンドを実行して、デフォルトの TLS 証明書に Ingress コントローラーの正しい設定情報が含まれていることを確認してください。
$ oc get ingresscontroller default -n openshift-ingress-operator -o yaml | grep -A2 defaultCertificate証明書が
準備完了状態になると、クラスター上のイングレスコントローラーは生成された証明書シークレットの使用を開始できます。