1.5. 安装和升级多集群引擎 Operator
multicluster engine operator 是一个软件 operator,用于增强集群团队管理。multicluster engine operator 支持跨云和数据中心的 Red Hat OpenShift Container Platform 和 Kubernetes 集群生命周期管理。
除非仅在最新版本的 OpenShift Container Platform 上引入并测试特定组件或功能,否则文档会参考最早支持的 OpenShift Container Platform 版本。
有关完整的支持信息,请参阅多集群引擎操作员支持矩阵。如需生命周期信息,请参阅 Red Hat OpenShift Container Platform 生命周期政策。
重要: 如果您使用 Red Hat Advanced Cluster Management,则在集群中已安装了 multicluster engine for Kubernetes operator。
已弃用:多集群引擎运算符 2.4 及更早版本不再受支持。文档可能仍然可用,但不会发布任何针对已修复问题或其他更新的勘误表。
最佳实践: 升级到最新版本。
请参阅以下文档:
1.5.1. 在线安装 复制链接链接已复制到粘贴板!
multicluster engine operator 安装有 Operator Lifecycle Manager,用于管理安装、升级和删除包含 multicluster engine operator 的组件。
需要的访问权限:集群管理员
重要:
-
您不能在外部集群中配置了
ManagedCluster资源的集群中安装 multicluster engine operator。在安装 multicluster engine operator 之前,您必须从外部集群中删除ManagedCluster资源。 -
对于 OpenShift Container Platform Dedicated 环境,必须具有
cluster-admin权限。默认情况下,dedicated-admin角色没有在 OpenShift Container Platform Dedicated 环境中创建命名空间所需的权限。 - 默认情况下,多集群引擎 Operator 组件安装在 OpenShift Container Platform 集群的 worker 节点上,而无需额外的配置。您可以使用 OpenShift Container Platform OperatorHub Web 控制台界面或使用 OpenShift Container Platform CLI 将多集群引擎 Operator 安装到 worker 节点上。
- 如果您使用基础架构节点配置了 OpenShift Container Platform 集群,您可以使用带有其他资源参数的 OpenShift Container Platform CLI 将 multicluster engine operator 安装到这些基础架构节点上。详情请参阅在基础架构节点上安装多集群引擎部分。
如果您计划导入不是由 OpenShift Container Platform 或多集群引擎 operator 创建的 Kubernetes 集群,则需要配置镜像 pull secret。有关如何配置镜像 pull secret 和其他高级配置的详情,请参考 本文档的高级配置 部分中的选项。
1.5.1.1. 先决条件 复制链接链接已复制到粘贴板!
在安装 multicluster engine operator 前,请查看以下先决条件:
- 您的 OpenShift Container Platform 集群必须通过控制台访问 OperatorHub 目录中的 multicluster engine operator。
- 您需要访问 catalog.redhat.com。
-
您的集群 没有在 外部集群中配置
ManagedCluster资源。 支持的 OpenShift Container Platform 版本必须部署到您的环境中,且必须通过 OpenShift Container Platform CLI 登录。请参阅以下安装文档:
-
您的 OpenShift Container Platform 命令行界面(CLI)被配置为运行
oc命令。有关安装和配置 OpenShift Container Platform CLI 的信息,请参阅 CLI 入门。 - OpenShift Container Platform 权限必须允许创建命名空间。
- 需要有一个互联网连接来访问 Operator 的依赖项。
要在 OpenShift Container Platform Dedicated 环境中安装,请参阅以下内容:
- 您必须已配置并运行了 OpenShift Container Platform Dedicated 环境。
-
您必须在要安装引擎的 OpenShift Container Platform Dedicated 环境中具有
cluster-admin授权。
- 如果您计划使用 Red Hat OpenShift Container Platform 提供的辅助安装程序创建托管集群,请参阅 OpenShift Container Platform 文档中的准备使用辅助安装程序进行安装主题以了解相关要求。
1.5.1.2. 确认 OpenShift Container Platform 安装 复制链接链接已复制到粘贴板!
您必须有一个受支持的 OpenShift Container Platform 版本,包括 registry 和存储服务,并可以正常工作。有关安装 OpenShift Container Platform 的更多信息,请参阅 OpenShift Container Platform 文档。
- 验证 multicluster engine operator 尚未安装在 OpenShift Container Platform 集群中。multicluster engine operator 只允许在每个 OpenShift Container Platform 集群中有一个安装。如果没有安装,请继续执行以下步骤。
要确保正确设置 OpenShift Container Platform 集群,请使用以下命令访问 OpenShift Container Platform Web 控制台:
kubectl -n openshift-console get route console
kubectl -n openshift-console get route consoleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
console console-openshift-console.apps.new-coral.purple-chesterfield.com console https reencrypt/Redirect None
console console-openshift-console.apps.new-coral.purple-chesterfield.com console https reencrypt/Redirect NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在浏览器中打开 URL 并检查结果。如果控制台 URL 显示
console-openshift-console.router.default.svc.cluster.local,当安装 OpenShift Container Platform 时把openshift_master_default_subdomain设置为这个值。请参阅以下 URL 示例:https://console-openshift-console.apps.new-coral.purple-chesterfield.com。
您可以继续安装 multicluster engine operator。
1.5.1.3. 从 OperatorHub Web 控制台界面安装 复制链接链接已复制到粘贴板!
最佳实践: 从 OpenShift Container Platform 导航中的 Administrator 视图,安装 OpenShift Container Platform 提供的 OperatorHub Web 控制台界面。
- 选择 Operators > OperatorHub 来访问可用 operator 列表,选择 multicluster engine for Kubernetes operator。
-
点
Install。 在 Operator 安装页面中,选择安装选项:
命名空间:
- 多集群引擎 operator 引擎必须安装在自己的命名空间或项目中。
-
默认情况下,OperatorHub 控制台安装过程会创建一个名为
multicluster-engine的命名空间。最佳实践: 继续使用multicluster-engine命名空间(如果可用)。 -
如果已存在名为
multicluster-engine的命名空间,请选择不同的命名空间。
- Channel:选择与要安装的发行版本相对应的频道。当您选择频道时,它会安装指定的发行版本,并确定以后获得该发行版本中的勘误更新。
Approval strategy:批准策略指定了用户需要如何处理应用到您的频道或发行版本的更新。
- 选择 Automatic (默认选择)以确保会自动应用该发行版本中的任何更新。
- 选择 Manual 在有更新可用时接收通知。如果您对更新的应用有疑问,这可能是您的最佳实践。
注: 要升级到下一个次版本,您必须返回到 OperatorHub 页面,并为更当前的发行版本选择一个新频道。
- 选择 Install 以应用您的更改并创建 Operator。
请参阅以下流程来创建 MultiClusterEngine 自定义资源。
- 在 OpenShift Container Platform 控制台导航中,选择 Installed Operators > multicluster engine for Kubernetes。
- 选择 MultiCluster Engine 选项卡。
- 选择 Create MultiClusterEngine。
更新 YAML 文件中的默认值。请参阅文档中的 MultiClusterEngine 高级配置部分中的选项。
- 以下示例显示了您可以复制到编辑器中的默认模板:
apiVersion: multicluster.openshift.io/v1 kind: MultiClusterEngine metadata: name: multiclusterengine spec: {}apiVersion: multicluster.openshift.io/v1 kind: MultiClusterEngine metadata: name: multiclusterengine spec: {}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
选择 Create 来初始化自定义资源。多集群引擎 operator 引擎最多可能需要 10 分钟才能构建并启动。
创建 MultiClusterEngine 资源后,在 MultiCluster Engine 标签页中资源的状态为
Available。
1.5.1.4. 通过 OpenShift Container Platform CLI 安装 复制链接链接已复制到粘贴板!
创建一个 multicluster engine operator 引擎命名空间,其中包含 Operator 的要求。运行以下命令,其中
namespace是 Kubernetes operator 命名空间的多集群引擎的名称。在 OpenShift Container Platform 环境中,namespace的值可能被称为 Project(项目)。oc create namespace <namespace>
oc create namespace <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将项目命名空间切换到您创建的命名空间。
使用在第1 步中创建的 Kubernetes operator 命名空间的多集群引擎名称替换 namespace。oc project <namespace>
oc project <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 YAML 文件来配置
OperatorGroup资源。每个命名空间只能有一个 operator 组。将default替换为 operator 组的名称。将namespace替换为项目命名空间的名称。请参见以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
OperatorGroup资源。将operator-group替换为您创建的 operator 组 YAML 文件的名称:oc apply -f <path-to-file>/<operator-group>.yaml
oc apply -f <path-to-file>/<operator-group>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 YAML 文件来配置 OpenShift Container Platform 订阅。您的文件类似以下示例,<
stable-2.x> 改为代表您使用的支持版本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注: 要配置基础架构节点,请参阅为多集群引擎 operator 配置基础架构节点。
=
+ .运行以下命令来创建 OpenShift Container Platform 订阅。使用您创建的订阅文件的名称替换 subscription:
+
oc apply -f <path-to-file>/<subscription>.yaml
oc apply -f <path-to-file>/<subscription>.yaml
创建 YAML 文件来配置
MultiClusterEngine自定义资源。您的默认模板应类似以下示例:apiVersion: multicluster.openshift.io/v1 kind: MultiClusterEngine metadata: name: multiclusterengine spec: {}apiVersion: multicluster.openshift.io/v1 kind: MultiClusterEngine metadata: name: multiclusterengine spec: {}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注: 要在基础架构节点上安装多集群引擎 Operator,请参阅 MultiClusterEngine 自定义资源附加配置 部分:
运行以下命令来创建
MultiClusterEngine自定义资源。将custom-resource替换为自定义资源文件的名称:oc apply -f <path-to-file>/<custom-resource>.yaml
oc apply -f <path-to-file>/<custom-resource>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果此步骤失败并显示以下错误,则仍然会创建并应用这些资源。创建资源后几分钟内再次运行命令:
error: unable to recognize "./mce.yaml": no matches for kind "MultiClusterEngine" in version "operator.multicluster-engine.io/v1"
error: unable to recognize "./mce.yaml": no matches for kind "MultiClusterEngine" in version "operator.multicluster-engine.io/v1"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来获取自定义资源。在运行以下命令后,在
status.phase字段中显示MultiClusterEngine自定义资源状态Available可能需要最多 10 分钟时间:oc get mce -o=jsonpath='{.items[0].status.phase}'oc get mce -o=jsonpath='{.items[0].status.phase}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您要重新安装多集群引擎 operator 且 pod 没有启动,请参阅故障排除重新安装失败以了解解决这个问题的步骤。
备注:
-
具有
ClusterRoleBinding的ServiceAccount会自动向 multicluster engine operator 以及有权访问安装 multicluster engine operator 的命名空间的用户凭证授予集群管理员特权。
现在,您可以将 OpenShift Container Platform 集群配置为包含基础架构节点来运行批准的管理组件。在基础架构节点上运行组件可避免为运行这些管理组件的节点分配 OpenShift Container Platform 订阅配额。请参阅为多集群引擎 operator 配置基础架构节点。
1.5.2. 为多集群引擎 operator 配置基础架构节点 复制链接链接已复制到粘贴板!
配置 OpenShift Container Platform 集群,使其包含基础架构节点来运行批准的多集群引擎 operator 管理组件。在基础架构节点上运行组件可避免为运行多集群引擎 operator 管理组件的节点分配 OpenShift Container Platform 订阅配额。
将基础架构节点添加到 OpenShift Container Platform 集群后,请按照 OpenShift Container Platform CLI 指令安装,并将以下配置添加到 Operator Lifecycle Manager 订阅和 MultiClusterEngine 自定义资源。
1.5.2.1. 将基础架构节点配置为 OpenShift Container Platform 集群 复制链接链接已复制到粘贴板!
按照 OpenShift Container Platform 文档中的创建基础架构机器集所述步骤进行操作。基础架构节点配置有 Kubernetes 污点和容限,以便防止非管理工作负载在它们上运行。
为了与多集群引擎 operator 提供的基础架构节点启用兼容,请确保您的基础架构节点应用了以下 污点和容限 :
1.5.2.2. Operator Lifecycle Manager 订阅配置 复制链接链接已复制到粘贴板!
配置 Operator Lifecycle Manager 订阅。
在应用 Operator Lifecycle Manager 订阅前,添加以下配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新任何附加组件,使其包含以下节点选择器和容限。您需要使用 配置 klusterlet 附加组件 的说明:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果您使用 Red Hat OpenShift Data Foundation 作为存储置备程序,请确保 Container Storage Interface pod 可以在基础架构节点上运行。请参阅 Red Hat OpenShift Data Foundation 文档中的管理容器存储接口(CSI)组件放置 的更多信息。
1.5.2.3. MultiClusterEngine 自定义资源额外配置 复制链接链接已复制到粘贴板!
在应用 MultiClusterEngine 自定义资源前添加以下附加配置:
spec:
nodeSelector:
node-role.kubernetes.io/infra: ""
spec:
nodeSelector:
node-role.kubernetes.io/infra: ""
1.5.3. 在断开连接的网络中安装 复制链接链接已复制到粘贴板!
您可能需要在没有连接到互联网的 Red Hat OpenShift Container Platform 集群上安装 multicluster engine operator。在断开连接的引擎中安装的步骤需要一些与连接安装相同的步骤。
您必须下载软件包副本以在安装过程中访问它们,而不是在安装过程中直接从网络访问它们。
1.5.3.1. 先决条件 复制链接链接已复制到粘贴板!
在安装 multicluster engine operator 前,您必须满足以下要求:
- 支持的 OpenShift Container Platform 版本必须部署到您的环境中,且必须使用 CLI 登录。
您需要访问 catalog.redhat.com。
注: 要管理裸机集群,您需要一个受支持的 OpenShift Container Platform 版本。
- 您的 Red Hat OpenShift Container Platform 权限必须允许创建命名空间。
- 必须有一 个有互联网连接的工作站来下载 operator 的依赖软件包。
1.5.3.2. 确认 OpenShift Container Platform 安装 复制链接链接已复制到粘贴板!
- 您必须有一个受支持的 OpenShift Container Platform 版本,包括 registry 和存储服务,在集群中安装并正常工作。有关 OpenShift Container Platform 的信息,请参阅OpenShift Container Platform 文档。
连接后,使用以下命令访问 OpenShift Container Platform Web 控制台进行验证:
oc -n openshift-console get route console
oc -n openshift-console get route consoleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请参见以下示例输出:
console console-openshift-console.apps.new-name.purple-name.com console https reencrypt/Redirect None
console console-openshift-console.apps.new-name.purple-name.com console https reencrypt/Redirect NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 本例中的控制台 URL 为
https:// console-openshift-console.apps.new-coral.purple-chesterfield.com。在浏览器中打开 URL 并检查结果。如果控制台 URL 显示
console-openshift-console.router.default.svc.cluster.local,当安装 OpenShift Container Platform 时把openshift_master_default_subdomain设置为这个值。
1.5.3.3. 在断开连接的环境中安装 复制链接链接已复制到粘贴板!
重要: 您需要将所需的镜像下载到镜像 registry 中,以便在断开连接的环境中安装 Operator。如果没有下载,您可能会在部署过程中收到 ImagePullBackOff 错误。
按照以下步骤在断开连接的环境中安装多集群引擎 Operator:
创建镜像 registry。如果您还没有镜像注册表,请按照 Red Hat OpenShift Container Platform 文档的断开连接环境中的镜像主题中的过程创建一个。
如果已有镜像 registry,可以配置和使用现有 registry。
注: 对于裸机,您需要在
install-config.yaml文件中为断开连接的 registry 提供证书信息。要访问受保护的断开连接的 registry 中的镜像,您必须提供证书信息,以便 operator 的多集群引擎可以访问 registry。- 复制 registry 中的证书信息。
-
在编辑器中打开
install-config.yaml文件。 -
找到
additionalTrustBundle: |条目。 在
additionalTrustBundle行后添加证书信息。内容应类似以下示例:additionalTrustBundle: | -----BEGIN CERTIFICATE----- certificate_content -----END CERTIFICATE----- sshKey: >-
additionalTrustBundle: | -----BEGIN CERTIFICATE----- certificate_content -----END CERTIFICATE----- sshKey: >-Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:您可以指定一个或多个 SSH 公钥,以便您在安装后访问主机。请参见以下示例:
sshKey: | ssh-rsa <public-key-1> ssh-rsa <public-key-2> ssh-rsa <public-key-3>
sshKey: | ssh-rsa <public-key-1> ssh-rsa <public-key-2> ssh-rsa <public-key-3>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要: 如果需要以下监管策略,则需要额外的镜像 registry:
-
Container Security Operator 策略:查找
registry.redhat.io/quay源中的镜像。 -
Compliance Operator 策略:查找
registry.redhat.io/compliance源中的镜像。 Gatekeeper Operator 策略:查找
registry.redhat.io/gatekeeper源中的镜像。参阅以下所有三个 operator 的镜像列表示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Container Security Operator 策略:查找
-
保存
install-config.yaml文件。 创建一个包含
ImageContentSourcePolicy的 YAML 文件,其名称为mce-policy.yaml。注: 如果您在正在运行的集群中修改此操作,则会导致所有节点的滚动重启。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令应用 ImageContentSourcePolicy 文件:
oc apply -f mce-policy.yaml
oc apply -f mce-policy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用断开连接的 Operator Lifecycle Manager Red Hat Operator 和 Community Operator。
multicluster engine operator 包含在 Operator Lifecycle Manager Red Hat Operator 目录中。
- 为 Red Hat Operator 目录配置离线 Operator Lifecycle Manager。按照 Red Hat OpenShift Container Platform 文档的在受限网络上使用 Operator Lifecycle Manager主题中的步骤进行操作。
- 从 Operator Lifecycle Manager 目录继续为 Kubernetes 安装 multicluster engine operator。
如需了解所需步骤,请参阅在线安装。
1.5.4. 使用策略升级断开连接的集群 复制链接链接已复制到粘贴板!
如果您有 Red Hat Advanced Cluster Management for Kubernetes hub 集群,它使用 MultiClusterHub operator 来管理、升级和安装 hub 集群组件,您可以使用 OpenShift Update Service 和 Red Hat Advanced Cluster Management 策略在断开连接的环境中升级多个集群。
OpenShift Update Service 是一个单独的 operator 和操作对象,它监控受管集群的可用版本,并使其可用于在断开连接的环境中升级。OpenShift Update Service 可以执行以下操作:
- 监测何时有适用于断开连接的集群的升级。
- 使用图形数据文件识别哪些更新需要被镜像到您的本地站点进行升级。
- 使用控制台,通知您的集群有可用的升级。
- 先决条件
- 准备断开连接的镜像 registry
- 为 OpenShift Update Service 部署 Operator
- 构建图形数据 init 容器
- 为已镜像的 registry 配置证书
- 部署 OpenShift Update Service 实例
- 可选:部署策略以覆盖默认 registry
- 部署策略来部署断开连接的目录源
- 部署策略以更改受管集群参数
- 查看可用升级
- 选择一个频道
- 升级集群
- 其他资源
请参阅 OpenShift Container Platform 文档中的为镜像注册表访问配置其他信任存储,以了解有关外部注册表 CA 证书的更多信息。
1.5.4.1. 先决条件 复制链接链接已复制到粘贴板!
您必须满足以下先决条件,才能使用 OpenShift Update Service 升级断开连接的集群:
- 您需要安装 Red Hat Advanced Cluster Management。请参阅 Red Hat Advanced Cluster Management 安装和升级文档。
- 您需要一个在受支持的 Red Hat OpenShift Container Platform 版本中运行的 hub 集群,并配置了受限 OLM。有关如何配置受限 OLM 的详细信息,请参阅在受限网络上使用 Operator Lifecycle Manager 。在配置受限 OLM 时记录目录源镜像。
- 您需要一个 hub 集群管理的 OpenShift Container Platform 集群。
您需要一个可以访问可以镜像集群镜像的本地存储库的凭证。有关详细信息,请参阅断开连接的环境中的镜像。
注: 您升级的集群当前版本的镜像必须作为其中一个镜像保持可用。如果升级失败,集群会在尝试升级时恢复到集群的版本。
1.5.4.2. 准备断开连接的镜像 registry 复制链接链接已复制到粘贴板!
您必须镜像要升级到的镜像,以及您要从本地镜像 registry 升级到的当前镜像。
完成以下步骤以镜像镜像:
创建一个包含类似以下示例内容的脚本文件。将
<pull-secret> 替换为 OpenShift Container Platform pull secret 的路径:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 运行该脚本来对镜像进行镜像、配置设置并将发行镜像与发行内容分开。
1.5.4.3. 为 OpenShift Update Service 部署 Operator 复制链接链接已复制到粘贴板!
要在 OpenShift Container Platform 环境中为 OpenShift Update Service 部署 Operator,请完成以下步骤:
- 在 hub 集群中,访问 OpenShift Container Platform operator hub。
-
通过选择
OpenShift Update Service Operator来部署 Operator,并根据需要更新默认值。Operator 的部署会创建一个名为openshift-update-service的新项目。 - 等待 Operator 的安装完成。
您可以通过运行 oc get pods 命令检查安装的状态。验证 Operator 是否处于 running 状态。
1.5.4.4. 构建图形数据 init 容器 复制链接链接已复制到粘贴板!
OpenShift Update Service 使用图形数据信息来查找可用的升级。在连接的环境中,OpenShift Update Service 会直接从 update-service 图形数据 GitHub 仓库中提取可用于升级的图形数据 信息。
在断开连接的环境中,您必须使用 init 容器 使图形数据在本地存储库中可用。
完成以下步骤以创建图形数据 init 容器:
运行以下命令克隆 图形数据 Git 存储库:
git clone https://github.com/openshift/cincinnati-graph-data
git clone https://github.com/openshift/cincinnati-graph-dataCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个文件,其中包含您的图形数据
init信息。您可以在cincinnati-operatorGitHub 仓库中找到 Dockerfile 示例。-
FROM值是 OpenShift Update Service 查找镜像的外部 registry。 -
RUN命令创建目录并打包升级文件。 -
CMD命令将软件包文件复制到本地库并提取文件进行升级。
-
运行以下命令以构建
图形数据 init 容器:podman build -f <docker-path> -t <graph-path>:latest
podman build -f <docker-path> -t <graph-path>:latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <
;docker-path> 替换为您在上一步中创建的文件的路径。使用本地图形数据 init 容器的路径替换。
运行以下命令来推送
图形数据 init 容器:podman push <graph-path>:latest --authfile=<pull-secret>.json
podman push <graph-path>:latest --authfile=<pull-secret>.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用本地图形数据 init 容器的路径替换。
将
<pull-secret> 替换为 pull secret 文件的路径。
可选: 如果您没有安装 podman,请在第 3 和 4 步中将 podman 替换为 docker。
1.5.4.5. 为已镜像的 registry 配置证书 复制链接链接已复制到粘贴板!
如果您使用安全的外部容器 registry 来存储已镜像的 OpenShift Container Platform 发行镜像,OpenShift Update Service 需要访问此 registry 来构建升级图。
完成以下步骤以配置您的 CA 证书以用于 OpenShift Update Service Pod:
-
查找位于
image.config.openshift.io的 OpenShift Container Platform 外部 registry API。这是存储外部 registry CA 证书的位置。如需更多信息,请参阅其他资源部分中的 为镜像 registry 访问 配置额外的信任存储。 在
openshift-config命名空间中创建 ConfigMap,并在updateservice-registry部分添加您的 CA 证书。请参见以下示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
image.config.openshift.ioAPI 中的cluster资源,将additionalTrustedCA字段设置为您创建的 ConfigMap 的名称。运行以下命令,并将 <trusted_ca> 替换为新 ConfigMap 的路径:oc patch image.config.openshift.io cluster -p '{"spec":{"additionalTrustedCA":{"name":"<trusted_ca>"}}}' --type mergeoc patch image.config.openshift.io cluster -p '{"spec":{"additionalTrustedCA":{"name":"<trusted_ca>"}}}' --type mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift Update Service Operator 会监视 image.config.openshift.io API 和您在 openshift-config 命名空间中创建的 ConfigMap 是否有变化,然后在 CA 证书已更改时重启部署。
1.5.4.6. 部署 OpenShift Update Service 实例 复制链接链接已复制到粘贴板!
在 hub 集群上完成 OpenShift Update Service 实例部署后,实例位于集群升级的镜像被镜像并可用于断开连接的受管集群。
完成以下步骤以部署实例:
- 如果您不想使用 Operator 的默认命名空间,请在控制台中进入到 Administration > Namespaces 来更改它。
- 在 OpenShift Container Platform 控制台的 Installed Operators 部分中,选择 OpenShift Update Service Operator。
- 在菜单中选择 Create Instance。
粘贴 OpenShift Update Service 实例中的内容。您的 YAML 实例可能类似以下清单:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 选择 Create 来创建实例。
-
在 hub 集群 CLI 中输入
oc get pods命令来查看实例创建的状态。
它可能需要几分钟时间。当命令结果显示实例和操作器正在运行时,进程已完成。
1.5.4.7. 可选:部署策略以覆盖默认 registry 复制链接链接已复制到粘贴板!
只有在将发行版本镜像到已镜像的 registry 时,才适用以下步骤。
已弃用: PlacementRule
OpenShift Container Platform 具有一个默认的镜像 registry 值,用于指定它找到升级软件包的位置。在断开连接的环境中,您可以创建一个策略来替换该值,并将该值替换为您对发行版本镜像进行镜像的本地镜像 registry 的路径。
完成以下步骤以创建策略:
- 登录到 hub 集群的 OpenShift Container Platform 环境。
- 在控制台中,选择 Governance > Create policy。
- 将 YAML 开关设置为 On 以查看策略的 YAML 版本。
- 删除 YAML 代码中的所有内容。
将以下 YAML 内容粘贴到窗口以创建自定义策略:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 选择 Enforce if supported。
- 选择 Create 来创建策略。
1.5.4.8. 部署策略来部署断开连接的目录源 复制链接链接已复制到粘贴板!
您可以将 Catalogsource 策略推送到受管集群,将默认位置从连接的位置更改为断开连接的本地 registry。
完成以下步骤以更改默认位置:
1.5.4.9. 部署策略以更改受管集群参数 复制链接链接已复制到粘贴板!
您可以将 ClusterVersion 策略推送到受管集群,以更改它检索升级的默认位置。
完成以下步骤:
在受管集群中,通过运行以下命令确认 ClusterVersion upstream 参数目前是默认的公共 OpenShift Update Service 操作对象:
oc get clusterversion -o yaml
oc get clusterversion -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 hub 集群中,运行以下命令来识别到 OpenShift Update Service 操作对象的路由 URL:
oc get routes
oc get routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 记住以后的结果。
- 在 hub 集群控制台菜单中,选择 Governance > Create a policy。
-
将
YAML切换设置为 On 以查看策略的 YAML 版本。 -
删除
YAML代码中的所有内容。 将以下
YAML内容粘贴到窗口以创建自定义策略:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用 hub 集群 OpenShift Update Service 操作对象的路径替换。如果没有指定,选择所有集群。
您可以完成以下步骤来确定操作对象的路径:
-
在 hub 集群上运行
oc get get routes -A命令。 查找
update-service的路由。到操作对象的路径是
HOST/PORT字段的值。
- 选择 Enforce if supported。
- 选择 Create 来创建策略。
在受管集群 CLI 中,运行以下命令来确认
ClusterVersion中的 upstream 参数已使用本地 hub 集群 OpenShift Update Service URL 更新:oc get clusterversion -o yaml
oc get clusterversion -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 结果应该类似以下内容:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.4.10. 查看可用升级 复制链接链接已复制到粘贴板!
您可以通过完成以下步骤来查看受管集群可用升级列表:
- 在控制台中,选择 Infrastructure > Clusters。
- 选择处于 Ready 状态的一个集群。
- 在 Actions 菜单中选择 Upgrade cluster。
- 验证可选的升级路径是否可用。
注: 如果当前版本没有镜像到本地镜像存储库,则不会显示可用的升级版本。
1.5.4.11. 选择一个频道 复制链接链接已复制到粘贴板!
您可以使用 Red Hat Advanced Cluster Management 控制台为 OpenShift Container Platform 上的集群升级选择一个频道。这些版本必须在镜像 registry 上可用。
完成选择频道中的步骤为您的升级指定频道。
1.5.4.12. 升级集群 复制链接链接已复制到粘贴板!
配置断开连接的 registry 后,Red Hat Advanced Cluster Management 和 OpenShift Update Service 使用断开连接的 registry 来查找是否有可用的升级。
如果没有可用的升级,请确保您有集群当前级别的发行镜像,且至少有一个后续级别的镜像位于本地存储库中。
如果集群当前版本的发行镜像不可用,则没有可用的升级。
完成以下步骤进行升级:
- 在控制台中,选择 Infrastructure > Clusters。
- 如果有可用的升级,找到您要选择的集群。
- 如果有可用的升级,集群的 Distribution version 列会显示可用的升级。
- 选择集群的 Options 菜单,然后选择 Upgrade cluster。
- 为升级选择目标版本,然后选择 Upgrade。
如果集群升级失败,Operator 通常会重试升级,停止并报告故障组件的状态。在某些情况下,升级过程会一直通过尝试完成此过程进行循环。不支持在升级后将集群还原到以前的版本。如果您的集群升级失败,请联系红帽支持以寻求帮助。
1.5.4.12.1. 其他资源 复制链接链接已复制到粘贴板!
请参阅 OpenShift Container Platform 文档中的为镜像注册表访问配置其他信任存储,以了解有关外部注册表 CA 证书的更多信息。
1.5.5. 高级配置 复制链接链接已复制到粘贴板!
multicluster engine operator 使用部署所有所需组件的 operator 安装。multicluster engine operator 可以在安装过程中或安装后进一步配置。了解有关高级配置选项的更多信息。
1.5.5.1. 部署的组件 复制链接链接已复制到粘贴板!
在 MultiClusterEngine 自定义资源中添加一个或多个属性:
| Name | 描述 | Enabled |
| assisted-service | 使用最小基础架构先决条件和全面的预动态验证安装 OpenShift Container Platform | True |
| cluster-api | 提供在托管集群内处理集群 API 生命周期的功能 | False |
| cluster-api-provider-aws | 为 AWS 创建集群、配置和管理提供 Kubernetes 风格的 API | False |
| cluster-api-provider-openshift-assisted-preview | 通过辅助安装程序提供用于集群创建、配置和管理的 Kubernetes 样式 API | False |
| cluster-api-provider-metal3-preview | 提供 Kubernetes 风格的 API,用于在裸机基础架构上创建、配置和管理集群 | False |
| cluster-lifecycle | 为 OpenShift Container Platform 和 Kubernetes hub 集群提供集群管理功能 | True |
| cluster-manager | 管理集群环境中的各种与集群相关的操作 | True |
| cluster-proxy-addon |
使用反向代理服务器在 hub 和受管集群中自动安装 | True |
| console-mce | 启用 multicluster engine operator 控制台插件 | True |
| discovery | 在 OpenShift Cluster Manager 中发现并标识新集群 | True |
| hive | 置备并执行 OpenShift Container Platform 集群的初始配置 | True |
| hypershift | 以成本和时间效率以及跨云可移植性大规模托管 OpenShift Container Platform control plane | True |
| hypershift-local-hosting | 在本地集群环境中为启用本地托管功能 | True |
| image-based-install-operator | 为单节点 OpenShift 集群提供站点配置以完成安装 | False |
| local-cluster | 启用部署 multicluster engine operator 的本地 hub 集群的导入和自助管理 | True |
| managedserviceacccount | 将服务帐户同步到受管集群,并将令牌作为 secret 资源收集,以回 hub 集群 | True |
| server-foundation | 为多集群环境中的服务器端操作提供基础服务 | True |
当您将 multicluster engine operator 安装到集群中时,并非所有列出的组件都会默认启用。
您可以通过在 MultiClusterEngine 自定义资源中添加一个或多个属性来进一步配置多集群引擎 operator。继续读取以了解有关您可以添加的属性的信息。
1.5.5.2. 控制台和组件配置 复制链接链接已复制到粘贴板!
以下示例显示了可用于启用或禁用组件的 spec.overrides 默认模板:
-
使用组件的名称替换
name。
或者,您可以运行以下命令。将 namespace 替换为项目的名称,将 name 替换为组件的名称:
oc patch MultiClusterEngine <multiclusterengine-name> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"<name>","enabled":true}}]'
oc patch MultiClusterEngine <multiclusterengine-name> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"<name>","enabled":true}}]'
1.5.5.3. local-cluster 启用 复制链接链接已复制到粘贴板!
默认情况下,运行多集群引擎运算符的集群是本地集群,它是一个自我管理的中心集群,在集群列表中被指定为本地集群。
在MultiClusterEngine资源中,本地集群名称是根据spec.localClusterName值设置的。enabled 设置指定功能是启用还是禁用。
enabled: true设置将您的集群指定为本地集群,而enabled: false设置则不然。请参阅以下示例,其中local-cluster已启用且值为enabled: true 。
如果启用字段设置为false ,则可以更改本地集群名称。<your-local-cluster-name>值必须使用 34 个或更少的字符。如果将local-cluster设置为enabled: true ,则无法重命名。
要安装多集群引擎操作员而不将其指定为本地集群,请将spec.overrides.components设置更改为enabled: false 。请参见以下 YAML 示例:
1.5.5.4. 自定义镜像 pull secret 复制链接链接已复制到粘贴板!
如果您计划导入不是由 OpenShift Container Platform 或 operator 多集群引擎创建的 Kubernetes 集群,生成一个包含 OpenShift Container Platform pull secret 信息的 secret,以便从发布 registry 中访问授权内容。
OpenShift Container Platform 集群的 secret 要求由 Kubernetes operator 的 OpenShift Container Platform 和多集群引擎自动解决,因此如果您没有导入其他类型的 Kubernetes 集群,则不必创建 secret。
重要: 这些 secret 是特定于命名空间的,因此请确保处于用于引擎的命名空间中。
- 选择 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
oc create secret generic <secret> -n <namespace> --from-file=.dockerconfigjson=<path-to-pull-secret> --type=kubernetes.io/dockerconfigjsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
secret替换为您要创建的 secret 的名称。 -
将
namespace替换为项目命名空间,因为 secret 是特定于命名空间的。 -
将
path-to-pull-secret替换为您下载的 OpenShift Container Platform pull secret 的路径。
-
将
以下示例显示,如果使用自定义 pull secret,要使用的 spec.imagePullSecret 模板。将 secret 替换为 pull secret 的名称:
1.5.5.5. 目标命名空间 复制链接链接已复制到粘贴板!
可通过在 MultiClusterEngine 自定义资源中指定位置,在指定的命名空间中安装操作对象。此命名空间在 MultiClusterEngine 自定义资源的应用程序上创建。
重要: 如果没有指定目标命名空间,Operator 将安装到 multicluster-engine 命名空间,并在 MultiClusterEngine 自定义资源规格中设置它。
以下示例显示了可以用来指定目标命名空间的 spec.targetNamespace 模板。使用目标命名空间的名称替换 target。注: target 目标命名空间不能是 default 命名空间:
1.5.5.6. availabilityConfig 复制链接链接已复制到粘贴板!
hub 集群有两个可用功能:High 和 Basic。默认情况下,hub 集群的可用性为 High,hub 集群组件副本数 为 2。它提供了对故障转移功能的支持,但消耗的资源数量比可用性为 Basic(副本数为1) 的集群多。
重要: 如果您在单节点 OpenShift 集群中使用 multicluster engine operator,请将 spec.availabilityConfig 设置为 Basic。
以下示例显示了具有 Basic 可用性的 spec.availabilityConfig 模板:
1.5.5.7. nodeSelector 复制链接链接已复制到粘贴板!
您可以在 MultiClusterEngine 中定义一组节点选择器,以安装到集群中的特定节点。以下示例显示了将 pod 分配给带有标签 node-role.kubernetes.io/infra 的节点的 spec.nodeSelector :
spec:
nodeSelector:
node-role.kubernetes.io/infra: ""
spec:
nodeSelector:
node-role.kubernetes.io/infra: ""
要为 Red Hat Advanced Cluster Management for Kubernetes hub 集群定义一组节点选择器,请参阅 Red Hat Advanced Cluster Management 文档中的nodeSelector 。
1.5.5.8. 容限(tolerations) 复制链接链接已复制到粘贴板!
您可以定义容限列表,以允许 MultiClusterEngine 容许在集群中定义的特定污点。以下示例显示了与 node-role.kubernetes.io/infra 污点匹配的 spec.tolerations :
spec:
tolerations:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
operator: Exists
spec:
tolerations:
- key: node-role.kubernetes.io/infra
effect: NoSchedule
operator: Exists
默认情况下,以上 infra-node 容限在 pod 上设置,而不在配置中指定任何容限。在配置中自定义容限将替换此默认行为。
要为 Red Hat Advanced Cluster Management for Kubernetes hub 集群定义容忍度列表,请参阅 Red Hat Advanced Cluster Management 文档中的容忍度。
1.5.5.9. ManagedServiceAccount add-on 复制链接链接已复制到粘贴板!
ManagedServiceAccount 附加组件允许您在受管集群中创建或删除服务帐户。要在启用此附加组件的环境中安装,请在 spec.overrides 的 MultiClusterEngine 规格中包括以下内容:
在创建 MultiClusterEngine 后,可以在命令行中编辑资源并将 managedserviceaccount 组件设置为 enabled: true 来启用 ManagedServiceAccount 附加组件。或者,您可以运行以下命令,将 <multiclusterengine-name> 替换为 MultiClusterEngine 资源的名称。
oc patch MultiClusterEngine <multiclusterengine-name> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"managedserviceaccount","enabled":true}}]'
oc patch MultiClusterEngine <multiclusterengine-name> --type=json -p='[{"op": "add", "path": "/spec/overrides/components/-","value":{"name":"managedserviceaccount","enabled":true}}]'
1.5.6. 卸装 复制链接链接已复制到粘贴板!
在卸载 Kubernetes operator 的多集群引擎时,您会看到两个不同的流程级别: 删除自定义资源 和完整的 Operator 卸载。完成卸载过程最多可能需要五分钟。
-
删除自定义资源是最基本的卸载类型,它会删除
MultiClusterEngine实例的自定义资源,但会保留其他所需的 operator 资源。如果您计划使用相同的设置和组件重新安装,这个卸载级别很有用。 - 第二个级别是更完整的卸载,可删除大多数 Operator 组件,不包括自定义资源定义等组件。当您继续执行此步骤时,它会删除所有没有通过删除自定义资源而被删除的组件和订阅。在卸载后,您必须在重新安装自定义资源前重新安装 Operator。
1.5.6.1. 先决条件:分离启用的服务 复制链接链接已复制到粘贴板!
在卸载 Kubernetes operator 的多集群引擎前,您必须分离所有由该引擎管理的集群。为了避免错误,分离仍由引擎管理的所有集群,然后尝试再次卸载。
如果附加了受管集群,您可能会看到以下信息。
Cannot delete MultiClusterEngine resource because ManagedCluster resource(s) exist
Cannot delete MultiClusterEngine resource because ManagedCluster resource(s) existCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有关分离集群的更多信息,请参阅从管理部分删除集群,方法是在 创建集群 中选择您的供应商信息。
1.5.6.2. 使用命令删除资源 复制链接链接已复制到粘贴板!
-
如果还没有运行 oc 命令,请确保 OpenShift Container Platform CLI 配置为运行
oc命令。有关如何配置oc命令的更多信息,请参阅 OpenShift Container Platform 文档中的OpenShift CLI 入门。 输入以下命令来更改到您的项目命名空间。将 namespace 替换为项目命名空间的名称:
oc project <namespace>
oc project <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令删除
MultiClusterEngine自定义资源:oc delete multiclusterengine --all
oc delete multiclusterengine --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以输入以下命令来查看进度:
oc get multiclusterengine -o yaml
oc get multiclusterengine -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
输入以下命令删除安装它的命名空间中的 multicluster-engine
ClusterServiceVersion,并替换v2.x.0变量的版本:
此处显示的 CSV 版本可能会有所不同。
1.5.6.3. 使用控制台删除组件 复制链接链接已复制到粘贴板!
当使用 Red Hat OpenShift Container Platform 控制台卸载时,需要删除 operator。使用控制台完成以下步骤进行卸载:
- 在 OpenShift Container Platform 控制台导航中,选择 Operators > Installed Operators > multicluster engine for Kubernetes.
删除
MultiClusterEngine自定义资源。- 选择 Multiclusterengine 标签页
- 选择 MultiClusterEngine 自定义资源的 Options 菜单。
- 选择 Delete MultiClusterEngine。
根据以下部分中的步骤运行清理脚本。
提示: 如果您计划为 Kubernetes operator 版本重新安装相同的多集群引擎,您可以跳过这个过程中的其余步骤并重新安装自定义资源。
- 进入 Installed Operators。
- 选择 Options 菜单并选择 Uninstall operator 来删除 Kubernetes_ operator 的 _ multicluster 引擎。
1.5.6.4. 卸载故障排除 复制链接链接已复制到粘贴板!
如果没有删除多集群引擎自定义资源,请通过运行清理脚本删除潜在的剩余工件。
将以下脚本复制到一个文件中:
#!/bin/bash oc delete apiservice v1.admission.cluster.open-cluster-management.io v1.admission.work.open-cluster-management.io oc delete validatingwebhookconfiguration multiclusterengines.multicluster.openshift.io oc delete mce --all
#!/bin/bash oc delete apiservice v1.admission.cluster.open-cluster-management.io v1.admission.work.open-cluster-management.io oc delete validatingwebhookconfiguration multiclusterengines.multicluster.openshift.io oc delete mce --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow
有关详细信息,请参阅断开连接的环境中的镜像。