2.10. Ingress 証明書
目的
Ingress Operator は以下の目的で証明書を使用します。
- Prometheus のメトリクスへのアクセスのセキュリティーを保護する。
- ルートへのアクセスのセキュリティーを保護する。
場所
Ingress Operator および Ingress コントローラーメトリクスへのアクセスのセキュリティーを保護するために、Ingress Operator はサービス提供証明書を使用します。Operator は独自のメトリクスについて service-ca
コントローラーから証明書を要求し、service-ca
コントローラーは証明書を openshift-ingress-operator
namespace の metrics-tls
という名前のシークレットに配置します。さらに、Ingress Operator は各 Ingress コントローラーの証明書を要求し、service-ca
コントローラーは証明書を router-metrics-certs-<name>
という名前のシークレットに配置します。ここで、<name>
は openshift-ingress
namespace の Ingress コントローラーの名前です。
各 Ingress コントローラーには、独自の証明書を指定しないセキュリティー保護されたルートに使用するデフォルト証明書があります。カスタム証明書を指定しない場合、Operator はデフォルトで自己署名証明書を使用します。Operator は独自の自己署名証明書を使用して、生成するデフォルト証明書に署名します。Operator はこの署名証明書を生成し、これを openshift-ingress-operator
namespace の router-ca
という名前のシークレットに配置します。Operator がデフォルトの証明書を生成する際に、デフォルト証明書を openshift-ingress
namespace の router-certs-<name>
という名前のシークレットに配置します(ここで、 <name>
は Ingress コントローラーの名前です)。
Ingress Operator は、カスタムのデフォルト証明書を設定するまで、プレースホルダーとして機能する Ingress コントローラーのデフォルト証明書を生成します。実稼働クラスターで Operator が生成するデフォルト証明書は使用しないでください。
ワークフロー
図2.1 カスタム証明書のワークフロー
図2.2 デフォルトの証明書ワークフロー
空の defaultCertificate
フィールドにより、Ingress Operator はその自己署名 CA を使用して指定されたドメインの提供証明書を生成します。
Ingress Operator によって生成されるデフォルトの CA 証明書およびキー。Operator が生成するデフォルトの提供証明書に署名するために使用されます。
デフォルトのワークフローでは、Ingress Operator によって作成され、生成されるデフォルト CA 証明書を使用して署名されるワイルドカードのデフォルト提供証明書です。カスタムワークフローでは、これはユーザーによって提供される証明書です。
ルーターのデプロイメント。secrets/router-certs-default
の証明書を、デフォルトのフロントエンドサーバー証明書として使用します。
デフォルトのワークフローでは、ワイルドカードのデフォルト提供証明書(パブリックおよびプライベートの部分)の内容がここにコピーされ、OAuth 統合が有効になります。カスタムワークフローでは、これはユーザーによって提供される証明書です。
Operator が生成するデフォルト CA 証明書の証明書(パブリックの部分)を含む移行リソースは、信頼を確立するために OAuth および Web コンソールによって読み取られます。このオブジェクトは、今後のリリースで削除されます。
デフォルト提供証明書のパブリック (証明書) の部分です。configmaps/router-ca
リソースを置き換えます。
ユーザーは ingresscontroller
提供証明書に署名した CA 証明書でクラスタープロキシー設定を更新します。これにより、auth
、console
などのコンポーネントや、提供証明書を信頼するために使用するレジストリーが有効になります。
ユーザーバンドルが指定されていない場合に、組み合わせた Red Hat Enterprise Linux CoreOS (RHCOS) およびユーザーによって提供される CA バンドルまたは RHCOS のみのバンドルを含むクラスター全体の信頼される CA バンドルです。
他のコンポーネント (auth
および console
など) がカスタム証明書で設定された ingresscontroller
を信頼するよう指示するカスタム CA 証明書バンドルです。
trustedCA
フィールドは、ユーザーによって提供される CA バンドルを参照するように使用されます。
Cluster Network Operator は、信頼される CA バンドルを proxy-ca
ConfigMap に挿入します。
OpenShift Container Platform 4.3 以前のバージョンでは router-ca
を使用します。
有効期限
Ingress Operator の証明書の有効期限は以下の通りです。
-
service-ca
コントローラーが作成するメトリクス証明書の有効期限は、作成日から 2 年間です。 - Operator の署名証明書の有効期限は、作成日から 2 年間です。
- Operator が生成するデフォルト証明書の有効期限は、作成日から 2 年間です。
Ingress Operator または service-ca
コントローラーが作成する証明書のカスタム有効期限を指定することはできません。
Ingress Operator または service-ca
コントローラーが作成する証明書について OpenShift Container Platform をインストールする場合に、有効期限を指定することはできません。
サービス
Prometheus はメトリクスのセキュリティーを保護する証明書を使用します。
Ingress Operator はその署名証明書を使用して、カスタムのデフォルト証明書を設定しない Ingress コントローラー用に生成するデフォルト証明書に署名します。
セキュリティー保護されたルートを使用するクラスターコンポーネントは、デフォルトの Ingress コントローラーのデフォルト証明書を使用できます。
セキュリティー保護されたルート経由でのクラスターへの Ingress は、ルートが独自の証明書を指定しない限り、ルートがアクセスされる Ingress コントローラーのデフォルト証明書を使用します。
管理
Ingress 証明書はユーザーによって管理されます。詳細は、「デフォルト ingress 証明書の置き換え」を参照してください。
更新
service-ca
コントローラーは、これが発行する証明書を自動的にローテーションします。ただし、oc delete secret <secret>
を使用してサービス提供証明書を手動でローテーションすることができます。
Ingress Operator は、独自の署名証明書または生成するデフォルト証明書をローテーションしません。Operator が生成するデフォルト証明書は、設定するカスタムデフォルト証明書のプレースホルダーとして使用されます。