IBM Cloud Docs
访问 Red Hat OpenShift 集群

访问 Red Hat OpenShift 集群

创建 Red Hat® OpenShift® on IBM Cloud® 集群后,可以通过访问集群开始使用集群。

先决条件

  1. 安装所需的 CLI 工具。 要快速访问集群中的测试功能,还可以使用 IBM Cloud Shell
  2. 创建 Red Hat OpenShift 集群
  3. 如果网络受到公司防火墙的保护,请允许访问 IBM Cloud 和 Red Hat OpenShift on IBM Cloud API 端点和端口。 对于仅启用了私有云服务端点的 VPC 集群,在 使用云服务端点子网配置 VPC VPN 之前,无法测试与集群的连接。
  4. 运行 ibmcloud oc cluster get -c <cluster_name_or_ID> 查看群集是否处于健康状态。 如果集群未处于正常运行状态,请查看调试集群指南以获取帮助。 例如,如果在受防火墙网关设备保护的帐户中供应集群,那么必须配置防火墙设置以允许出局流量流至相应的端口和 IP 地址
  5. 查找集群的服务端点。
    • 经典或 VPC 集群:在上一步的集群详细信息输出中,检查集群的公共私有服务端点URL。
    • IBM Cloud Satellite 集群: 继续 访问 Satellite
  6. 如果帐户中的任何用户使用多因子认证 (MFA) (例如 TOTP),请确保 在帐户级别为所有用户启用该认证。 要使用 MFA,必须在帐户级别启用 MFA 以避免认证错误。

通过公共云服务终端访问群集

对于具有公共云 Red Hat OpenShift 服务端点的集群,您可以通过控制台或命令行界面登录到集群。

从控制台连接到集群

