1.4.3. 通过 CLI 安装
创建一个 hub 集群命名空间,其中包含 Operator 的要求:
oc create namespace <namespace>
使用 hub 集群命名空间的名称替换 namespace。备注:在 Red Hat OpenShift Container Platform 环境中,namespace 的值可能被称为 Project (项目)。
重要:具有
ClusterRoleBinding
的ServiceAccount
会自动向 Red Hat Advanced Cluster Management 以及有权访问安装 Red Hat Advanced Cluster Management 的命名空间的用户凭证授予集群管理员特权。安装还创建一个名为local-cluster
的命名空间。这个命名空间为 hub 集群保留,以用于对自身的管理。因此,不能已存在名为local-cluster
的命名空间。出于安全考虑,不要向任何还没有 cluster-administrator 访问权限的用户授予local-cluster
的访问权限。将项目命名空间切换到您创建的命名空间:
oc project <namespace>
使用在第 1 步中创建的 hub 集群命名空间的名称替换 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 替换为项目命名空间。将 path-to-pull-secret 替换为您下载的 OpenShift Container Platform pull secret 的路径。
创建一个 operator 组。每个命名空间只能有一个 operator 组。
创建一个用来定义 operator 组的
.yaml
文件。文件内容应类似以下示例:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: <default> spec: targetNamespaces: - <namespace>
将 default 替换为 operator 组的名称。将 namespace 替换为项目命名空间的名称。
应用您创建的文件来定义 operator 组:
oc apply -f local/<operator-group>.yaml
使用您创建的
.yaml
文件定义的 operator 组来替换 operator-group。
应用订阅。
创建定义订阅的
.yaml
文件。文件内容应类似以下示例:apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: acm-operator-subscription spec: sourceNamespace: openshift-marketplace source: redhat-operators channel: release-2.1 installPlanApproval: Automatic name: advanced-cluster-management
应用订阅:
oc apply -f local/<subscription>.yaml
使用您创建的订阅文件的名称替换 subscription。
应用 MultiClusterHub 自定义资源。
创建定义自定义资源的
.yaml
文件。如果没有创建 pull secret,则默认模板应类似以下示例:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace>
将 namespace 替换为项目命名空间的名称。
如果创建了 pull secret,则默认模板应类似以下示例:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: imagePullSecret: <secret>
将 namespace 替换为项目命名空间的名称。
将 secret 替换为您的 pull secret 的名称。
可选:如有必要,禁用 hub 自我管理。默认情况下,hub 集群会自动由自身导入和管理,与其他集群一样。如果您不希望 hub 集群管理自己,将
disableHubSelfManagement
的设置从false
改为true
。如果您创建了 pull secret 并启用了disableHub selfManagement
功能,则默认模板应类似以下示例:apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: imagePullSecret: <secret> disableHubSelfManagement: true
将 namespace 替换为项目命名空间的名称。
将 secret 替换为您的 pull secret 的名称。
应用自定义资源:
oc apply -f local/<custom-resource>.yaml
将 custom-resource 替换为自定义资源文件的名称。
重要:
local-cluster
命名空间用于导入的自管理的 hub 集群。在安装前,集群中不能有 local-cluster 命名空间。为 hub 集群创建local-cluster
命名空间后,任何有权访问local-cluster
命名空间的用户会自动被授予集群管理员访问权限。出于安全考虑,不要向任何还没有 cluster-administrator 访问权限的用户授予local-cluster
的访问权限。如果此步骤失败并显示以下错误信息,则仍会创建并应用这些资源:
error: unable to recognize "./mch.yaml": no matches for kind "MultiClusterHub" in version "operator.open-cluster-management.io/v1"
创建资源后几分钟内再次运行命令。
在运行以下命令后,
MultiClusterHub
自定义资源状态可能最多需要 10 分钟在 status.phase 字段中显示为Running
:oc get mch -o=jsonpath='{.items[0].status.phase}'
状态变为
Running
后,查看查找路由的路由列表:oc get routes
如果您重新安装 Red Hat Advanced Cluster Management,且 pod 没有启动,请参阅对安装失败进行故障排除以了解解决这个问题的步骤。