×

About ServiceMeshControlPlane

The control plane includes Istiod, Ingress and Egress Gateways, and other components, such as Kiali and Jaeger. The control plane must be deployed in a separate namespace than the Service Mesh Operators and the data plane applications and services. You can deploy a basic installation of the ServiceMeshControlPlane(SMCP) from the Red Hat OpenShift Service on AWS web console or the command line using the oc client tool.

This basic installation is configured based on the default Red Hat OpenShift Service on AWS settings and is not designed for production use. Use this default installation to verify your installation, and then configure your ServiceMeshControlPlane settings for your environment.

If you are deploying the control plane for use on Red Hat OpenShift Service on AWS, see the Red Hat Knowledgebase article OpenShift service mesh operator Istio basic not starting due to authentication errors, which discusses adding a new project and starting pods.

Deploying the Service Mesh control plane from the web console

You can deploy a basic ServiceMeshControlPlane by using the web console. In this example, istio-system is the name of the Service Mesh control plane project.

Prerequisites
  • The Red Hat OpenShift Service Mesh Operator must be installed.

  • You are logged in to the Red Hat OpenShift Service on AWS web console as a user with the dedicated-admin role.

Procedure
  1. Log in to the Red Hat OpenShift Service on AWS web console as a user with the cluster-admin role. If you use Red Hat OpenShift Dedicated, you must have an account with the dedicated-admin role.

  2. Create a project named istio-system.

    1. Navigate to HomeProjects.

    2. Click Create Project.

    3. In the Name field, enter istio-system. The ServiceMeshControlPlane resource must be installed in the istio-system project, separate from your microservices and Operators.

    4. Click Create.

  3. Navigate to OperatorsInstalled Operators.

  4. Click the Red Hat OpenShift Service Mesh Operator, then click Istio Service Mesh Control Plane.

  5. On the Istio Service Mesh Control Plane tab, click Create ServiceMeshControlPlane.

    1. Accept the default Service Mesh control plane version to take advantage of the features available in the most current version of the product. The version of the control plane determines the features available regardless of the version of the Operator.

    2. Add the spec.security.identity.type.ThirdParty field, required by Red Hat OpenShift Service on AWS.

    3. Click Create.

    The Operator creates pods, services, and Service Mesh control plane components based on your configuration parameters. You can configure ServiceMeshControlPlane settings at a later time.

Verification
  • To verify the control plane installed correctly, click the Istio Service Mesh Control Plane tab.

    1. Click the name of the new control plane.

    2. Click the Resources tab to see the Red Hat OpenShift Service Mesh control plane resources the Operator created and configured.

Deploying the Service Mesh control plane using the CLI

You can deploy a basic ServiceMeshControlPlane from the command line.

Prerequisites
  • The Red Hat OpenShift Service Mesh Operator must be installed.

  • Access to the OpenShift CLI (oc).

  • You are logged in to Red Hat OpenShift Service on AWS as a user with the dedicated-admin role.

Procedure
  1. Create a project named istio-system.

    $ oc new-project istio-system

    The ServiceMeshControlPlane resource must be installed in the istio-system project, separate from your microservices and Operators.

  2. Create a ServiceMeshControlPlane file named istio-installation.yaml using the following example. The version of the Service Mesh control plane determines the features available regardless of the version of the Operator.

    Example ServiceMeshControlPlane resource
    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.5
      security:
        identity:
          type: ThirdParty (1)
      tracing:
        type: Jaeger
        sampling: 10000
      policy:
        type: Istiod
      addons:
        grafana:
          enabled: true
        jaeger:
          install:
            storage:
              type: Memory
        kiali:
          enabled: true
        prometheus:
          enabled: true
      telemetry:
        type: Istiod
    1 Specifies a required setting for Red Hat OpenShift Service on AWS.
  3. Run the following command to deploy the Service Mesh control plane, where <istio_installation.yaml> includes the full path to your file.

    $ oc create -n istio-system -f <istio_installation.yaml>
  4. To watch the progress of the pod deployment, run the following command:

    $ oc get pods -n istio-system -w

    You should see output similar to the following:

    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
    istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
    istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
    istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
    jaeger-67c75bd6dc-jv6k6                2/2     Running   0          65m
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m

Validating your SMCP installation with the CLI

You can validate the creation of the ServiceMeshControlPlane from the command line.

  1. Prerequisites

    • The Red Hat OpenShift Service Mesh Operator must be installed.

    • Access to the OpenShift CLI (oc).

    • You are logged in to Red Hat OpenShift Service on AWS as a user with the dedicated-admin role.

Procedure
  1. Run the following command to verify the Service Mesh control plane installation, where istio-system is the namespace where you installed the Service Mesh control plane.

    $ oc get smcp -n istio-system

    The installation has finished successfully when the STATUS column is ComponentsReady.

    NAME    READY   STATUS            PROFILES      VERSION   AGE
    basic   10/10   ComponentsReady   ["default"]   2.5.1     66m

About control plane and cluster-wide deployments

A cluster-wide deployment contains a Service Mesh Control Plane that monitors resources for an entire cluster. Monitoring resources for an entire cluster closely resembles Istio functionality in that the control plane uses a single query across all namespaces to monitor Istio and Kubernetes resources. As a result, cluster-wide deployments decrease the number of requests sent to the API server.

You can configure the Service Mesh Control Plane for cluster-wide deployments using either the Red Hat OpenShift Service on AWS web console or the CLI.

Configuring the control plane for cluster-wide deployment with the web console

You can configure the ServiceMeshControlPlane resource for cluster-wide deployment using the Red Hat OpenShift Service on AWS web console. In this example, istio-system is the name of the Service Mesh control plane project.

Prerequisites
  • The Red Hat OpenShift Service Mesh Operator is installed.

  • You are logged in to Red Hat OpenShift Service on AWS as a user with the dedicated-admin role.

Procedure
  1. Create a project named istio-system.

    1. Navigate to HomeProjects.

    2. Click Create Project.

    3. In the Name field, enter istio-system. The ServiceMeshControlPlane resource must be installed in a project that is separate from your microservices and Operators.

      These steps use istio-system as an example. You can deploy the Service Mesh control plane to any project as long as it is separate from the project that contains your services.

    4. Click Create.

  2. Navigate to OperatorsInstalled Operators.

  3. Click the Red Hat OpenShift Service Mesh Operator, then click Istio Service Mesh Control Plane.

  4. On the Istio Service Mesh Control Plane tab, click Create ServiceMeshControlPlane.

  5. Click YAML view. The version of the Service Mesh control plane determines the features available regardless of the version of the Operator.

  6. Modify the spec.mode field and add the spec.security.identity.type.ThirdParty field:

    Example ServiceMeshControlPlane resource
    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.5
      mode: ClusterWide (1)
      security:
        identity:
          type: ThirdParty (2)
      tracing:
        type: Jaeger
        sampling: 10000
      policy:
        type: Istiod
      addons:
        grafana:
          enabled: true
        jaeger:
          install:
            storage:
              type: Memory
        kiali:
          enabled: true
        prometheus:
          enabled: true
      telemetry:
        type: Istiod
    1 Specifies that the resource is for a cluster-wide deployment.
    2 Specifies a required setting for Red Hat OpenShift Service on AWS.
  7. Click Create. The Operator creates pods, services, and Service Mesh control plane components based on your configuration parameters. The operator also creates the ServiceMeshMemberRoll if it does not exist as part of the default configuration.

Verification
  • To verify that the control plane installed correctly:

    1. Click the Istio Service Mesh Control Plane tab.

    2. Click the name of the new ServiceMeshControlPlane object.

    3. Click the Resources tab to see the Red Hat OpenShift Service Mesh control plane resources that the Operator created and configured.

Configuring the control plane for cluster-wide deployment with the CLI

You can configure the ServiceMeshControlPlane resource for cluster-wide deployment using the CLI. In this example, istio-system is the name of the Service Mesh control plane namespace.

Prerequisites
  • The Red Hat OpenShift Service Mesh Operator is installed.

  • You have access to the OpenShift CLI (oc).

  • You are logged in to Red Hat OpenShift Service on AWS as a user with the dedicated-admin role.

Procedure
  1. Create a project named istio-system.

    $ oc new-project istio-system
  2. Create a ServiceMeshControlPlane file named istio-installation.yaml using the following example:

    Example ServiceMeshControlPlane resource
    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      version: v2.5
      mode: ClusterWide (1)
      security:
        identity:
          type: ThirdParty (2)
    1 Specifies that the resource is for a cluster-wide deployment.
    2 Specifies a required setting for Red Hat OpenShift Service on AWS.
  3. Run the following command to deploy the Service Mesh control plane:

    $ oc create -n istio-system -f <istio_installation.yaml>

    where:

    <istio_installation.yaml>

    Specifies the full path to your file.

Verification
  1. To monitor the progress of the pod deployment, run the following command:

    $ oc get pods -n istio-system -w

    You should see output similar to the following example:

    Example output
    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-b4d59bd7-mrgbr                 2/2     Running   0          65m
    istio-egressgateway-678dc97b4c-wrjkp   1/1     Running   0          108s
    istio-ingressgateway-b45c9d54d-4qg6n   1/1     Running   0          108s
    istiod-basic-55d78bbbcd-j5556          1/1     Running   0          108s
    jaeger-67c75bd6dc-jv6k6                2/2     Running   0          65m
    kiali-6476c7656c-x5msp                 1/1     Running   0          43m
    prometheus-58954b8d6b-m5std            2/2     Running   0          66m

Customizing the member roll for a cluster-wide mesh

In cluster-wide mode, when you create the ServiceMeshControlPlane resource, the ServiceMeshMemberRoll resource is also created. You can modify the ServiceMeshMemberRoll resource after it gets created. After you modify the resource, the Service Mesh operator no longer changes it. If you modify the ServiceMeshMemberRoll resource by using the Red Hat OpenShift Service on AWS web console, accept the prompt to overwrite the modifications.

Alternatively, you can create a ServiceMeshMemberRoll resource before deploying the ServiceMeshControlPlane resource. When you create the ServiceMeshControlPlane resource, the Service Mesh Operator will not modify the ServiceMeshMemberRoll.

The ServiceMeshMemberRoll resource name must be named default and must be created in the same project namespace as the ServiceMeshControlPlane resource.

There are two ways to add a namespace to the mesh. You can either add the namespace by specifying its name in the spec.members list, or configure a set of namespace label selectors to include or exclude namespaces based on their labels.

Regardless of how members are specified in the ServiceMeshMemberRoll resource, you can also add members to the mesh by creating the ServiceMeshMember resource in each namespace.

Validating your SMCP installation with Kiali

You can use the Kiali console to validate your Service Mesh installation. The Kiali console offers several ways to validate your Service Mesh components are deployed and configured properly.

  1. Prerequisites

    • The Red Hat OpenShift Service Mesh Operator must be installed.

    • Access to the OpenShift CLI (oc).

    • You are logged in to Red Hat OpenShift Service on AWS as a user with the dedicated-admin role.

Procedure
  1. In the Red Hat OpenShift Service on AWS web console, navigate to NetworkingRoutes.

  2. On the Routes page, select the Service Mesh control plane project, for example istio-system, from the Namespace menu.

    The Location column displays the linked address for each route.

  3. If necessary, use the filter to find the route for the Kiali console. Click the route Location to launch the console.

  4. Click Log In With OpenShift.

    When you first log in to the Kiali Console, you see the Overview page which displays all the namespaces in your service mesh that you have permission to view. When there are multiple namespaces shown on the Overview page, Kiali shows namespaces with health or validation problems first.

    Kiali Overview page showing istio-system
    Figure 1. Kiali Overview page

    The tile for each namespace displays the number of labels, the Istio Config health, the number of and Applications health, and Traffic for the namespace. If you are validating the console installation and namespaces have not yet been added to the mesh, there might not be any data to display other than istio-system.

  5. Kiali has four dashboards specifically for the namespace where the Service Mesh control plane is installed. To view these dashboards, click the Options menu kebab on the tile for the control plane namespace, for example, istio-system, and select one of the following options:

    • Istio Mesh Dashboard

    • Istio Control Plane Dashboard

    • Istio Performance Dashboard

    • Istio Wasm Exetension Dashboard

      Istio Control Plane Dashboard showing data for bookinfo sample project
      Figure 2. Grafana Istio Control Plane Dashboard

      Kiali also installs two additional Grafana dashboards, available from the Grafana Home page:

    • Istio Workload Dashboard

    • Istio Service Dashboard

  6. To view the Service Mesh control plane nodes, click the Graph page, select the Namespace where you installed the ServiceMeshControlPlane from the menu, for example istio-system.

    1. If necessary, click Display idle nodes.

    2. To learn more about the Graph page, click the Graph tour link.

    3. To view the mesh topology, select one or more additional namespaces from the Service Mesh Member Roll from the Namespace menu.

  7. To view the list of applications in the istio-system namespace, click the Applications page. Kiali displays the health of the applications.

    1. Hover your mouse over the information icon to view any additional information noted in the Details column.

  8. To view the list of workloads in the istio-system namespace, click the Workloads page. Kiali displays the health of the workloads.

    1. Hover your mouse over the information icon to view any additional information noted in the Details column.

  9. To view the list of services in the istio-system namespace, click the Services page. Kiali displays the health of the services and of the configurations.

    1. Hover your mouse over the information icon to view any additional information noted in the Details column.

  10. To view a list of the Istio Configuration objects in the istio-system namespace, click the Istio Config page. Kiali displays the health of the configuration.

    1. If there are configuration errors, click the row and Kiali opens the configuration file with the error highlighted.

Additional resources

Red Hat OpenShift Service Mesh supports multiple independent control planes within the cluster. You can create reusable configurations with ServiceMeshControlPlane profiles. For more information, see Creating control plane profiles.

Next steps