您可从控制台快速访问您的 Red Hat OpenShift on IBM Cloud 集群。

  1. 控制台中,点击您想要访问的仪表盘。
  2. 单击 Red Hat OpenShift Web 控制台
  3. 要继续在命令行中工作,请单击概要文件名称 (例如 IAM#name@email.com),然后单击 复制登录命令。 根据您的集群版本,从命令行登录到集群,如下所示。
    • 版本 4: 单击 显示令牌,复制 oc login 命令,然后将该命令粘贴到命令行中。

出于安全考虑,请先退出控制台 IBM Cloud,再退出 Red Hat OpenShift Web控制台,最后关闭浏览器。 您必须按指定顺序完成两个步骤,才能成功退出Web Red Hat OpenShift 控制台。

后续步骤?
尝试 通过控制台部署应用程序

从 CLI 连接到集群

通常,您可以使用 Web Red Hat OpenShift 控制台获取用于访问集群的 oc login 令牌。 若您无法或不愿打开 Red Hat OpenShift 控制台,请从以下选项中选择一种,通过命令行 Red Hat OpenShift on IBM Cloud 界面登录集群:

从以下选项中选择

  • 以管理员身份登录:
    1. 确保具有 集群的 管理员 平台访问角色
    2. 为群集设置命令行上下文,并下载 TLS 证书和管理员权限文件。
      ibmcloud oc cluster config -c <cluster_name_or_ID> --admin
      
  • 使用 API 密钥登录: 请参阅 使用 API 密钥登录到 Red Hat OpenShift
  • 使用 IBM Cloud 密码登录:
    1. 在以下命令的输出中获取集群的主 URL
      ibmcloud oc cluster get -c <cluster_name_or_ID>
      
    2. 在浏览器中,打开以下 IBM Cloud IAM 验证码 Web 站点。
      https://iam.cloud.ibm.com/identity/passcode
      
    3. 使用 IBMid 登录并复制验证码。
    4. 使用密码登录群集。
      oc login -u passcode -p <iam_passcode> --server=<master_URL>
      

通过私有云服务终端访问群集

允许授权集群用户通过私有云服务端点访问 VPC经典 集群。

要设置 VPN 以从本地机器连接到集群吗? 请参阅 通过VPN WireGuard 访问私有集群

通过私有云服务终端访问 VPC 群集

所有 VPC 群集都有一个私人服务端点,授权用户可以访问。 由于它只能在专用网络上使用,用户必须通过以下方式之一访问它:

  1. 对于 ca-mon、in-che 和 in-mum 以外的区域,VPC 集群的专用服务端点可从 IBM Cloud 内的任何地方访问,或从使用 VPN(或类似设备)连接到 IBM Cloud 的客户端访问。

    您可以使用以下选项之一通过 VPN 连接到 IBM Cloud:

    客户端到站点 VPN
    最常见的群集访问选项,设置相当简单。 有关配置技巧,请参阅 通过虚拟专用端点网关访问 VPC 群集
    站点到站点 VPN
    它的设置较为复杂,但具有可能有用的其他功能。

    可以通过群集的专用服务端点 URL 访问这些群集,该端点看起来像 c<XXX>.private.<REGION>.containers.cloud.ibm.com:XXXXX。 使用此命令可获取使用此私有端点的 kubeconfig 文件:

    然后,您可以使用下图所示的几个选项之一登录群集。 完成上述操作后,您可以使用以下命令来验证该连接 ibmcloud oc get nodes

    • 以管理员身份登录:

      1. 确保具有 集群的 管理员 平台访问角色
      2. 为管理员下载 kubeconfig。
        ibmcloud oc cluster config -c <cluster_name_or_ID> --admin --endpoint private
        
    • 使用 API 密钥登录: 请参阅 使用 API 密钥登录到 Red Hat OpenShift

    • 使用 IBM Cloud 密码登录:

      1. 在以下命令的输出中获取集群的专用服务端点 URL
        ibmcloud oc cluster get -c <cluster_name_or_ID>
        
      2. 在浏览器中,打开以下 IBM Cloud IAM 验证码 Web 站点。
        https://iam.cloud.ibm.com/identity/passcode
        
      3. 使用 IBMid 登录并复制验证码。
      4. 使用密码登录群集。
        oc login -u passcode -p <iam_passcode> --server=<private_service_endpoint_URL>
        
  2. 可通过群集的特定虚拟专用端点(VPE)网关访问所有区域内所有 VPC 群集的专用服务端点。 VPE 网关只能在其创建的 VPC 内使用,或通过 VPN(或类似方式)进入该特定 VPC。 以这种方式连接到群集有两种主要选择:

    • 在创建群集的 VPC 中会自动为群集创建一个 VPE 网关。 因此,一种选择是通过 VPC 内部的系统,或通过 VPN(或类似设备)连接到 VPC 的系统进行连接。
    • 如果要从不同的 VPC(甚至是不同地区或不同账户的 VPC)进行连接,可以在其他 VPC 中创建一个新的 VPE 网关。 然后,从其他 VPC(包括通过 VPN 接入其他 VPC 的情况),可以通过新的 VPE 网关访问群集主控程序。 具体操作步骤请参阅下面的“在其他 VPC 和账户中创建其他虚拟专用端点网关”部分。
    • 有关此选项的更多信息,包括如何获取 kubeconfig 文件和配置 VPN 的提示,请参阅下面的“通过虚拟专用端点网关访问 VPC 群集”部分。

通过私有云服务终端访问经典集群

若授权集群用户位于您的 IBM Cloud 私有网络中,或通过 经典VPN连接 等方式连接至私有网络,IBM Cloud Direct Link 则可通过私有云服务端点访问主控 Red Hat OpenShift 节点。 但是,通过私有云服务端点与 Kubernetes 主站的通信必须通过 166.X.X.X IP 地址范围,而传统 VPN 连接或 IBM Cloud Direct Link 均无法路由该 IP 地址范围。 您可以使用私有网络负载平衡器(NLB)为群集用户公开主控器的私有云服务端点。 私有 NLB 将主站的私有云服务端点作为内部 10.X.X.X IP 地址范围公开,用户可通过 VPN 或 IBM Cloud Direct Link 连接访问。 若仅启用私有云服务端点,则可通过 Web Red Hat OpenShift 控制台创建私有 NLB。

  1. 登录到 使用公共云服务端点的 Red Hat OpenShift 集群

  2. 获取群集的私有云服务端点 URL 和端口。

    ibmcloud oc cluster get -c <cluster_name_or_ID>
    

    在此示例输出中,专用服务端点 URLhttps://c1.private.us-east.containers.cloud.ibm.com:31144

    NAME:                           setest
    ID:                             b8dcc56743394fd19c9f3db7b990e5e3
    State:                          normal
    Status:                         healthy cluster
    Created:                        2019-04-25T16:03:34+0000
    Location:                       wdc04
    Pod Subnet:                     172.30.0.0/16
    Service Subnet:                 172.21.0.0/16
    Master URL:                     https://c1-e.us-east.containers.cloud.ibm.com:31144
    Public Service Endpoint URL:    https://c1-e.us-east.containers.cloud.ibm.com:31144
    Private Service Endpoint URL:   https://c1.private.us-east.containers.cloud.ibm.com:31144
    Master Location:                Washington D.C.
    ...
    
  3. 创建名为 oc-api-via-nlb.yaml 的 YAML 文件。 该 YAML 创建了一个私有 LoadBalancer 服务,并通过该 NLB 公开私有云服务端点。 将 <private_service_endpoint_port> 替换为上一步中找到的端口。

    apiVersion: v1
    kind: Service
    metadata:
      name: oc-api-via-nlb
      annotations:
        service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: private
      namespace: default
    spec:
      type: LoadBalancer
      ports:
      - protocol: TCP
        port: <private_service_endpoint_port>
        targetPort: <private_service_endpoint_port>
    ---
    kind: Endpoints
    apiVersion: v1
    metadata:
      name: oc-api-via-nlb
      namespace: default
    subsets:
      - addresses:
          - ip: 172.20.0.1
        ports:
          - port: 2040
    
    
    
  4. 要创建专用 NLB 和端点,请执行以下操作:

    1. 应用先前创建的配置文件。
      oc apply -f oc-api-via-nlb.yaml
      
    2. 验证 oc-api-via-nlb NLB 是否已创建。 在输出中,记下 10.x.x.x EXTERNAL-IP 地址。 此 IP 地址会在 YAML 文件指定的端口上为群集主控暴露私有云服务端点。
      oc get svc -o wide
      
      在此示例输出中,主站私有云服务端点的 IP 地址为 10.186.92.42
      NAME                     TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)          AGE   SELECTOR
      oc-api-via-nlb           LoadBalancer   172.21.150.118   10.186.92.42     443:32235/TCP    10m   <none>
      ...
      
  5. 在您或您的用户运行 oc 命令的客户端计算机上,将 NLB IP 地址和私有云服务端点 URL 添加到 /etc/hosts 文件中。 不要在 IP 地址和 URL 中包含任何端口,也不要在 URL 中包含 https://

    • 供 macOS 和 Linux 用户使用:

      sudo nano /etc/hosts
      
    • 对于 Windows 用户:

      notepad C:\Windows\System32\drivers\etc\hosts
      

      根据本地计算机许可权,您可能需要以管理员身份运行记事本来编辑 hosts 文件。

      要添加的示例文本:

      10.186.92.42      c1.private.us-east.containers.cloud.ibm.com
      
  6. 验证您是否已通过 VPNIBM Cloud Direct Link 连接连接到专用网络。

  7. 通过从下列其中一个选项中进行选择,登录到集群。

    • 以管理员身份登录:
      1. 确保具有 集群的 管理员 平台访问角色
      2. 为群集设置命令行上下文,并下载 TLS 证书和管理员权限文件。
        ibmcloud oc cluster config -c <cluster_name_or_ID> --admin --endpoint private
        
    • 使用 API 密钥登录: 请参阅 使用 API 密钥登录到 Red Hat OpenShift
    • 使用 IBM Cloud 密码登录:
      1. 在以下命令的输出中获取集群的专用服务端点 URL
        ibmcloud oc cluster get -c <cluster_name_or_ID>
        
      2. 在浏览器中,打开以下 IBM Cloud IAM 验证码 Web 站点。
        https://iam.cloud.ibm.com/identity/passcode
        
      3. 使用 IBMid 登录并复制验证码。
      4. 使用密码登录群集。
        oc login -u passcode -p <iam_passcode> --server=<private_service_endpoint_URL>
        
  8. 通过检查版本,验证 oc 命令是否能通过私有云服务端点在群集中正常运行。

    oc version
    

    示例输出

    Client Version: 4.5.0-0.okd-2020-09-04-180756
    Server Version: 4.5.35
    Kubernetes Version: v1.18.3+cdb0358
    

访问 Satellite 上的 Red Hat OpenShift 集群

在您 Satellite 所在的位置创建集群 Red Hat OpenShift 后,即可通过访问该集群开始使用它。

访问集群并运行 oc get nodesoc describe node <worker_node> 命令时,可能会看到为工作程序节点分配了 master,worker 角色。 在 OpenShift Container Platform 集群中,操作员将主节点角色用作入口 nodeSelector 点,以便OpenStack Cloud Platform(OCP)能在集群内部署由操作员控制的默认组件,例如内部注册中心。 您分配给集群的主机 Satellite 仅作为工作节点运行,API 服务器或 Kubernetes 调度程序等主节点进程不会在工作节点上运行。

通过集群服务访问集群 URL

通过其服务连接到你的 URL 集群。 这是 URL 您其中一个 Satellite 位置子域名和节点端口,其格式如下所示 https://p1iuql40jam23qiuxt833-q9err0fiffbsar61e78vv6e7ds8ne1tx-ce00.us-east.satellite.appdomain.cloud:30710

如果位置主机只有专用网络连接,或者使用 Amazon Web Services、Google Cloud Platform 和 Microsoft Azure 主机,则必须连接到主机的专用网络,如通过 VPN 访问,才能连接到群集并访问 Red Hat OpenShift 网络控制台。 或者,如果主机具有公用网络连接,那么可以通过将集群的 DNS 记录和位置的 DNS 记录更改为 使用主机的公共 IP 地址 来测试对集群的访问权。

