はじめに
Red Hat OpenShift Service Mesh(2.1.0-0 provided by Red Hat, Inc)Operatorにて特定のnamespaceにIstioのサイドカーを付与する流れについて記載しました。
環境情報
- Openshift v4.6
- Red Hat OpenShift Service Mesh(2.1.0-0 provided by Red Hat, Inc)Operator
事前準備
ServiceMeshControlPlaneを事前に作成しておき
$ oc get smcp -n istio-system NAME READY STATUS PROFILES VERSION AGE basic 10/10 ComponentsReady ["default"] 2.1.0 4h28m
Istioサイドカーを付与するためのnamespaceにテスト用のDeploymentを用意しました。
$ oc get deploy -n istio-test NAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 29m
sidecar.istio.ioを付与
ServiceMeshControlPlaneとOpenShiftのprojectを紐づけするためにServiceMeshMemberRollを作成します。
Installed OperatorsのRed Hat OpenShift Service Meshにて"ServiceMeshMemberRolls"にて以下のYAMLを適用すると
apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: namespace: istio-system name: default spec: members: - istio-test
ServiceMeshMemberRollが生成されます。
$ oc get smmr -n istio-system NAME READY STATUS AGE default 1/1 Configured 7m33s
この状態ではまだmembersに記載したプロジェクトにサイドカーは入りませんがDeploymentに以下のアノテーションを付与すると
spec: template: metadata: annotations: sidecar.istio.io/inject: "true"
サイドカーが付与されてPodが起動します。
$ oc edit deploy nginx -n istio-test deployment.apps/nginx edited $ oc get pod -n istio-test NAME READY STATUS RESTARTS AGE nginx-67776d7db-gs7bj 2/2 Running 0 14s nginx-774589478c-gvw96 1/1 Terminating 0 5m18s
尚、この状態でServiceMeshMemberRollを削除するとコンテナが再度起動するタイミングでサイドカーは外れます。
終わりに
OpenShift Service MeshではPodにAnnotationを付与することで、サービスメッシュが利用できます。
ただ、ポイントとしては事前にServiceMeshMemberRollにて名前空間を登録しておく必要がある点は覚えておきたいです。
以上、ご参考になれば幸いです。