1.5. 创建基础架构环境

您可以使用 Red Hat Advanced Cluster Management for Kubernetes 控制台创建一个基础架构环境,以管理主机并在这些主机上创建集群。

基础架构环境支持以下功能:

  • 集群的零接触置备:使用脚本部署集群。如需更多信息,请参阅 Red Hat OpenShift Container Platform 文档中的在断开连接的环境中部署分布式单元
  • 最后绑定:启用主机由基础架构管理员引导,并且集群的创建者可以稍后将集群绑定到该主机。在使用较晚绑定时,集群创建者不需要具有基础架构的管理员特权。
  • 双堆栈:部署具有 IPv4 和 IPv6 地址的集群。双堆栈使用 OVN-Kubernetes 网络实现来支持多个子网。
  • 添加远程 worker 节点:在集群创建并运行后向集群添加远程 worker 节点,从而提供在其他位置添加节点以进行备份的灵活性。
  • 使用 NMState 的静态 IP:使用 NMState API 为您的环境定义静态 IP 地址。

1.5.1. 先决条件

在创建基础架构环境前,请查看以下先决条件:

  • 您必须在 hub 集群中部署了 OpenShift Container Platform。
  • 对于联网环境,通过互联网访问 Red Hat Advanced Cluster Management hub 集群;对于非联网环境,连接到一个可访问互联网的内部或镜像 registry,以获取创建环境所需的镜像。
  • hub 集群中中央基础架构管理 (CIM) 功能配置的实例。请参阅启用中央基础架构管理服务
  • 您需要 OpenShift Container Platform pull secret。如需更多信息,请参阅使用镜像 pull secret
  • 默认情况下,您的 SSH 密钥位于 ~/.ssh/id_rsa.pub 文件中。
  • 您需要一个配置的存储类。
  • 断开连接的环境: 完成 OpenShift Container Platform 文档中的准备断开连接的环境的步骤。

1.5.2. 启用中央基础架构管理服务

Central Infrastructure Management 服务随 {mce-short} 提供,并部署 OpenShift Container Platform 集群。当您在 hub 集群上启用 MultiClusterHub Operator 时,CIM 被部署,但必须启用。

要启用 CIM 服务,请完成以下步骤:

重要: 只有在以下其中一个平台上安装了 hub 集群:裸机、Red Hat OpenStack Platform、VMware vSphere 或使用用户置备的基础架构(UPI)方法安装,且平台为 None,请完成以下步骤。如果您的 hub 集群位于任何其他平台上,请跳过这一步。

  1. 运行以下命令,修改 Provisioning 资源以允许 Bare Metal Operator 监视所有命名空间:

    oc patch provisioning provisioning-configuration --type merge -p '{"spec":{"watchAllNamespaces": true }}'
  2. 对于断开连接的环境: 在与基础架构 Operator 相同的命名空间中创建一个 ConfigMap,为您的镜像 registry 指定 ca-bundle.crtregistry.conf 的值。您的文件 ConfigMap 应该类似以下示例:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: <mirror-config>
      namespace: "<infrastructure-operator-namespace>"
      labels:
        app: assisted-service
    data:
      ca-bundle.crt: |
        -----BEGIN CERTIFICATE-----
        certificate contents
        -----END CERTIFICATE-----
    
      registries.conf: |
        unqualified-search-registries = ["registry.access.redhat.com", "docker.io"]
    
        [[registry]]
           prefix = ""
           location = "quay.io/edge-infrastructure"
           mirror-by-digest-only = false
    
           [[registry.mirror]]
           location = "mirror1.registry.corp.com:5000/edge-infrastructure"

1.5.2.1. 创建 AgentServiceConfig 自定义资源

