(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Istio/Openshift】ServiceMeshOperatorを利用してistioサイドカーを付与する

スポンサーリンク

はじめに

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にて名前空間を登録しておく必要がある点は覚えておきたいです。

以上、ご参考になれば幸いです。