1.3.5. 通过 CLI 安装
OpenShift Container Platform Dedicated 环境需要的访问权限: 集群管理员,因为默认的 dedicated-admin
角色没有在 OpenShift Container Platform Dedicated 环境中创建命名空间所需的权限。您必须具有 cluster-admin
权限。
创建一个 hub 集群命名空间,其中包含 Operator 的要求。运行以下命令,其中
namespace
是 hub 集群命名空间的名称。在 OpenShift Container Platform 环境中,namespace
的值可能被称为 Project(项目)。oc create namespace <namespace>
将项目命名空间切换到您创建的命名空间。使用在第 1 步中创建的 hub 集群命名空间的名称替换
namespace
。oc project <namespace>
如果您计划导入不是由 OpenShift Container Platform 或 Red Hat Advanced Cluster Management 创建的 Kubernetes 集群,生成一个包含 OpenShift Container Platform pull secret 信息的 secret,以从发行 registry 中访问授权内容。OpenShift Container Platform 集群的 secret 要求由 OpenShift Container Platform 和 Red Hat Advanced Cluster Management 自动解决,因此如果您没有导入其他类型的 Kubernetes 集群,则不必创建 secret。重要:这些 secret 是特定于命名空间的,因此请确保处于在第 1 步中创建的命名空间中。
- 选择 Download pull secret 从 cloud.redhat.com/openshift/install/pull-secret 下载 OpenShift Container Platform pull secret 文件。您的 OpenShift Container Platform pull secret 与您的 Red Hat Customer Portal ID 相关联,在所有 Kubernetes 供应商中都是相同的。
运行以下命令来创建 secret:
oc create secret generic <secret> -n <namespace> --from-file=.dockerconfigjson=<path-to-pull-secret> --type=kubernetes.io/dockerconfigjson
将
secret
替换为您要创建的 secret 的名称。将namespace
替换为项目命名空间,因为 secret 是特定于命名空间的。将path-to-pull-secret
替换为您下载的 OpenShift Container Platform pull secret 的路径。
创建一个 operator 组。每个命名空间只能有一个 operator 组。
创建定义 operator 组的 YAML 文件。文件内容应类似以下示例。将
default
替换为 operator 组的名称。将namespace
替换为项目命名空间的名称:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: <default> spec: targetNamespaces: - <namespace>
应用您创建的文件来定义 operator 组:
oc apply -f <path-to-file><operator-group>.yaml
将
operator-group
替换为您创建的 operator 组 YAML 文件的名称。
应用订阅。
创建定义订阅的 YAML 文件。文件内容应类似以下示例:
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: acm-operator-subscription spec: sourceNamespace: openshift-marketplace source: redhat-operators channel: release-2.3 installPlanApproval: Automatic name: advanced-cluster-management
如果要在 infra 节点上安装以下内容:
spec: config: nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - key: node-role.kubernetes.io/infra effect: NoSchedule operator: Exists
-
运行以下命令。使用您创建的订阅文件的名称替换
subscription
:
oc apply -f <path-to-file><subscription>.yaml
应用 MultiClusterHub 自定义资源。
创建定义自定义资源的 YAML 文件。
-
您的默认模板应当类似于以下示例。将
namespace
替换为项目命名空间的名称。如果您没有创建 pull secret,则不会显示它。如果这样做,将secret
替换为本例的 pull secret 的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: imagePullSecret: <secret>
-
您的默认模板应当类似于以下示例。将
-
可选: 如果启用了安装程序管理的
acm-hive-openshift-releases
订阅,您可以通过将disableUpdateClusterImageSets
的值设置为true
来禁用订阅。 可选: 如有必要,禁用 hub 自助管理。默认情况下,Red Hat Advanced Cluster Management hub 集群会自动导入和管理。此 受管 hub 集群名为
local-cluster
。如果您不希望 Red Hat Advanced Cluster Management hub 集群管理自己,请将
disableHubSelfManagement
的设置从false
改为true
。如果该设置没有包括在定义自定义资源的 YAML 文件中,请添加它。hub 集群只能通过这个选项进行管理。将这个选项设置为
true
并尝试手动管理 hub,会导致意外行为。如果您创建了 pull secret 并启用了
disableHub selfManagement
功能,则默认模板应类似以下示例。将namespace
替换为项目命名空间的名称。将secret
替换为 pull secret 的名称:apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: imagePullSecret: <secret> disableHubSelfManagement: true
使用以下命令应用自定义资源。将
custom-resource
替换为自定义资源文件的名称:oc apply -f <path-to-path><custom-resource>.yaml
如果此步骤失败并显示以下错误,则仍然会创建并应用这些资源。创建资源后几分钟内再次运行命令:
error: unable to recognize "./mch.yaml": no matches for kind "MultiClusterHub" in version "operator.open-cluster-management.io/v1"
运行以下命令来获取自定义资源。在运行以下命令后,在最多 10 分钟内,
MultiClusterHub
自定义资源状态会在status.phase
字段中显示为Running
:oc get mch -o=jsonpath='{.items[0].status.phase}'
状态变为
Running
后,查看查找路由的路由列表:oc get routes
如果您重新安装 Red Hat Advanced Cluster Management 但 pod 没有启动,请参阅故障排除重新安装失败以了解解决这个问题的步骤。