Skip to content

RHACM GitOps: Install Service Mesh Operator and Configure a default control plan

Avatar photo


This blog shows how to use RHACM GitOps to install Service Mesh and configure the default control plan.

If your hub and managed clusters are not ready, please refer to https://www.techbeatly.com/install-the-rhacm-operator-import-an-existing-cluster-deploy-a-new-cluster/ for environment setup.

Below are the clusters we use here.

The “local-cluster” is the hub server. The 2 managed clusters are “bn7z2-m-dev” and “bn7z2-m-dev-01” with the label “purpose=development”.

GitOps – tempaltes on github

$ git clone https://github.com/alpha-wolf-jin/mesh-apps.git

$ tree ./mesh-apps/
./mesh-apps/
├── elastic-operator
│   └── elasticsearch.yaml
├── jaeger-operator
│   └── jaeger-operator.yaml
├── kiali-servicemesh-operator
│   └── kiali-servicemesh-operator.yaml
├── mesh
│   └── smcp-basic.yaml
└── README.md

Templates used for Service Mesh:

elasticsearch.yaml

Create a Subscription object YAML file to subscribe to elasticsearch-operator in the openshift-operators-redhat namespace.

$ cat elastic-operator/elasticsearch.yaml 
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: elasticsearch-operator
  namespace: openshift-operators-redhat
spec:
  channel: stable
  installPlanApproval: Automatic
  name: elasticsearch-operator
  source: redhat-operators
  sourceNamespace: openshift-marketplace

jaeger.yaml

Create a Subscription object YAML file to subscribe to the jaeger-product in the openshift-distributed-tracing namespace.

$ cat jaeger-operator/jaeger-operator.yaml 
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: jaeger-product
  namespace: openshift-distributed-tracing
spec:
  channel: stable
  installPlanApproval: Automatic
  name: jaeger-product
  source: redhat-operators
  sourceNamespace: openshift-marketplace

kiali-servicemesh-operator.yaml

Create a Subscription object YAML file to subscribe to the kiali-ossm & servicemeshoperator Operators in the openshift-operators namespace.

$ cat kiali-servicemesh-operator/kiali-servicemesh-operator.yaml 
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: kiali-ossm
  namespace: openshift-operators
spec:
  channel: stable
  installPlanApproval: Automatic
  name: kiali-ossm
  source: redhat-operators
  sourceNamespace: openshift-marketplace
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: servicemeshoperator
  namespace: openshift-operators
spec:
  channel: stable
  installPlanApproval: Automatic
  name: servicemeshoperator
  source: redhat-operators
  sourceNamespace: openshift-marketplace

smcp-basic.yaml

Create a ServiceMeshControlPlane object basic in namespace istio-system.

$ cat mesh/smcp-basic.yaml 
---
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic 
  namespace: istio-system 
spec:
  version: v2.2
  gateways: 
    egress:
      enabled: true
      runtime:
        deployment:
          autoScaling:
            enabled: false
    ingress:
      enabled: true
      runtime:
        deployment:
          autoScaling:
            enabled: false

  tracing: 
    sampling: 10000
    type: Jaeger

  telemetry:
    type: Istiod

  policy:
    type: Istiod

  addons:
    grafana: 
      enabled: true
    jaeger: 
      install:
        storage:
          type: Memory
    kiali: 
      enabled: true

Managing Multicluster Service Mesh with RHACM GitOps

Application – elastic

Use RHACM GitOps to create a new elastic application based on the following criteria

FieldValue
Nameelastic
Namespaceopenshift-operators-redhat
Repository typesGit
URLhttps://github.com/alpha-wolf-jin/mesh-apps/
Branchmain
Pathelastic-operator
Labelpurpose
Valuedevelopment
Deployment windowAlways Active

Click “Create

Application – jaeger-product

Use RHACM GitOps to create a new jaeger-product application based on the following criteria

FieldValue
Namejaeger-product
Namespaceopenshift-distributed-tracing
Repository typesGit
URLhttps://github.com/alpha-wolf-jin/mesh-apps/
Branchmain
Pathjaeger-operator
Labelpurpose
Valuedevelopment
Deployment windowAlways active

Application – kiali-servicemesh

Use RHACM GitOps to create a new kiali-servicemesh application based on the following criteria

FieldValue
Namekiali-servicemesh
Namespaceopenshift-operators
Repository typesGit
URLhttps://github.com/alpha-wolf-jin/mesh-apps/
Branchmain
Pathkiali-servicemesh-operator
Labelpurpose
Valuedevelopment
Deployment windowAlways active

Application – mesh

Use RHACM GitOps to create a new mesh application based on the following criteria

FieldValue
Namemesh
Namespaceistio-system
Repository typesGit
URLhttps://github.com/alpha-wolf-jin/mesh-apps/
Branchmain
Pathmesh
Labelpurpose
Valuedevelopment
Deployment windowAlways Active

Verify Service Mesh inside RHACM

Application – elastic

Application – jaeger-product

Application – kiali-servicemesh

Application – mesh

Verify Service Mesh inside Managed Clusters

Cluster 01

The smcp is ready.

$ oc login -u kubeadmin -p <password> https://api.bn7z2-m-dev-01.sandbox1558.opentlc.com:6443
Login successful.

$ oc get smcp -n istio-system
NAME    READY   STATUS            PROFILES      VERSION   AGE
basic   10/10   ComponentsReady   ["default"]   2.2.3     18h

Cluster 02

The smcp is ready.

$ oc login -u kubeadmin -p <password> https://api.bn7z2-m-dev.sandbox1558.opentlc.com:6443
Login successful.

$ oc get smcp -n istio-system
NAME    READY   STATUS                   PROFILES   VERSION   AGE
basic   0/0     DependencyMissingError                        3h39m

The above is a small sample of how to manage the cluster with the RHACM GitOps.

Disclaimer: The views expressed and the content shared are those of the author and do not reflect the views of the author’s employer or techbeatly platform.

Avatar photo


I’m Jin, Red Hat ASEAN Senior Platform Consultant. My primary focus is Ansible Automation (Infrastructure as Code), OpenShift, and OpenStack.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.