您可从控制台快速访问您的 Red Hat OpenShift on IBM Cloud 集群。

  1. 控制台中,点击您想要访问的仪表盘。
  2. 单击 Red Hat OpenShift Web 控制台
  3. 单击概要文件名称 (例如 IAM#name@email.com),然后单击 复制登录命令
  4. 单击 显示令牌,然后复制 oc login 命令。
  5. 将命令粘贴到命令行中。

出于安全考虑,请先退出控制台 IBM Cloud,再退出 Red Hat OpenShift Web控制台,最后关闭浏览器。 您必须按指定顺序完成两个步骤,才能成功退出Web Red Hat OpenShift 控制台。

若您无法或不愿打开 Red Hat OpenShift 控制台,请从以下选项中选择一种,通过命令行 Red Hat OpenShift on IBM Cloud 界面登录集群:

从公用网络访问集群

如果主机具有公用网络连接,并且您希望从本地机器访问集群而不连接到主机的专用网络,那么可以选择更新集群的子域和位置的 DNS 记录以使用主机的公共 IP 地址。

对于大多数位置设置,将针对位置的 DNS 记录注册主机的专用 IP 地址,以便仅当您已连接到云提供者的专用网络时才能访问集群。

例如,如果您使用 Amazon Web Services、Google Cloud Platform 或 Microsoft Azure 主机,或者主机的默认网络接口是专用的,那么您所在位置的 DNS 记录只能在专用网络上访问。

要对集群运行 kubectloc 命令或访问 Red Hat OpenShift Web 控制台,必须连接到主机的专用网络,例如通过 VPN 访问。 但是,如果要从公用网络访问集群 (例如测试从本地机器访问集群),那么可以更改位置和集群子域的 DNS 记录以改为使用主机的公用 IP。

对于生产级工作负载,建议不要使您的位置和集群子域在主机的专用网络外部可供授权集群用户使用。

  1. 查看位置子域,并检查 记录 以获取在该子域的 DNS 中注册的主机的专用 IP 地址。
    ibmcloud sat location dns ls --location <location_name_or_ID>
    
  2. 检索主机的匹配公共 IP 地址。
    ibmcloud sat host ls --location <location_name_or_ID>
    
  3. 使用控制平面中每个主机的公共 IP 地址更新位置子域 DNS 记录。
    ibmcloud sat location dns register --location <location_name_or_ID> --ip <host_IP> --ip <host_IP> --ip <host_IP>
    
  4. 验证是否已向您的位置 DNS 记录注册公共 IP 地址。
    ibmcloud sat location dns ls --location <location_name_or_ID>
    
  5. 获取格式为 <service_name>-<project>.<cluster_name>-<random_hash>-0000.upi.containers.appdomain.cloud 的集群的 主机名,并记下已自动注册的专用 IP
    ibmcloud oc nlb-dns ls --cluster <cluster_name_or_ID>
    
  6. 将作为工作程序节点分配给此集群的主机的公共 IP 地址添加到集群的子域。 对每个主机的公共 IP 地址重复此命令。
    ibmcloud oc nlb-dns add --ip <public_IP> --cluster <cluster_name_or_ID> --nlb-host <hostname>
    
  7. 从集群的子域中除去专用 IP 地址。 对先前检索的所有专用 IP 地址重复此命令。
    ibmcloud oc nlb-dns rm classic --ip <private_IP> --cluster <cluster_name_or_ID> --nlb-host <hostname>
    
  8. 验证是否已向集群子域注册公共 IP 地址。
    ibmcloud oc nlb-dns ls --cluster <cluster_name_or_ID>
    

通过虚拟专用端点网关访问 VPC 集群

将自动为 VPC 集群创建 虚拟专用端点网关。 若授权集群用户 通过 IBM Cloud VPC VPN 等方式连接至集群部署所在的同一虚拟私有云(VPC),则可通过此虚拟私有云端点网关访问 Kubernetes 主节点。 在此情况下,该 kubeconfig 配置采用虚拟私有端点(VPE) URL,该端点是一个私有域名,仅能通过私有DNS IBM Cloud VPC 服务进行解析。 私有DNS IBM Cloud VPC 服务器的地址是 161.26.0.7161.26.0.8

对于运行版本的集群 4.13:若在创建集群时仅启用了私有云服务端点,则默认使用您VPC的虚拟私有端点访问Web Red Hat OpenShiftRed Hat OpenShift 控制台等组件 OperatorHub。 您必须连接到专用 VPC 网络 (例如,通过 VPN 连接),才能访问这些组件或在集群上运行 kubectl 命令。 请注意,要通过 VPE 访问控制台,您必须能够访问需要公共连接的 cloud.ibm.com

  1. 设置 IBM Cloud VPC VPN 并通过 VPN 连接到 VPC。

    1. 客户机到站点站点到站点 VPN 配置到 VPC。 例如,您可以选择设置与 VPN 客户端的客户机到站点连接。
    2. 对于客户机到站点 VPN 设置,在供应 VPN 服务器时,必须指定 IBM Cloud VPC 专用 DNS 服务地址,如 注意事项 中所述。 在供应 VPN 服务器后,还必须使用目标 161.26.0.0/16 和操作 translate 创建 VPN 路由。
    3. 对于站点到站点 VPN 设置,必须遵循 通过 VPN 指南访问服务端点,并配置 IBM Cloud VPC 专用 DNS 服务地址。
    4. 验证您是否已通过 IBM Cloud VPC VPN 连接连接到 VPC。
  2. 要登录到集群,请从以下选项中进行选择。

    • 以管理员身份登录:
      1. 确保具有 集群的 管理员 平台访问角色
      2. 为群集设置命令行上下文,并下载 TLS 证书和管理员权限文件。
        ibmcloud oc cluster config -c <cluster_name_or_ID> --admin --endpoint vpe
        
    • 使用 API 密钥登录: 请参阅 使用 API 密钥登录到 Red Hat OpenShift
    • 使用 IBM Cloud 密码登录:
      1. 在以下命令的输出中获取 VPE地址和主 URL 输出中获取VPE地址和主密钥。
        ibmcloud oc cluster get -c <cluster_name_or_ID>
        
      2. 在浏览器中,打开以下 IBM Cloud IAM 验证码 Web 站点。
        https://iam.cloud.ibm.com/identity/passcode
        
      3. 使用 IBMid 登录并复制验证码。
      4. 使用密码登录群集。
        oc login -u passcode -p <iam_passcode> --server=https://<VPE_URL>:<port_from_the_master_URL>
        
        登录过程将通知由未知机构签署的证书,因为它是由 IBM生成的自签名证书。
  3. 通过检查版本,验证 oc 命令是否能通过私有云服务端点在群集中正常运行。

    oc version
    

    示例输出

    Client Version: 4.5.0-0.okd-2020-09-04-180756
    Server Version: 4.5.35
    Kubernetes Version: v1.18.3+cdb0358
    

在其他 VPC 和账户中创建其他虚拟专用端点网关

除了在 VPC 中为群集创建的 VPE 网关外,还可以为该群集创建其他 VPE 网关,以允许从其他 VPC、区域和账户通过专用网络进行访问。

  • 必须使用 CLI 或 API 创建其他 VPE 网关。 创建后,可通过网络用户界面对其进行管理。

  • 对于跨账户 VPE 网关,必须首先在目标账户中创建授权。 有关更多信息,请参阅 在控制台中为跨账户 VPE 创建服务授权

  • 无需中转网关或特殊路由选择。 VPE 网关负责处理到目标群集的路由。

以下步骤将向您演示如何创建跨账户 VPE 网关。

  1. 从目标群集获取必要信息。

    1. ibmcloud target 设置为目标账户、区域和资源组。

    2. 获取现有 VPE 网关信息。

      ibmcloud is endpoint-gateway iks-TARGET_CLUSTER_ID
      
    3. 注意目标 CRN (格式:crn:v1:bluemix:public:containers-kubernetes:REGION:a/TARGET_ACCOUNT:TARGET_CLUSTER_ID:: )。

    4. 注意服务端点主机名。

  2. 在源账户中创建新的 VPE 网关。

    1. ibmcloud target 设置为源账户、区域和资源组。

    2. 验证此账户中是否存在 VPC。

      ibmcloud is vpcs
      
    3. 创建 VPE 网关。

      ibmcloud is endpoint-gateway-create --vpc SOURCE_VPC_NAME --target TARGET_CRN --name new-iks-TARGET_CLUSTER_ID --resource-group-name SOURCE_ACCOUNT_RESOURCE_GROUP
      
      SOURCE_VPC_NAME
      上一步中的 VPC 名称。
      TARGET_CRN
      目标群集 VPE 网关的 CRN。
      --name
      VPE 网关的名称。
      SOURCE_ACCOUNT_RESOURCE_GROUP
      源账户中的资源组名称。
    4. 如果出现“无法找到服务”的错误,请确认目标 CRN 是否正确。 如果正确,则需要在目标账户中创建授权。 请参阅 在控制台中为跨账户 VPE 创建服务授权

  3. 为 VPE 网关添加保留 IP。

    您必须至少添加一个保留 IP。 保留 IP 来自源 VPC 子网(每个区域最多一个),并添加到源 VPC 的私有 DNS 条目中。

    1. 为每个区域创建一个保留 IP。

      ibmcloud is subnet-reserved-ip-create SOURCE_VPC_SUBNET_NAME --vpc SOURCE_VPC_NAME --name ANY_NAME_YOU_CHOOSE --auto-delete true --target VPE_GATEWAY_NAME
      
    2. 可选:添加或修改安全组。 默认情况下,只附加源 VPC 的默认安全组。 对于 VPE 网关,安全组只保护入口流量。 确保安全组允许来自客户端的所有必要传入流量。

  4. 测试连接。

    1. 从源 VPC 中的 VSI,使用与原始 VPE 网关相同的主机名。 从 ibmcloud ks cluster get -c CLUSTER_NAME服务端点列表或 VPE Gateway 属性中查找。

    2. 验证连接是否正常。

      curl -k https://CLUSTERID...:XXXXX/version
      
    3. 如果连接失败,请检查以下内容:

      • VSI 和 VPE 网关上的安全组允许必要的流量
      • VPC ACL 允许流量
      • 目标群集上的基于上下文限制 (CBR) 规则允许来自源 VPC 的私有流量(将源 VPC 中的三个 "云服务端点源地址 "添加到私有 CBR 规则中)

示例:目标账户命令

下面的示例显示了在目标账户中运行的命令,用于收集有关群集及其 VPE 网关的信息。

  1. 验证您的目标账户是否正确。

    ibmcloud target
    

    示例输出

    API endpoint:     https://cloud.ibm.com
    Region:           us-east
    User:             user2@example.com
    Account:          Target Account (9f8e7d6c5b4a321fedcba98765432222) <-> 2222222
    Resource group:   default
    
  2. 列出您的集群。

    ibmcloud ks clusters
    

    示例输出

    OK
    Name                     ID                     State    Created     Workers   Location        Version                  Resource Group Name   Provider
    vpe-cross-account-test   c8m5n3p2q4x6z1w7y077   normal   1 day ago   2         Washington DC   4.19.25_1572_openshift   default               vpc-gen2
    
  3. 获取 VPE 网关详细信息。 注意目标 CRN服务端点

    ibmcloud is endpoint-gateway iks-c8m5n3p2q4x6z1w7y077
    

    示例输出

    Getting endpoint gateway iks-c8m5n3p2q4x6z1w7y077 under account Target Account as user user2@example.com...
    
    ID                            r014-7a228b24-4bc4-416c-aede-7fda14e88d98   
    Name                          iks-c8m5n3p2q4x6z1w7y077
    CRN                           crn:v1:bluemix:public:is:us-east:a/9f8e7d6c5b4a321fedcba98765432222::endpoint-gateway:r014-7a228b24-4bc4-416c-aede-7fda14e88d98
    Target                        CRN      
                                  crn:v1:bluemix:public:containers-kubernetes:us-east:a/9f8e7d6c5b4a321fedcba98765432222:c8m5n3p2q4x6z1w7y077::
    
    DNS resolution binding mode   primary   
    Target Type                   provider_cloud_service   
    Target Remote                 ID                        Name   Resource type      
                                  No target remote found.      
    
    VPC                           ID                                          Name      
                                  r014-464b4e54-48a8-4f6c-b10a-68edc6fd2be4   new-vpcgen2-default-sec-grp-wdc      
    
    Private IPs                   ID                                          Name                                   Address       Subnet ID      
                                  0757-3bd457cb-af5a-4ab6-b9bb-6e78d3eaf752   iks-useast1-c8m5n3p2q4x6z1w7y077-2e8   172.22.0.11   0757-0c981aa5-cb47-41d9-ab29-edee98b416f8
    
    Service Endpoints             c8m5n3p2q4x6z1w7y077.vpe.private.us-east.containers.cloud.ibm.com
    Lifecycle State               stable   
    Health State                  ok   
    Security groups               ID                                          Name      
                                  r014-3873358e-3180-482b-927e-abcc300ecbf8   kube-vpegw-c8m5n3p2q4x6z1w7y077
    
    Created                       2026-04-03T12:14:59-05:00   
    Resource Group                default
    
  4. 可选:获取群集详细信息,查看 VPE 网关 URL。

    ibmcloud ks cluster get -c c8m5n3p2q4x6z1w7y077
    

    示例输出

    Retrieving cluster c8m5n3p2q4x6z1w7y077...
    OK
    
    Name:                           vpe-cross-account-test
    ID:                             c8m5n3p2q4x6z1w7y077
    State:                          normal
    Status:                         All Workers Normal
    Created:                        2026-04-03 11:56:38 -0500 (1 day ago)
    Resource Group ID:              950cec30388441ce809ca0d18b5ca3bc
    Resource Group Name:            default
    Pod Subnet:                     172.17.0.0/18
    Service Subnet:                 172.21.0.0/16
    Workers:                        2
    Worker Zones:                   us-east-1
    Ingress Subdomain:              vpe-cross-account-test-354226545946e7ee0a2c700f061c1661-0000.us-east.containers.appdomain.cloud
    Ingress Secret:                 vpe-cross-account-test-354226545946e7ee0a2c700f061c1661-0000
    Ingress Status:                 healthy
    Ingress Message:                All Ingress components are healthy.
    Trusted Profile ID:             -
    Public Service Endpoint URL:    https://c111-e.us-east.containers.cloud.ibm.com:31100
    Private Service Endpoint URL:   https://c111.private.us-east.containers.cloud.ibm.com:31100
    Pull Secrets:                   enabled in the default namespace
    VPCs:                           r014-464b4e54-48a8-4f6c-b10a-68edc6fd2be4
    VPE Gateway:                    https://c8m5n3p2q4x6z1w7y077.vpe.private.us-east.containers.cloud.ibm.com:31100
    OAuth Server URL:               https://c111-e.us-east.containers.cloud.ibm.com:31264
    Konnectivity Server URL:        https://c8m5n3p2q4x6z1w7y077.vpe.private.us-east.containers.cloud.ibm.com:30996
    Secure By Default Networking:   enabled
    Outbound Traffic Protection:    enabled
    
    Master      
    Status:     Ready (1 day ago)
    State:      deployed
    Health:     normal
    Version:    4.19.25_1572_openshift
    Location:   Washington DC
    URL:        https://c111-e.us-east.containers.cloud.ibm.com:31100
    

示例:源账户命令

下面的示例显示了在源账户中运行的命令,用于创建连接到目标账户群集的 VPE 网关。

  1. 验证您的目标源账户是否正确。

    ibmcloud target
    

    示例输出

    API endpoint:     https://cloud.ibm.com
    Region:           us-south
    User:             user1@example.com
    Account:          Source Account (a1b2c3d4e5f6789abcdef01234561111) <-> 1111111
    Resource group:   Default
    
  2. 列出 VPC。

    ibmcloud is vpcs
    

    示例输出

    Listing vpcs in resource group Default and region us-south under account Source Account as user user1@example.com...
    ID                                          Name                      Status      Classic access   Default network ACL                             Default security group                           Resource group   Health state   DNS Hub   DNS Resolver Type   
    r006-6f450c4b-c808-40e7-9de6-c61c262a2ae9   dev-ansiblepr-vpc         available   false            vendor-paradox-ravioli-tank                     harmonica-hypnoses-tranquil-alkalize             Default          ok             false     system   
    r006-bd06a98a-1183-42d2-810d-1c564eeb5f39   fvt-vpc-sdnlb-server-40   available   false            sloppy-program-venue-subsiding                  prattle-pension-wilt-recycled                    Default          ok             false     system   
    r006-ecf65055-6868-4368-aa7c-48fc5ac29ff8   network-fvt-us-south      available   false            doorknob-baffle-quintet-poem                    spotted-sandpaper-auction-unluckily              Default          ok             false     system   
    r006-4ff93772-cee9-4d64-9d87-d8b1b781e201   network-fvt-vpc-gen2      available   false            stegosaur-reach-boxlike-alone-stranger-uncork   earplugs-preface-county-juicy-sensitize-babied   Default          ok             false     system
    
  3. 使用目标账户的目标 CRN 创建 VPE 网关。

    ibmcloud is endpoint-gateway-create --vpc network-fvt-us-south --target crn:v1:bluemix:public:containers-kubernetes:us-east:a/9f8e7d6c5b4a321fedcba98765432222:c8m5n3p2q4x6z1w7y077:: --name new-iks-c8m5n3p2q4x6z1w7y077 --resource-group-name Default
    

    示例输出

    Creating endpoint gateway new-iks-c8m5n3p2q4x6z1w7y077 in resource group Default under account Source Account as user user1@example.com...
    
    ID                            r006-2009f147-768a-4f6a-b8fa-75f20456cec2   
    Name                          new-iks-c8m5n3p2q4x6z1w7y077
    CRN                           crn:v1:bluemix:public:is:us-south:a/a1b2c3d4e5f6789abcdef01234561111::endpoint-gateway:r006-2009f147-768a-4f6a-b8fa-75f20456cec2
    Target                        CRN      
                                  crn:v1:bluemix:public:containers-kubernetes:us-east:a/9f8e7d6c5b4a321fedcba98765432222:c8m5n3p2q4x6z1w7y077::
    
    DNS resolution binding mode   primary   
    Target Type                   provider_cloud_service   
    Target Remote                 ID                        Name   Resource type      
                                  No target remote found.      
    
    VPC                           ID                                          Name      
                                  r006-ecf65055-6868-4368-aa7c-48fc5ac29ff8   network-fvt-us-south      
    
    Private IPs                   -   
    Service Endpoints             c8m5n3p2q4x6z1w7y077.vpe.private.us-east.containers.cloud.ibm.com
    Lifecycle State               pending   
    Health State                  ok   
    Security groups               ID                                          Name      
                                  r006-7ae081e2-743d-4046-b755-5ca9997ae077   spotted-sandpaper-auction-unluckily      
    
    Created                       2026-04-04T18:17:12-05:00   
    Resource Group                Default
    
  4. 列出子网,以确定哪些子网用于保留 IP。

    ibmcloud is subnets --vpc network-fvt-us-south
    

    示例输出

    Listing subnets in resource group Default and region us-south under account Source Account as user user1@example.com...
    ID                                          Name                           Status      Subnet CIDR       Addresses   ACL                            Public Gateway                             VPC                    Zone         Resource group   
    0717-04288f84-4aef-4938-9fa7-5544a40ba258   network-fvt-us-south-1-priv    available   10.240.0.0/24     251/256     doorknob-baffle-quintet-poem   -                                          network-fvt-us-south   us-south-1   Default   
    0717-cdd4b20c-b48f-454b-b092-ad7aa14b39c8   network-fvt-us-south-1-pubgw   available   10.240.1.0/24     246/256     doorknob-baffle-quintet-poem   pgw-33eb53d0-74e4-11ee-a747-33927b3ab784   network-fvt-us-south   us-south-1   Default   
    0727-8813de08-fffa-45e3-ae67-2ba70703866e   network-fvt-us-south-2-priv    available   10.240.64.0/24    250/256     doorknob-baffle-quintet-poem   -                                          network-fvt-us-south   us-south-2   Default   
    0727-50b14707-c9f6-4f93-9f49-99de13c66161   network-fvt-us-south-2-pubgw   available   10.240.65.0/24    251/256     doorknob-baffle-quintet-poem   pgw-34fe4a70-74e4-11ee-a747-33927b3ab784   network-fvt-us-south   us-south-2   Default   
    0737-7a644374-f121-44c1-b216-5fd94c0362b2   network-fvt-us-south-3-priv    available   10.240.128.0/24   251/256     doorknob-baffle-quintet-poem   -                                          network-fvt-us-south   us-south-3   Default   
    0737-71a34942-304c-4419-9205-3714a3574962   network-fvt-us-south-3-pubgw   available   10.240.129.0/24   251/256     doorknob-baffle-quintet-poem   pgw-36088e80-74e4-11ee-a747-33927b3ab784   network-fvt-us-south   us-south-3   Default
    
  5. 在第一个区域创建一个保留 IP,并将其连接到 VPE 网关。

    ibmcloud is subnet-reserved-ip-create network-fvt-us-south-1-pubgw --vpc network-fvt-us-south --name reserved-ip-for-us-south-1 --auto-delete true --target new-iks-c8m5n3p2q4x6z1w7y077
    

    示例输出

    Creating reserved IP in subnet network-fvt-us-south-1-pubgw under account Source Account as user user1@example.com...
    
    ID                0717-685e1410-2fa1-4e7a-a4e5-27a097ec7a7a   
    Name              reserved-ip-for-us-south-1   
    Address           0.0.0.0   
    Auto delete       true   
    Owner             user   
    Created           2026-04-04T18:18:51-05:00   
    Lifecycle state   pending   
    Target            ID                                          Name                           Resource type      CRN      
                      r006-2009f147-768a-4f6a-b8fa-75f20456cec2   new-iks-c8m5n3p2q4x6z1w7y077   endpoint_gateway   crn:v1:bluemix:public:is:us-south:a/a1b2c3d4e5f6789abcdef01234561111::endpoint-gateway:r006-2009f147-768a-4f6a-b8fa-75f20456cec2
    
  6. 确认已添加保留 IP。

    ibmcloud is eg new-iks-c8m5n3p2q4x6z1w7y077
    

    示例输出

    Getting endpoint gateway new-iks-c8m5n3p2q4x6z1w7y077 under account Source Account as user user1@example.com...
    
    ID                            r006-2009f147-768a-4f6a-b8fa-75f20456cec2   
    Name                          new-iks-c8m5n3p2q4x6z1w7y077
    CRN                           crn:v1:bluemix:public:is:us-south:a/a1b2c3d4e5f6789abcdef01234561111::endpoint-gateway:r006-2009f147-768a-4f6a-b8fa-75f20456cec2
    Target                        CRN      
                                  crn:v1:bluemix:public:containers-kubernetes:us-east:a/9f8e7d6c5b4a321fedcba98765432222:c8m5n3p2q4x6z1w7y077::
    
    DNS resolution binding mode   primary   
    Target Type                   provider_cloud_service   
    Target Remote                 ID                        Name   Resource type      
                                  No target remote found.      
    
    VPC                           ID                                          Name      
                                  r006-ecf65055-6868-4368-aa7c-48fc5ac29ff8   network-fvt-us-south      
    
    Private IPs                   ID                                          Name                         Address      Subnet ID      
                                  0717-685e1410-2fa1-4e7a-a4e5-27a097ec7a7a   reserved-ip-for-us-south-1   10.240.1.5   0717-cdd4b20c-b48f-454b-b092-ad7aa14b39c8      
    
    Service Endpoints             c8m5n3p2q4x6z1w7y077.vpe.private.us-east.containers.cloud.ibm.com
    Lifecycle State               stable   
    Health State                  ok   
    Security groups               ID                                          Name      
                                  r006-7ae081e2-743d-4046-b755-5ca9997ae077   spotted-sandpaper-auction-unluckily      
    
    Created                       2026-04-04T18:17:12-05:00   
    Resource Group                Default
    
  7. 在第二个区域创建一个保留 IP,并将其连接到 VPE 网关。

    ibmcloud is subnet-reserved-ip-create network-fvt-us-south-2-pubgw --vpc network-fvt-us-south --name reserved-ip-for-us-south-2 --auto-delete true --target new-iks-c8m5n3p2q4x6z1w7y077
    

    示例输出

    Creating reserved IP in subnet network-fvt-us-south-2-pubgw under account Source Account as user user1@example.com...
    
    ID                0727-d315d943-c501-4f69-823d-bb82a2b13b29   
    Name              reserved-ip-for-us-south-2   
    Address           0.0.0.0   
    Auto delete       true   
    Owner             user   
    Created           2026-04-04T18:19:24-05:00   
    Lifecycle state   pending   
    Target            ID                                          Name                           Resource type      CRN      
                      r006-2009f147-768a-4f6a-b8fa-75f20456cec2   new-iks-c8m5n3p2q4x6z1w7y077   endpoint_gateway   crn:v1:bluemix:public:is:us-south:a/a1b2c3d4e5f6789abcdef01234561111::endpoint-gateway:r006-2009f147-768a-4f6a-b8fa-75f20456cec2
    
  8. 在第三个区域创建一个保留 IP,并将其连接到 VPE 网关。

    ibmcloud is subnet-reserved-ip-create network-fvt-us-south-3-pubgw --vpc network-fvt-us-south --name reserved-ip-for-us-south-3 --auto-delete true --target new-iks-c8m5n3p2q4x6z1w7y077
    

    示例输出

    Creating reserved IP in subnet network-fvt-us-south-3-pubgw under account Source Account as user user1@example.com...
    
    ID                0737-afbebd9f-02bd-4b9a-be90-5bacf9836041   
    Name              reserved-ip-for-us-south-3   
    Address           0.0.0.0   
    Auto delete       true   
    Owner             user   
    Created           2026-04-04T18:19:32-05:00   
    Lifecycle state   pending   
    Target            ID                                          Name                           Resource type      CRN      
                      r006-2009f147-768a-4f6a-b8fa-75f20456cec2   new-iks-c8m5n3p2q4x6z1w7y077   endpoint_gateway   crn:v1:bluemix:public:is:us-south:a/a1b2c3d4e5f6789abcdef01234561111::endpoint-gateway:r006-2009f147-768a-4f6a-b8fa-75f20456cec2
    
  9. 确认已添加所有保留 IP。

    ibmcloud is eg new-iks-c8m5n3p2q4x6z1w7y077
    

    示例输出

    Getting endpoint gateway new-iks-c8m5n3p2q4x6z1w7y077 under account Source Account as user user1@example.com...
    
    ID                            r006-2009f147-768a-4f6a-b8fa-75f20456cec2   
    Name                          new-iks-c8m5n3p2q4x6z1w7y077
    CRN                           crn:v1:bluemix:public:is:us-south:a/a1b2c3d4e5f6789abcdef01234561111::endpoint-gateway:r006-2009f147-768a-4f6a-b8fa-75f20456cec2
    Target                        CRN      
                                  crn:v1:bluemix:public:containers-kubernetes:us-east:a/9f8e7d6c5b4a321fedcba98765432222:c8m5n3p2q4x6z1w7y077::
    
    DNS resolution binding mode   primary   
    Target Type                   provider_cloud_service   
    Target Remote                 ID                        Name   Resource type      
                                  No target remote found.      
    
    VPC                           ID                                          Name      
                                  r006-ecf65055-6868-4368-aa7c-48fc5ac29ff8   network-fvt-us-south      
    
    Private IPs                   ID                                          Name                         Address        Subnet ID      
                                  0737-afbebd9f-02bd-4b9a-be90-5bacf9836041   reserved-ip-for-us-south-3   10.240.129.5   0737-71a34942-304c-4419-9205-3714a3574962      
                                  0717-685e1410-2fa1-4e7a-a4e5-27a097ec7a7a   reserved-ip-for-us-south-1   10.240.1.5     0717-cdd4b20c-b48f-454b-b092-ad7aa14b39c8      
                                  0727-d315d943-c501-4f69-823d-bb82a2b13b29   reserved-ip-for-us-south-2   10.240.65.5    0727-50b14707-c9f6-4f93-9f49-99de13c66161      
    
    Service Endpoints             c8m5n3p2q4x6z1w7y077.vpe.private.us-east.containers.cloud.ibm.com
    Lifecycle State               stable   
    Health State                  ok   
    Security groups               ID                                          Name      
                                  r006-7ae081e2-743d-4046-b755-5ca9997ae077   spotted-sandpaper-auction-unluckily      
    
    Created                       2026-04-04T18:17:12-05:00   
    Resource Group                Default
    
  10. 从源 VPC 中的 VSI 测试连接。

    curl -k https://c8m5n3p2q4x6z1w7y077.vpe.private.us-east.containers.cloud.ibm.com:31100/version
    

    示例输出

    {
      "major": "1",
      "minor": "32",
      "gitVersion": "v1.32.12",
      "gitCommit": "9b706b45b52a0c8bb05847295ee98ffccbabba32",
      "gitTreeState": "clean",
      "buildDate": "2026-02-19T13:30:47Z",
      "goVersion": "go1.23.10 (Red Hat 1.23.10-10.el9) X:strictfipsruntime",
      "compiler": "gc",
      "platform": "linux/amd64"
    }
    
  11. 验证主机名是否解析到保留 IP。

    dig +short c8m5n3p2q4x6z1w7y077.vpe.private.us-east.containers.cloud.ibm.com
    

    示例输出

    10.240.65.5
    

使用 API 密钥从自动化工具访问群集

Red Hat OpenShift on IBM Cloud 集成于 IBM CloudIdentity and Access Management (IAM)。 通过 IAM,您可以使用其 IAM 身份对用户和服务进行认证,并通过访问角色和策略来授权操作。 当你通过 Red Hat OpenShift 控制台进行用户身份验证时,你的 IAM 身份会被用来生成 Red Hat OpenShift 登录令牌,你可以用它登录到命令行。 通过创建 IAM API 密钥或服务标识以用于 oc login 命令,可以自动登录到集群。

使用 API 密钥登录群集

您可以创建 IBM Cloud IAM API 密钥,然后使用 API 密钥登录 Red Hat OpenShift 集群。 通过 API 密钥,可以使用一个用户或共享帐户的凭证来访问集群,而不必分别进行登录。 您还可以为服务标识创建 API 密钥。 有关更多信息,请参阅了解 API 密钥

  1. 创建 IBM Cloud API 密钥。 请将 API 密钥保存在安全位置。 您无法再次获取 API 密钥。 如果要将输出导出到本地计算机上的文件,请加入 --file <path>/<file_name> 选项。

    ibmcloud iam api-key-create <name>
    
  2. 配置集群以将 API 密钥用户添加到集群 RBAC 策略,并将会话上下文设置为集群服务器。

    1. 使用 API 密钥凭证登录到 IBM Cloud。
      ibmcloud login --apikey <API_key>
      
    2. 将集群的 kubeconfig 配置文件下载并添加到 ~/.kube/config 中的现有 kubeconfigKUBECONFIG 环境变量中的最后一个文件。 : 如果您已启用私有云服务端点并希望将其用于集群上下文,请包含 --endpoint private 选项。 要使用私有云服务端点连接到集群,您必须位于 IBM Cloud 专用网络中,或者通过 VPC VPN 连接 连接到专用网络,或者对于经典基础结构,经典 VPN 连接IBM Cloud Direct Link
      ibmcloud oc cluster config -c <cluster_name_or_ID> [--endpoint private]
      
  3. 将 IBM Cloud IAM API 密钥凭证交换为 Red Hat OpenShift 访问令牌。 您可以从 CLI 或 API 登录。 有关更多信息,请参阅 Red Hat OpenShift 文档

    使用 oc CLI 登录: 使用 oc login 命令登录群集。 用户名 (-u) 是 apikey,密码 (-p) 是 IBM Cloud IAM API 密钥值。 要使用私有云服务端点,请包含 --server=<private_service_endpoint> 选项。

    oc login -u apikey -p <API_key> [--server=<private_service_endpoint>]
    

    通过运行 Red Hat OpenShift API 请求直接针对集群登录: 使用 API (例如,通过 curl 请求) 登录到集群。

    1. 获取集群的主 URL

      ibmcloud oc cluster get -c <cluster_name_or_ID>
      

      示例输出

      NAME:                           mycluster
      ID:                             1234567
      State:                          normal
      Created:                        2020-01-22T19:22:16+0000
      Location:                       dal10
      Master URL:                     https://c100-e.<region>.containers.cloud.ibm.com:<port>
      ...
      
      
    2. 获取 Red Hat OpenShift oauth 服务器的令牌端点。

      curl <master_URL>/.well-known/oauth-authorization-server | jq -r .token_endpoint
      

      示例输出

      <token_endpoint>/oauth/token
      

      : 屏幕}

    3. 使用先前检索到的端点登录到集群。 将 <URL> 替换为 oauth 服务器的 <token_endpoint>

      示例 curl 请求:

      curl -u 'apikey:<API_key>' -H "X-CSRF-Token: a" '<URL>/oauth/authorize?client_id=openshift-challenging-client&response_type=token' -vvv
      
    4. Location 响应中,查找 access_token,如以下示例中所示。

      < HTTP/1.1 302 Found
      < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
      < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
      < Expires: 0
      < Expires: Fri, 01 Jan 1990 00:00:00 GMT
      < Location: <token_endpoint>/oauth/token/implicit#access_token=<access_token>&expires_in=86400&scope=user%3Afull&token_type=Bearer
      ...
      
    5. 使用集群管理员 URL 和访问令牌访问 Red Hat OpenShift API,例如列出集群中的所有 Pod。 更多信息,请参阅 Red Hat OpenShift API文档

      示例 curl 请求:

      curl -H "Authorization: Bearer <access_token>" '<master_URL>/api/v1/pods'
      