通过完成以下步骤来创建 AgentServiceConfig 自定义资源:

  1. 仅限断开连接的环境:agent_service_config.yaml 文件中保存以下 YAML 内容,并根据需要替换值:

    apiVersion: agent-install.openshift.io/v1beta1
    kind: AgentServiceConfig
    metadata:
     name: agent
    spec:
      databaseStorage:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <db_volume_size>
      filesystemStorage:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <fs_volume_size>
      mirrorRegistryRef:
        name: <mirror_config>
      unauthenticatedRegistries:
        - <unauthenticated_registry>
      imageStorage:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <img_volume_size>
      osImages:
        - openshiftVersion: "<ocp_version>"
          version: "<ocp_release_version>"
          url: "<iso_url>"
          rootFSUrl: "<root_fs_url>"
          cpuArchitecture: "x86_64"

    mirror_config 替换为包含您的镜像 registry 配置详情的 ConfigMap 名称。

    如果您使用不需要身份验证的镜像 registry,请包含可选的 unauthenticated_registry 参数。此列表上的条目不会被验证,或者需要在 pull secret 中有一个条目。

  2. 仅限连接的环境:agent_service_config.yaml 文件中保存以下 YAML 内容:

    apiVersion: agent-install.openshift.io/v1beta1
    kind: AgentServiceConfig
    metadata:
     name: agent
    spec:
      databaseStorage:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <db_volume_size>
      filesystemStorage:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <fs_volume_size>
      imageStorage:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: <img_volume_size>

    使用 databaseStorage 字段的卷大小替换 db_volume_size,如 10Gi。这个值指定为存储集群分配的存储量,如数据库表和数据库视图。如果有多个集群,您可能需要使用较高的值。

    fs_volume_size 替换为 filesystemStorage 字段的卷大小,例如,每个集群 200M 和每个支持的 OpenShift Container Platform 版本 2-3G。所需的最小值为 100G。这个值指定为存储集群的日志、清单和 kubeconfig 文件分配了多少存储。如果有多个集群,您可能需要使用较高的值。

    img_volume_size 替换为 imageStorage 字段的卷大小,例如每个操作系统镜像的 2G。最小值为 50G。这个值指定为集群镜像分配多少存储。您需要为每个运行的 Red Hat Enterprise Linux CoreOS 实例提供 1 GB 的镜像存储。如果 Red Hat Enterprise Linux CoreOS 有多个集群和实例,您可能需要使用更高的值。

    ocp_version 替换为要安装的 OpenShift Container Platform 版本,如 4.9

    ocp_release_version 替换为特定的安装版本,例如:49.83.202103251640-0

    使用 ISO url 替换 iso_url,例如 https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.10/4.10.3/rhcos-4.10.3-x86_64-live.x86_64.iso。您可以在以下位置找到其他值:https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.10/4.10.3/

    使用 root FS 镜像 URL 替换 root_fs_url,例如 https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.10/4.10.3/rhcos-4.10.3-x86_64-live-rootfs.x86_64.img。您可以在以下位置找到其他值:https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.10/4.10.3/

  3. 运行以下命令来创建 AgentServiceConfig 自定义资源:

    oc create -f agent_service_config.yaml

    输出可能类似以下示例:

    agentserviceconfig.agent-install.openshift.io/agent created

您可以通过检查 assisted-serviceassisted-image-service 部署,确定 pod 已就绪并在运行,来验证其状态是否正常。使用控制台继续创建基础架构环境

1.5.2.2. 手动创建 Provisioning 自定义资源 (CR)

使用以下命令手动创建 Provisioning CR 来为自动置备启用服务:

oc create -f provisioning-configuration.yaml

您的 CR 可能类似以下示例:

apiVersion: metal3.io/v1alpha1
kind: Provisioning
metadata:
  name: provisioning-configuration
spec:
  provisioningNetwork: Disabled
  watchAllNamespaces: true

1.5.2.3. 在 Amazon Web Services 上启用中央基础架构管理

如果您在 Amazon Web Services 上运行 hub 集群并希望启用 CIM 服务,请在 启用 CIM 后完成以下步骤:

  1. 确保已在 hub 中登录,并通过运行以下命令查找在 assisted-image-service 上配置的唯一域:

    oc get routes --all-namespaces | grep assisted-image-service

    您的域可能类似以下示例:assisted-image-service-multicluster-engine.apps.<yourdomain>.com

  2. 确保已在 hub 中登录,并使用 NLB type 参数创建带有唯一域的新 IngressController。请参见以下示例:

    apiVersion: operator.openshift.io/v1
    kind: IngressController
    metadata:
      name: ingress-controller-with-nlb
      namespace: openshift-ingress-operator
    spec:
      domain: nlb-apps.<domain>.com
      routeSelector:
          matchLabels:
            router-type: nlb
      endpointPublishingStrategy:
        type: LoadBalancerService
        loadBalancer:
          scope: External
          providerParameters:
            type: AWS
            aws:
              type: NLB
  3. <yourdomain> 添加到 IngressController 中的 domain 参数,方法是使用 <yourdomain> 替换 nlb-apps.<domain>.com<domain>
  4. 使用以下命令应用新的 IngressController

    oc apply -f ingresscontroller.yaml
  5. 运行以下命令来编辑 assisted-image-service 路由以使用 nlb-apps 位置:

    oc edit route assisted-image-service -n <namespace>

    提示:默认命名空间是您安装 :mce: 的位置。

  6. assisted-image-service 路由中添加以下行:

    metadata:
      labels:
        router-type: nlb
      name: assisted-image-service
  7. assisted-image-service 路由中,找到 spec.host 的 URL 值。URL 可能类似以下示例:

    assisted-image-service-multicluster-engine.apps.<yourdomain>.com

  8. 将 URL 中的 apps 替换为 nlb-apps,以匹配新 IngressController 中配置的域。

