Red Hatの中山です。先日、OpenShift Service Mesh 1.0 が GA になったので、インストールしてみます。
OpenShift 4の他のOperatorと同様、ServiceMeshはOperatorHubからインストールするのですが、今回は、すべてコマンドラインからインストールします。ドキュメントには、GUIからインストールする方法が書かれているので、GUIがお好きな方はドキュメントを読みながらGUIからインストールしてみてください。
インストールコマンドの実行には、cluster-adminかそれ相当の権限が必要になります。
最初に、ServiceMeshのオペレーターをインストールします。CatalogSourceConfigとSubscriptionを作ります。
cat <<EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: CatalogSourceConfig metadata: name: ci-operators namespace: openshift-marketplace spec: targetNamespace: openshift-operators packages: elasticsearch-operator,jaeger-product,kiali-ossm,servicemeshoperator source: redhat-operators --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: elasticsearch-operator namespace: openshift-operators spec: channel: preview name: elasticsearch-operator source: ci-operators sourceNamespace: openshift-operators --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: jaeger-product namespace: openshift-operators spec: channel: stable name: jaeger-product source: ci-operators sourceNamespace: openshift-operators --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: kiali-ossm namespace: openshift-operators spec: channel: stable name: kiali-ossm source: ci-operators sourceNamespace: openshift-operators --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: servicemeshoperator namespace: openshift-operators spec: channel: "1.0" name: servicemeshoperator source: ci-operators sourceNamespace: openshift-operators EOF
openshift-operatorsプロジェクトで、以下の4つのPodがRunning状態になればOKです。ElasticSearch、Jaeger、Kialiは不要なんですけど...と言う方も、現時点(1.0GA時)では、Operatorのインストールが必要になります。ただ、Operatorのインストールが必要となるだけで、これら3つが不要な場合には、実際のインスタンスをインストールする必要はありません。実際、今回の手順では、ElasticSearch、Jaeger、Kialiはインストールしません。
$ oc get pod -n openshift-operators NAME READY STATUS RESTARTS AGE elasticsearch-operator-54b656cbb4-9bwdn 1/1 Running 0 11m istio-operator-64f969655b-vwnks 1/1 Running 0 11m jaeger-operator-55f47cccbc-x99rn 1/1 Running 0 11m kiali-operator-865b8cfc7b-kbm69 1/1 Running 0 11m
Opeeratorのインストールが終れば、あとは簡単、ServiceMeshControlPlaneを作成して、istioのPodをデプロイするだけです。今回は、最小限で以下の構成にします。
oc new-project istio-system cat <<EOF | oc apply -f - apiVersion: maistra.io/v1 kind: ServiceMeshControlPlane metadata: name: minimal-multitenant-cni-install namespace: istio-system spec: istio: global: multitenant: true proxy: autoInject: disabled omitSidecarInjectorConfigMap: true disablePolicyChecks: false defaultPodDisruptionBudget: enabled: false istio_cni: enabled: true gateways: istio-ingressgateway: autoscaleEnabled: false type: LoadBalancer istio-egressgateway: enabled: false cluster-local-gateway: autoscaleEnabled: false enabled: true labels: app: cluster-local-gateway istio: cluster-local-gateway ports: - name: status-port port: 15020 - name: http2 port: 80 targetPort: 8080 - name: https port: 443 mixer: enabled: false policy: enabled: false telemetry: enabled: false pilot: autoscaleEnabled: false sidecar: false kiali: enabled: false tracing: enabled: false prometheus: enabled: false grafana: enabled: false sidecarInjectorWebhook: enabled: false EOF
上記の構成でデプロイすると、istio-system
プロジェクトに、以下のPodが起動します。
$ oc get pod -n istio-system NAME READY STATUS RESTARTS AGE cluster-local-gateway-76cc6d67c4-z8g86 1/1 Running 0 67m istio-citadel-7cb44f4bb-khr2d 1/1 Running 0 68m istio-galley-75599dbc67-k9z2c 1/1 Running 0 68m istio-ingressgateway-769c96c46f-lp9zf 1/1 Running 0 67m istio-pilot-7c7dd546f9-mfnzq 1/1 Running 0 67m
以上で、インストールが終わりました。OpenShift 4共通に言えることですが、Operatorを利用しているため、インストールはとても簡単です。Istio定番のbookinfoアプリなんかで遊んでみてください。ドキュメントもあります。
ちょっとした注意点として、ドキュメントにも書かれていますが、OpenShiftでServiceMeshをインストールする場合、CNIプラグインを有効化しているので、ServiceMeshMemberRoll
というリソースを作ってcontrol planeとsidecarのやり取りを許可する必要があります。例えば、bookinfoプロジェクトを利用する場合は、以下の設定を忘れずに。
cat <<EOF | oc apply -f - apiVersion: maistra.io/v1 kind: ServiceMeshMemberRoll metadata: name: default namespace: istio-system spec: members: - bookinfo EOF
最後に、今回の記事は説明が少ないし、「やってみた(だけ)」記事だし、ServiceMeshインストールして、この後どうすれば良いか分からない、という方!次回の「OpenShift Meetup Tokyo」は、Service Mesh & Serverless 特集です。ぜひ、参加して更なる深い話を聞いたり、参加者で情報を共有しましょう。