使用服务 ID 登录群集

您可以创建 IBM Cloud IAM 服务 ID,为服务 ID 制作 API 密钥,然后使用 API 密钥登录 Red Hat OpenShift 集群。 可以使用服务标识,以便其他集群或云中托管的应用程序可以访问您集群的服务。 由于服务标识不会绑定到特定用户,因此如果单个用户离开您的帐户,应用程序仍可以认证服务标识。 有关更多信息,请参阅创建和使用服务标识

  1. 为集群创建 IBM Cloud IAM 服务标识,此标识用于 IAM 策略和 API 密钥凭证。 请确保为服务标识提供描述,以帮助您日后检索服务标识,例如包含集群名称。

    ibmcloud iam service-id-create <cluster_name>-id --description "Service ID for Red Hat OpenShift on IBM Cloud cluster <cluster_name>"
    

    示例输出

    NAME          <cluster_name>-id
    Description   Service ID for Red Hat OpenShift on IBM Cloud cluster <cluster_name>
    CRN           crn:v1:bluemix:public:iam-identity::a/1aa111aa1a11111aaa1a1111aa1aa111::serviceid:ServiceId-bbb2b2b2-2bb2-2222-b222-b2b2b2222b22
    Bound To      crn:v1:bluemix:public:::a/1aa111aa1a11111aaa1a1111aa1aa111:::
    Version       1-c3c333333333ccccc33333c33cc3cc33
    Locked        false
    UUID          ServiceId-bbb2b2b2-2bb2-2222-b222-b2b2b2222b22
    
  2. 为集群服务标识创建定制 IBM Cloud IAM 策略,以授予对 Red Hat OpenShift on IBM Cloud 的访问权。

    ibmcloud iam service-policy-create <cluster_service_ID> --service-name containers-kubernetes --roles <service_access_role> --service-instance <cluster_ID>
    
    了解此命令的组成部分
    参数 描述
    <cluster_service_ID> 必需。 输入您之前为 Red Hat OpenShift 集群创建的服务 ID。
    --service-name containers-kubernetes 必需。 输入 containers-kubernetes,以便 IAM 策略用于 Red Hat OpenShift on IBM Cloud 集群。
    --roles <service_access_role> 必需。 输入您希望服务 ID 对 Red Hat OpenShift 集群的访问角色。 平台访问角色 允许群集管理活动,如创建工作节点。 服务访问角色 对应于 RBAC 角色,允许 Red Hat OpenShift 集群内的管理活动,如 Kubernetes 资源(如 pod 和命名空间)。 对于多个角色,请使用逗号分隔的列表。 可能的值是 AdministratorOperatorEditorViewer (平台访问角色);以及 ReaderWriterManager (服务访问角色)。
    --service-instance <cluster_ID> 要将策略的作用对象限制为特定集群,请输入该集群的标识。 要获取集群标识,请运行 ibmcloud oc clusters。 如果不包括服务实例,访问策略会授予服务 ID 对所有群集、Kubernetes 和 Red Hat OpenShift 的访问权。 此外,还可以将访问策略的作用域限定为某个区域 (--region) 或资源组 (--resource-group-name)。
  3. 为服务标识创建 API 密钥。 将 API 密钥命名为与您的服务 ID 相似的名称,并包含您之前创建的服务 ID,<cluster_name>-id。 请确保为 API 密钥提供描述,以帮助您日后检索该密钥。 请将 API 密钥保存在安全位置。 您无法再次获取 API 密钥。 如果要将输出导出到本地计算机上的文件,请加入 --file <path>/<file_name> 选项。

    ibmcloud iam service-api-key-create <cluster_name>-key <service_ID> --description "API key for service ID <service_ID> in Red Hat OpenShift cluster <cluster_name>"
    

    示例输出

    Please preserve the API key! It can't be retrieved after it's created.
    
    Name          <cluster_name>-key
    Description   API key for service ID <service_ID> in Red Hat OpenShift cluster <cluster_name>
    Bound To      crn:v1:bluemix:public:iam-identity::a/1bb222bb2b33333ddd3d3333ee4ee444::serviceid:ServiceId-ff55555f-5fff-6666-g6g6-777777h7h7hh
    Created At    2019-02-01T19:06+0000
    API Key       i-8i88ii8jjjj9jjj99kkkkkkkkk_k9-llllll11mmm1
    Locked        false
    UUID          ApiKey-222nn2n2-o3o3-3o3o-4p44-oo444o44o4o4
    
  4. 配置集群以将服务标识用户添加到集群 RBAC 策略,并将会话上下文设置为集群服务器。

    1. 使用服务标识的 API 密钥凭证登录到 IBM Cloud。

      ibmcloud login --apikey <API_key>
      
    2. 将集群的 kubeconfig 配置文件下载并添加到 ~/.kube/config 中的现有 kubeconfigKUBECONFIG 环境变量中的最后一个文件。 : 如果您已启用私有云服务端点并希望将其用于集群上下文,请包含 --endpoint private 选项。 要使用私有云服务端点连接到集群,您必须位于 IBM Cloud 专用网络中,或者通过 VPC VPN 连接 连接到专用网络,或者对于经典基础结构,经典 VPN 连接IBM Cloud Direct Link

      ibmcloud oc cluster config -c <cluster_name_or_ID> [--endpoint private]
      
  5. 使用服务 ID 的 API 密钥登录 Red Hat OpenShift 集群。 用户名 (-u) 是 apikey,密码 (-p) 是您的 API 密钥值。 要使用私有云服务端点,请包含 --server=<private_service_endpoint> 选项。

    oc login -u apikey -p <API_key> [--server=<private_service_endpoint>]
    
  6. 验证服务标识是否可以执行您授权的操作。

    例如:如果分配了 Reader 服务访问角色,服务 ID 就可以列出 Red Hat OpenShift 项目中的 pod。

    oc get pods
    

    例如:如果分配了 Manager 服务访问角色,则服务 ID 可以列出 Red Hat OpenShift 集群中的用户。 IAM 服务标识位于 Identities 输出中。 其他各个用户可能通过其电子邮件地址和 IBM 标识进行识别。

    oc get users
    

    示例输出

    NAME                           UID                                    FULL NAME   IDENTITIES
    IAM#                           dd44ddddd-d4dd-44d4-4d44-4d44d444d444              IAM:iam-ServiceId-bbb2b2b2-2bb2-2222-b222-b2b2b2222b22
    IAM#first.last@email.com       55555ee5-e555-55e5-e5e5-555555ee55ee               IAM:IBMid-666666FFF6
    