要验证 CIM 服务是否在 Amazon Web Services 上启用,请完成以下步骤:

  1. 运行以下命令验证 pod 是否健康:

    oc get pods -n multicluster-engine | grep assist
  2. 创建新的基础架构环境,并确保下载 URL 使用新的 nlb-apps URL。

1.5.3. 使用控制台创建基础架构环境

要从 Red Hat Advanced Cluster Management 控制台创建基础架构环境,请完成以下步骤:

  1. 在导航菜单中导航到 Infrastructure > Infrastructure environments,再点 Create infrastructure environment
  2. 在您的基础架构环境设置中添加以下信息:

    • 名称:您的环境的唯一名称。
    • 网络类型:指定可以将哪些类型的主机添加到您的环境中。您只能在使用裸机主机时使用静态 IP 选项。
    • 位置:指定主机的地理位置。地理位置可用于在创建集群时轻松确定集群中的数据的存储位置。
    • 标签:您可以在基础架构环境中添加标签的可选字段,以便您可以更轻松地将环境与具有特征的其他环境进行分组。您为网络类型和位置所做的选择将自动添加到标签列表中。
    • pull secret:用于访问 OpenShift Container Platform 资源的 OpenShift Container Platform pull secret
    • SSH 公钥:实现与主机安全通信的 SSH 密钥。默认情况下,这通常在您的 ~/.ssh/id_rsa.pub 文件中。
    • 如果要在所有集群中启用代理设置,请选择设置来启用它。这要求您输入以下信息:

      • HTTP 代理 URL:在访问发现服务时使用的 URL。
      • HTTPS 代理 URL:访问发现服务时应使用的安全代理 URL。请注意,格式必须是 http,因为尚不支持 https
      • 无代理域:应当绕过代理的以逗号分隔的域列表。使用一个句点 (.) 开始的域名,包含该域中的所有子域。添加星号 (*) 以绕过所有目的地的代理。

现在,您可以通过将主机添加到基础架构环境来继续。

要访问基础架构环境,请在控制台中选择 Infrastructure > Host inventory。从列表中选择您的基础架构环境,以查看该基础架构环境的详细信息和主机。

1.5.4. 将主机添加到基础架构环境中

您可以使用 Red Hat Advanced Cluster Management for Kubernetes 控制台将主机添加到基础架构环境中。通过添加主机,可以在创建集群时选择已配置的主机。

完成以下步骤以添加主机:

  1. 在 Red Hat Advanced Cluster Management 导航中,选择 Infrastructure > Infrastructure environments
  2. 选择您要添加主机以查看其设置的基础架构环境。
  3. 选择 Hosts 选项卡来查看已添加到该环境中的主机并添加主机。可用主机可能需要几分钟时间才会出现在表中。
  4. 选择 Discovery ISOBaseboard Management Controller(BMC) 来输入主机的信息。
  5. 如果您选择了 Discovery ISO 选项,请完成以下步骤:

    1. 复制控制台中提供的命令,以下载 ISO 或选择 Download Discovery ISO
    2. 在可引导设备上运行 命令,以启动每个主机。
    3. 若要提高安全性,您需要为每个发现的主机选择批准主机。这一额外步骤可在您的 ISO 文件由未经授权的人员更改并运行时提供一些保护。
    4. 将主机(即 localhost)重命名为唯一名称。
  6. 如果您选择 Baseboard Management Controller(BMC) 选项,请完成以下步骤:

    注:只有 Red Hat Advanced Cluster Management hub 集群平台为裸机、Red Hat OpenStack Platform、VMware vSphere 或是使用用户置备的基础架构(UPI)方法安装的,可以使用添加主机的 BMC 选项,平台为 None

    1. 添加主机的 BMC 连接详情。
    2. 选择 Add host 以开始引导过程。主机通过使用发现 ISO 镜像自动引导,并在主机启动时添加到主机列表中。

      当您使用 BMC 选项添加主机时,该主机会被自动批准。

现在,您可以在此基础架构环境中创建一个内部集群。如需了解更多与创建集群相关的信息,请参阅在内部环境中创建集群