1.5. MultiClusterHub 高级配置
Red Hat Advanced Cluster Management for Kubernetes 会使用一个会部署所有需要的组件的 operator 进行安装。通过在 MultiClusterHub
自定义资源中添加一个或多个以下属性,可以在安装过程中或安装后进一步配置 Red Hat Advanced Cluster Management:
1.5.1. 自定义镜像 Pull Secret
如果您计划导入不是由 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。您的 OpenShift Container Platform pull secret 与您的 Red Hat Customer Portal ID 相关联,在所有 Kubernetes 供应商中都是相同的。
重要: 这些 secret 是特定于命名空间的,因此请确保处于用于 hub 集群的命名空间中。
- 进入 cloud.redhat.com/openshift/install/pull-secret 以下载 OpenShift Container Platform pull secret 文件。
- 点 Download pull secret。
运行以下命令来创建 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 的路径。
-
将
以下示例显示,如果使用自定义 pull secret,要使用的 spec.imagePullSecret
模板。将 secret 替换为 pull secret 的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: imagePullSecret: <secret>
1.5.2. availabilityConfig
Red Hat Advanced Cluster Management hub 集群有两个可用功能: High
和 Basic
。默认情况下,hub 集群的可用性为 High
,hub 集群组件副本数
为 2
。它提供了对故障转移功能的支持,但消耗的资源数量比可用性为 Basic
(副本数
为1
) 的集群多。
以下示例显示了具有 Basic
可用性的 spec.availabilityConfig
模板:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: availabilityConfig: "Basic"
1.5.3. nodeSelector
您可以在 Red Hat Advanced Cluster Management hub 集群中定义一组节点选择器,以安装到集群中的特定节点。以下示例显示了将 Red Hat Advanced Cluster Management pod 分配给带有标签 node-role.kubernetes.io/infra
的节点的 spec.nodeSelector
:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: nodeSelector: node-role.kubernetes.io/infra: ""
1.5.4. 容限(tolerations)
您可以定义容限列表,以便 Red Hat Advanced Cluster Management hub 集群可以容忍在集群中定义的特定污点。
以下示例显示了与 node-role.kubernetes.io/infra
污点匹配的 spec.tolerations
:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: tolerations: - key: node-role.kubernetes.io/infra effect: NoSchedule operator: Exists
默认情况下,以上 infra-node 容限在 pod 上设置,而不在配置中指定任何容限。在配置中自定义容限会替换这个默认值。
1.5.5. disableHubSelfManagement
默认情况下,Red Hat Advanced Cluster Management hub 集群会自动导入和管理。此 受管 hub 集群名为 local-cluster
。
如果您不希望 Red Hat Advanced Cluster Management hub 集群管理自己,请将 spec. disableHubSelfManagement
的设置从 false
改为 true
。如果该设置没有包括在定义自定义资源的 YAML 文件中,请添加它。hub 集群只能通过这个选项进行管理。
将这个选项设置为 true
并尝试手动管理 hub,会导致意外行为。
以下示例显示,如果要禁用 hub 集群自助管理功能,要使用的默认模板。将 namespace
替换为项目的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: disableHubSelfManagement: true
1.5.6. disableUpdateClusterImageSets
如果要确保所有集群都使用相同的发行镜像,您可以创建自己的自定义列表,以便在创建集群时可用的发行镜像。
在 连接到管理可用发行镜像时,请参阅维护自定义发行镜像列表,并设置 spec.disableUpdateClusterImageSets
属性,这将停止自定义镜像列表被覆盖。
以下示例显示了禁用集群镜像集更新的默认模板。将 namespace
替换为项目的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: disableUpdateClusterImageSets: true
1.5.7. customCAConfigmap
默认情况下,Red Hat OpenShift Container Platform 使用 Ingress Operator 创建内部 CA。
以下示例显示了用于为 Red Hat Advanced Cluster Management 提供自定义 OpenShift Container Platform 默认入口 CA 证书的默认模板。使用项目的名称替换 namespace
。将 spec.customCAConfigmap
值替换为 ConfigMap
的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: customCAConfigmap: <configmap>
1.5.8. sslCiphers
默认情况下,Red Hat Advanced Cluster Management hub 集群包含所支持的 SSL 密码的完整列表。
以下示例显示了用于列出管理入口的 sslCiphers
模板的默认 spec.ingress.sslCiphers
模板。将 namespace
替换为项目的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: ingress: sslCiphers: - "ECDHE-ECDSA-AES128-GCM-SHA256" - "ECDHE-RSA-AES128-GCM-SHA256"
1.5.9. ClusterProxy 附加组件(技术预览)
以下示例显示了用来启用 cluster-proxy-addon
的默认 spec.overrides
模板。将 namespace
替换为项目的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: overrides: components: - name: cluster-proxy-addon enabled: true
或者,您可以运行以下命令。将 namespace
替换为项目的名称:
oc patch MultiClusterHub multiclusterhub -n <namespace> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"cluster-proxy-addon","enabled":true}}]'
使用 enableClusterProxyAddon
字段不再被支持,它被上方命令替代。
1.5.10. ClusterBackup
enableClusterBackup
字段不再被支持,并被这个组件替代。
以下示例显示了用来启用 ClusterBackup
的 spec.overrides
默认模板。将 namespace
替换为项目的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: overrides: components: - name: cluster-backup enabled: true
或者,您可以运行以下命令。使用项目的名称替换 namespace
。
oc patch MultiClusterHub multiclusterhub -n <namespace> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"cluster-backup","enabled":true}}]'
1.5.11. ManagedServiceAccount 附加组件(技术预览)
以下示例显示了用来启用 ManagedServiceAccount
的 spec.overrides
默认模板。将 namespace
替换为项目的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: overrides: components: - name: managedserviceaccount-preview enabled: true
或者,您可以运行以下命令。使用项目的名称替换 namespace
。
oc patch MultiClusterHub multiclusterhub -n <namespace> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"managedserviceaccount-preview","enabled":true}}]'
1.5.12. Hypershift 附加组件(技术预览)
以下示例显示了用来启用 Hypershift
的 spec.overrides
默认模板。将 namespace
替换为项目的名称:
apiVersion: operator.open-cluster-management.io/v1 kind: MultiClusterHub metadata: name: multiclusterhub namespace: <namespace> spec: overrides: components: - name: hypershift-preview enabled: true
或者,您可以运行以下命令。使用项目的名称替换 namespace
。
oc patch MultiClusterHub multiclusterhub -n <namespace> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"hypershift-preview","enabled":true}}]'