使用基于上下文的限制来保护集群

不再支持专用服务端点允许列表。 尽快从专用服务端点允许列表迁移到基于上下文的限制。 有关具体迁移步骤,请参阅 从专用服务端点允许列表迁移到基于上下文的限制(CBR)

使用基于上下文的限制(CBR)规则,控制对公共和专用服务端点的访问。

通过 IBM Cloud IAM 授予用户访问群集的权限 后,您可以为群集的公共和私有服务端点创建 CBR 规则,从而增加第二层安全性。 只允许向群集主控发送来自 CBR 规则中子网的授权请求。

如果要允许来自与群集所在 VPC 不同的 VPC 的请求,则必须在 CBR 规则中包含该 VPC 的云服务端点 IP 地址。

例如,要访问集群的私有云服务端点,必须通过 VPN 或 IBM Cloud Direct Link连接到 IBM Cloud 经典网络或 VPC 网络。 您可以在 CBR 规则中只指定 VPN 或 Direct Link 隧道的子网,这样只有组织内的授权用户才能从该子网访问私有云服务端点。

公共 CBR 规则(如果群集有公共服务端点)还有助于防止用户在授权被撤销后访问群集。 当用户离开组织时,您将删除其 IBM Cloud IAM 权限,因为该权限授予他们访问群集的权限。 不过,用户可能复制了某个群集的管理员 kubeconfig 文件,从而获得了访问该群集的权限。 如果公共 CBR 规则只允许从贵组织拥有的已知公共子网访问群集主控器,那么用户试图从另一个公共 IP 地址访问将被阻止。

工作节点子网会自动添加到后端 CBR 实现(但不会从 CBR 规则/区域)中移除,这样工作节点就能始终访问群集主控器,用户也无需特别将这些子网添加到自己的 CBR 规则中。

要了解有关使用 CBR 规则保护群集的更多信息,请参阅 使用基于上下文的限制保护群集资源基于上下文的限制方案示例