4.2. cert-manager のインストール
istio-csr
をデプロイし、次に istio-csr
エージェントを使用してワークロードとコントロールプレーンの証明書署名要求を処理する Istio
リソースを作成して、cert-manager を OpenShift Service Mesh と統合できます。この例では、自己署名の Issuer
を作成しますが、代わりに他の Issuer
を使用することもできます。
Istio
リソースをインストールする前に、cert-manager をインストールする必要があります。
手順
次のコマンドを実行して、
istio-system
namespace を作成します。oc create namespace istio-system
$ oc create namespace istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML ファイルに
Issuer
オブジェクトを作成して、ルート発行者を作成します。次の例のような
Issuer
オブジェクトを作成します。issuer.yaml
ファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してオブジェクトを作成します。
oc apply -f issuer.yaml
$ oc apply -f issuer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
istio-ca
証明書に "Ready" というステータスの状態が含まれるまで待ちます。oc wait --for=condition=Ready certificates/istio-ca -n istio-system
$ oc wait --for=condition=Ready certificates/istio-ca -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
istio-ca
証明書をcert-manager
namespace にコピーして、istio-csr で使用できるようにします。次のコマンドを実行して、シークレットをローカルファイルにコピーします。
oc get -n istio-system secret istio-ca -o jsonpath='{.data.tls\.crt}' | base64 -d > ca.pem
$ oc get -n istio-system secret istio-ca -o jsonpath='{.data.tls\.crt}' | base64 -d > ca.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
cert-manager
namespace のローカル証明書ファイルからシークレットを作成します。oc create secret generic -n cert-manager istio-root-ca --from-file=ca.pem=ca.pem
$ oc create secret generic -n cert-manager istio-root-ca --from-file=ca.pem=ca.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
istio-csr
をインストールするには、必要な更新ストラテジーの種類に応じた istio-csr
インストール手順に従う必要があります。デフォルトでは、Istio
リソースを作成してインストールするときに、spec.updateStrategy
は InPlace
に設定されます。istio-csr
をインストールした後、Istio
リソースを作成してインストールします。
4.2.1. インプレース更新ストラテジーを使用して istio-csr エージェントをインストールする リンクのコピーリンクがクリップボードにコピーされました!
Istio リソースは、デフォルトでインプレース更新ストラテジーを使用します。Istio
リソースを作成してインストールするときに spec.updateStrategy
を InPlace
のままにしておく場合は、この手順に従ってください。
手順
次のコマンドを実行して、Jetstack チャートリポジトリーをローカル Helm リポジトリーに追加します。
helm repo add jetstack https://charts.jetstack.io --force-update
$ helm repo add jetstack https://charts.jetstack.io --force-update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して
istio-csr
チャートをインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
4.2.2. リビジョンベースの更新ストラテジーを使用して istio-csr エージェントをインストールする リンクのコピーリンクがクリップボードにコピーされました!
Istio リソースは、デフォルトでインプレース更新ストラテジーを使用します。Istio
リソースを作成してインストールするときに spec.updateStrategy
を RevisionBased
に変更する予定の場合は、この手順に従ってください。
手順
-
istio-csr
デプロイメントにすべての Istio リビジョンを指定します。「istio-csr デプロイメント」を参照してください。 次のコマンドを実行して、Jetstack チャートをローカル Helm リポジトリーに追加します。
helm repo add jetstack https://charts.jetstack.io --force-update
$ helm repo add jetstack https://charts.jetstack.io --force-update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、リビジョン名で
istio-csr
チャートをインストールします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記リビジョン名は、
<istio-name>-v<major_version>-<minor_version>-<patch_version>
という形式を使用します。例:default-v1-24-3
関連情報
次のステップ
4.2.3. Istio リソースのインストール リンクのコピーリンクがクリップボードにコピーされました!
インプレースまたはリビジョンベースの更新ストラテジーの手順に従って istio-csr
をインストールした後、Istio
リソースをインストールできます。
Istio の組み込み CA サーバーを無効にし、istio-csr
CA サーバーを使用するように istiod に指示する必要があります。istio-csr
CA サーバーは、istiod とユーザーワークロードの両方に対して証明書を発行します。
手順
次の例に示すように、
Istio
オブジェクトを作成します。istio.yaml
オブジェクトの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記リビジョンベースの更新ストラテジーを使用して CSR エージェントをインストールした場合は、
Istio
オブジェクト YAML に以下を追加する必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して
Istio
リソースを作成します。oc apply -f istio.yaml
$ oc apply -f istio.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
Istio
オブジェクトの準備が整うまで待ちます。oc wait --for=condition=Ready istios/default -n istio-system
$ oc wait --for=condition=Ready istios/default -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.4. cert-manager のインストールの確認 リンクのコピーリンクがクリップボードにコピーされました!
サンプルの httpbin
サービスと sleep
アプリケーションを使用して、ワークロード間の通信を確認できます。プロキシーのワークロード証明書をチェックして、cert-manager ツールが正しくインストールされていることを確認することもできます。
手順
次のコマンドを実行して
sample
namespace を作成します。oc new-project sample
$ oc new-project sample
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、アクティブな Istio リビジョンを見つけます。
oc get istios default -o jsonpath='{.status.activeRevisionName}'
$ oc get istios default -o jsonpath='{.status.activeRevisionName}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、アクティブなリビジョンのインジェクションラベルを
sample
namespace に追加します。oc label namespace sample istio.io/rev=<your-active-revision-name> --overwrite=true
$ oc label namespace sample istio.io/rev=<your-active-revision-name> --overwrite=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、サンプル
httpbin
サービスをデプロイします。oc apply -n sample -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/httpbin/httpbin.yaml
$ oc apply -n sample -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/httpbin/httpbin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、サンプルの
sleep
アプリケーションをデプロイします。oc apply -n sample -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/sleep/sleep.yaml
$ oc apply -n sample -f https://raw.githubusercontent.com/openshift-service-mesh/istio/refs/heads/master/samples/sleep/sleep.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、両方のアプリケーションの準備が完了するまで待ちます。
oc rollout status -n sample deployment httpbin sleep
$ oc rollout status -n sample deployment httpbin sleep
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
sleep
アプリケーションがhttpbin
サービスにアクセスできることを確認します。oc exec "$(oc get pod -l app=sleep -n sample \ -o jsonpath={.items..metadata.name})" -c sleep -n sample -- \ curl http://httpbin.sample:8000/ip -s -o /dev/null \ -w "%{http_code}\n"
$ oc exec "$(oc get pod -l app=sleep -n sample \ -o jsonpath={.items..metadata.name})" -c sleep -n sample -- \ curl http://httpbin.sample:8000/ip -s -o /dev/null \ -w "%{http_code}\n"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功した出力の例
200
200
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
httpbin
サービスのワークロード証明書を出力し、その出力を確認します。istioctl proxy-config secret -n sample $(oc get pods -n sample -o jsonpath='{.items..metadata.name}' --selector app=httpbin) -o json | jq -r '.dynamicActiveSecrets[0].secret.tlsCertificate.certificateChain.inlineBytes' | base64 --decode | openssl x509 -text -noout
$ istioctl proxy-config secret -n sample $(oc get pods -n sample -o jsonpath='{.items..metadata.name}' --selector app=httpbin) -o json | jq -r '.dynamicActiveSecrets[0].secret.tlsCertificate.certificateChain.inlineBytes' | base64 --decode | openssl x509 -text -noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
... Issuer: O = cert-manager + O = cluster.local, CN = istio-ca ... X509v3 Subject Alternative Name: URI:spiffe://cluster.local/ns/sample/sa/httpbin
... Issuer: O = cert-manager + O = cluster.local, CN = istio-ca ... X509v3 Subject Alternative Name: URI:spiffe://cluster.local/ns/sample/sa/httpbin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow