2.8.2. 创建 control plane 模板

您可以使用 ServiceMeshControlPlane 模板生成可重复使用的配置。用户可根据自己的配置对创建的模板进行扩展。模板也可以从其他模板继承配置信息。例如,您可以为财务团队创建一个财务 control plane,为市场团队创建一个市场 control plane。如果您创建了一个开发模板和一个产品模板,则市场团队成员和财务团队成员就可以根据自己团队的情况对开发模板和产品模板进行扩展。

当配置 control plane 模板(与 ServiceMeshControlPlane 语法相同)时,用户以分级方式继承设置。Operator 附带一个具有 Red Hat OpenShift Service Mesh 默认设置的 default 模板 。要添加自定义模板,您必须在 openshift-operators 项目中创建一个名为 smcp-templates 的 ConfigMap,并在 Operator 容器的 /usr/local/share/istio-operator/templates中挂载 ConfigMap 。

2.8.2.1. 创建 ConfigMap

按照以下步骤创建 ConfigMap。

先决条件

  • 已安装并验证的 Service Mesh Operator。
  • 具有 cluster-admin 角色的帐户。
  • Operator 部署的位置。
  • 访问 OpenShift Container Platform 命令行界面 (CLI) 也称为 oc

流程

  1. 以集群管理员身份登录到 OpenShift Container Platform CLI。
  2. 在 CLI 中运行这个命令,在 openshift-operators 项目中创建名为smcp-templates 的 ConfigMap,并将 <templates-directory> 替换成本地磁盘上的ServiceMeshControlPlane 文件的位置:

    $ oc create configmap --from-file=<templates-directory> smcp-templates -n openshift-operators
  3. 找到 Operator 集群服务版本名称。

    $ oc get clusterserviceversion -n openshift-operators | grep 'Service Mesh'

    输出示例

    maistra.v1.0.0            Red Hat OpenShift Service Mesh   1.0.0                Succeeded

  4. 编辑 Operator 集群服务版本,指定 Operator 使用 smcp-templates ConfigMap。

    $ oc edit clusterserviceversion -n openshift-operators maistra.v1.0.0
  5. 在 Operator 部署中添加卷挂载和卷。

    deployments:
      - name: istio-operator
        spec:
          template:
            spec:
              containers:
                volumeMounts:
                  - name: discovery-cache
                    mountPath: /home/istio-operator/.kube/cache/discovery
                  - name: smcp-templates
                    mountPath: /usr/local/share/istio-operator/templates/
              volumes:
                - name: discovery-cache
                  emptyDir:
                    medium: Memory
                - name: smcp-templates
                  configMap:
                    name: smcp-templates
    ...
  6. 保存更改并退出编辑器。
  7. 现在,您可以使用 ServiceMeshControlPlane 中的 template 参数来指定模板。

    apiVersion: maistra.io/v1
    kind: ServiceMeshControlPlane
    metadata:
      name: minimal-install
    spec:
      template: default