基础架构节点上的 GitOps 工作负载
在基础架构节点上运行 GitOps control plane 工作负载
摘要
第 1 章 在基础架构节点上运行 GitOps control plane 工作负载 复制链接链接已复制到粘贴板!
对于两个主要目的,您可以使用基础架构节点隔离基础架构工作负载:
- 要防止与订阅数相关的计费成本
- 单独的维护和管理
您可以使用 OpenShift Container Platform 在基础架构节点上运行 GitOps control plane 工作负载。默认情况下,这包括 Operator pod 和由 openshift-gitops 命名空间中的 Red Hat OpenShift GitOps Operator 创建的 control plane 工作负载,包括此命名空间中的默认 Argo CD 实例。
使用 GitOps control plane 工作负载,您可以通过在集群中创建多个隔离的 Argo CD 实例来安全地并声明性地隔离基础架构工作负载,并完全控制 Argo CD 实例的功能。另外,您可以在多个开发人员命名空间中以声明性方式管理这些 Argo CD 实例。通过使用污点,您可以确保只有基础架构组件在这些节点上运行。
在用户命名空间中安装的所有其他 Argo CD 实例都无权在基础架构节点上运行。
1.1. 将 GitOps control plane 工作负载移到基础架构节点 复制链接链接已复制到粘贴板!
您可以将 Red Hat OpenShift GitOps 安装的 GitOps control plane 工作负载移到基础架构节点。以下是您可以移动的 control plane 工作负载:
-
kam deployment -
集群部署(后端服务) -
openshift-gitops-applicationset-controller 部署 -
openshift-gitops-dex-server 部署 -
openshift-gitops-redis 部署 -
openshift-gitops-redis-ha-haproxy 部署 -
openshift-gitops-repo-sever 部署 -
openshift-gitops-server 部署 -
openshift-gitops-application-controller statefulset -
openshift-gitops-redis-server statefulset
流程
运行以下命令,将现有节点标记为基础架构:
oc label node <node-name> node-role.kubernetes.io/infra=
$ oc label node <node-name> node-role.kubernetes.io/infra=Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
GitOpsService自定义资源(CR)以添加基础架构节点选择器:oc edit gitopsservice -n openshift-gitops
$ oc edit gitopsservice -n openshift-gitopsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
GitOpsServiceCR 文件中,将runOnInfra字段添加到spec部分,并将其设置为true。此字段将openshift-gitops命名空间中的 control plane 工作负载移到基础架构节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:在基础架构节点上应用污点并隔离工作负载,并防止其他工作负载调度到这些节点上。
oc adm taint nodes -l node-role.kubernetes.io/infra
$ oc adm taint nodes -l node-role.kubernetes.io/infra infra=reserved:NoSchedule infra=reserved:NoExecuteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 如果您将污点应用到节点,您可以在
GitOpsServiceCR 中添加容限:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要验证工作负载是否已调度到 Red Hat OpenShift GitOps 命名空间中的基础架构节点上,请点击任何 pod 名称,并确保已添加了 Node selector 和 Tolerations。
在默认 Argo CD CR 中手动添加节点选择器和 Tolerations 都会被 GitOpsService CR 中的切换和容限覆盖。
1.2. 将 GitOps Operator pod 移到基础架构节点 复制链接链接已复制到粘贴板!
您可以将 GitOps Operator pod 移到基础架构节点。
先决条件
- 在集群中安装了 Red Hat OpenShift GitOps Operator。
-
您可以使用
cluster-admin权限访问集群。
流程
运行以下命令,将现有节点标记为基础架构节点:
oc label node <node_name> node-role.kubernetes.io/infra=
$ oc label node <node_name> node-role.kubernetes.io/infra=1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将 <node_name> 替换为您要标记为基础架构节点的节点的名称。
输出示例
node/<node_name> labeled
node/<node_name> labeledCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来编辑 Red Hat OpenShift GitOps
Subscription资源:oc -n openshift-gitops-operator edit subscription openshift-gitops-operator
$ oc -n openshift-gitops-operator edit subscription openshift-gitops-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
Subscription资源的spec.config字段中添加nodeSelector和tolerations:订阅示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
subscription.operators.coreos.com/openshift-gitops-operator edited
subscription.operators.coreos.com/openshift-gitops-operator editedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 GitOps Operator pod 是否在基础架构节点上运行:
oc -n openshift-gitops-operator get po -owide
$ oc -n openshift-gitops-operator get po -owideCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES openshift-gitops-operator-controller-manager-abcd 2/2 Running 0 11m 94.142.44.126 <node_name> <none> <none>
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES openshift-gitops-operator-controller-manager-abcd 2/2 Running 0 11m 94.142.44.126 <node_name> <none> <none>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 确保列出的 <
;node_name> 是带有node-role.kubernetes.io/infra标签的节点。