サイドカーを使わないアプリケーション用の証明書と鍵のプロビジョニング

マウントされたファイルを使用してアプリケーションの証明書と鍵を取得および共有するメカニズム。

2020 年 3 月 25 日 | 著者 Lei Tang (Google)

Istio サイドカーは、シークレット検出サービスを使用して証明書を取得します。サービスメッシュ内のサービスでは、トラフィックを処理する Envoy サイドカーが必要または望まれない可能性があります。この場合、他の TLS または相互 TLS で保護されたサービスに接続する場合は、サービス自体が証明書を取得する必要があります。

トラフィックを管理するためのサイドカーを必要としないサービスの場合は、CA からの CSR フローを使用して秘密鍵と証明書をプロビジョニングするためだけにサイドカーをデプロイし、マウントされたファイルを使用して証明書を tmpfs 内のサービスと共有できます。このメカニズムを使用して証明書をプロビジョニングするための例として Prometheus を使用しました。

例のアプリケーション(Prometheus など)では、フラグ .Values.prometheus.provisionPrometheusCerttrue に設定して Prometheus デプロイメントにサイドカーを追加しています(このフラグは Istio インストール時にデフォルトで true に設定されます)。デプロイされたこのサイドカーはその後、Prometheus から証明書を取得して共有します。

例アプリケーション用にプロビジョニングされた鍵と証明書は、ディレクトリ /etc/istio-certs/ にマウントされます。次のコマンドを実行して、アプリケーション用にプロビジョニングされた鍵と証明書を一覧表示できます。

$ kubectl exec -it `kubectl get pod -l app=prometheus -n istio-system -o jsonpath='{.items[0].metadata.name}'` -c prometheus -n istio-system -- ls -la /etc/istio-certs/

上記のコマンドからの出力には、次のような空ではない鍵ファイルと証明書ファイルが含まれるはずです。

-rwxr-xr-x    1 root     root          2209 Feb 25 13:06 cert-chain.pem
-rwxr-xr-x    1 root     root          1679 Feb 25 13:06 key.pem
-rwxr-xr-x    1 root     root          1054 Feb 25 13:06 root-cert.pem

このメカニズムを使用して独自のアプリケーション用の証明書をプロビジョニングする場合は、Prometheus の例アプリケーションを参照して、同じパターンに従ってください。

この投稿を共有する