5.3.2. 使用 AMQ 证书管理器创建集群间路由器网络

您可以从在不同 OpenShift Container Platform 集群中运行的路由器创建路由器网络。这可让您连接在独立集群中运行的应用程序。

流程

此流程以两个不同的 OpenShift Container Platform 集群(cluster1cluster2)创建路由器部署,并将它们连接在一起,形成集群间路由器网络。路由器部署之间的连接通过 SSL/TLS mutual 验证进行保护。

  1. 在第一个 OpenShift Container Platform 集群中(cluster1)中,创建一个描述 interior 路由器部署的 Interconnect 自定义资源 YAML 文件。

    这个示例创建带有默认配置的单个 interior 路由器。

    cluster1-router-mesh.yaml 文件示例

    apiVersion: interconnectedcloud.github.io/v1alpha1
    kind: Interconnect
    metadata:
      name: cluster1-router-mesh
    spec: {}

  2. 创建 YAML 文件中描述的路由器部署。

    $ oc apply -f cluster1-router-mesh.yaml

    Red Hat Integration - AMQ Interconnect Operator 创建一个带有默认配置的 interior 路由器。它使用 Red Hat Integration - AMQ Certificate Manager Operator 创建证书颁发机构(CA)并生成由 CA 签名的证书。

  3. 在第二个 OpenShift Container Platform 集群中为路由器部署生成额外证书(cluster2)。

    cluster2 中的路由器部署需要 cluster1 CA 发布的证书。

    1. 创建 证书 自定义资源 YAML 文件以请求证书。

      certificate-request.yaml 文件示例

      apiVersion: certmanager.k8s.io/v1alpha1
      kind: Certificate
      metadata:
        name: cluster2-inter-router-tls
      spec:
        commonName: cluster1-router-mesh-myproject.cluster2.openshift.com
        issuerRef:
          name: cluster1-router-mesh-inter-router-ca  1
        secretName: cluster2-inter-router-tls-secret
      ---

      1
      cluster1 创建 inter-router CA 的发行者名称。默认情况下,Issuer 的名称为 < application-name>-inter-router-ca
    2. 创建 YAML 文件中描述的证书。

      $ oc apply -f certificate-request.yaml
    3. 提取您生成的证书。

      $ mkdir /tmp/cluster2-inter-router-tls
      $ oc extract secret/cluster2-inter-router-tls-secret --to=/tmp/cluster2-inter-router-tls
  4. 登录第二个 OpenShift Container Platform 集群(cluster2),并切换到要创建第二个路由器部署的项目。
  5. cluster2 中,创建一个包含您生成的证书的 Secret。

    $ oc create secret generic cluster2-inter-router-tls-secret --from-file=/tmp/cluster2-inter-router-tls
  6. cluster2 中,创建一个 互连 自定义资源 YAML 文件来描述路由器部署。

    cluster2-router-mesh.yaml 文件示例

    apiVersion: interconnectedcloud.github.io/v1alpha1
    kind: Interconnect
    metadata:
      name: cluster2-router-mesh
    spec:
      sslProfiles:
      - name: inter-cluster-tls  1
        credentials: cluster2-inter-router-tls-secret
        caCert: cluster2-inter-router-tls-secret
      interRouterConnectors:
      - host: cluster1-router-mesh-port-55671-myproject.cluster1.openshift.com  2
        port: 443
        verifyHostname: false
        sslProfile: inter-cluster-tls
    1
    此 SSL 配置文件定义了连接到 cluster1 中路由器部署所需的证书。
    2
    cluster1 上 inter-router 侦听器的路由 URL。

  7. 创建 YAML 文件中描述的路由器部署。

    $ oc apply -f cluster2-router-mesh.yaml
  8. 验证路由器已连接。

    这个示例显示 cluster2 中路由器到 cluster1 中的路由器的连接。

    $ oc exec cluster2-fb6bc5797-crvb6 -it -- qdstat -c
    Connections
      id    host                                                                  container                              role          dir  security                                authentication  tenant
      ====================================================================================================================================================================================================
      1     cluster1-router-mesh-port-55671-myproject.cluster1.openshift.com:443  cluster1-router-mesh-54cffd9967-9h4vq  inter-router  out  TLSv1/SSLv3(DHE-RSA-AES256-GCM-SHA384)  x.509