4.4. 使用 GitOps ZTP 为安装配置 Discovery ISO 内核参数
GitOps Zero Touch Provisioning (ZTP) 工作流使用 Discovery ISO 作为托管裸机主机的 OpenShift Container Platform 安装过程的一部分。您可以编辑 InfraEnv
资源来为 Discovery ISO 指定内核参数。这对具有特定环境要求的集群安装非常有用。例如,为发现 ISO 配置 rd.net.timeout.carrier
内核参数以促进集群的静态网络,或者在在安装过程中下载根文件系统前接收 DHCP 地址。
在 OpenShift Container Platform 4.15 中,您只能添加内核参数。您不能替换或删除内核参数。
先决条件
- 已安装 OpenShift CLI(oc)。
- 已以具有 cluster-admin 权限的用户身份登录到 hub 集群。
流程
创建
InfraEnv
CR,并编辑spec.kernelArguments
规格以配置内核参数。将以下 YAML 保存到
InfraEnv-example.yaml
文件中:注意本例中的
InfraEnv
CR 使用模板语法,如{{ .Cluster.ClusterName }}
,它根据SiteConfig
CR 中的值进行填充。SiteConfig
CR 在部署过程中自动填充这些模板的值。不要手动编辑模板。apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: annotations: argocd.argoproj.io/sync-wave: "1" name: "{{ .Cluster.ClusterName }}" namespace: "{{ .Cluster.ClusterName }}" spec: clusterRef: name: "{{ .Cluster.ClusterName }}" namespace: "{{ .Cluster.ClusterName }}" kernelArguments: - operation: append 1 value: audit=0 2 - operation: append value: trace=1 sshAuthorizedKey: "{{ .Site.SshPublicKey }}" proxy: "{{ .Cluster.ProxySettings }}" pullSecretRef: name: "{{ .Site.PullSecretRef.Name }}" ignitionConfigOverride: "{{ .Cluster.IgnitionConfigOverride }}" nmStateConfigLabelSelector: matchLabels: nmstate-label: "{{ .Cluster.ClusterName }}" additionalNTPSources: "{{ .Cluster.AdditionalNTPSources }}"
将
InfraEnv-example.yaml
CR 提交到 Git 存储库中具有SiteConfig
CR 并推送您的更改的相同位置。以下示例显示了 Git 存储库结构示例:~/example-ztp/install └── site-install ├── siteconfig-example.yaml ├── InfraEnv-example.yaml ...
编辑
SiteConfig
CR 中的spec.clusters.crTemplates
规格来引用 Git 存储库中的InfraEnv-example.yaml
CR:clusters: crTemplates: InfraEnv: "InfraEnv-example.yaml"
当您准备好通过提交和推送
SiteConfig
CR 来部署集群时,构建管道会使用 Git 存储库中的自定义InfraEnv-example
CR 来配置基础架构环境,包括自定义内核参数。
验证
要验证是否应用了内核参数,在 Discovery 镜像验证 OpenShift Container Platform 是否准备好安装后,您可以在安装过程开始前通过 SSH 连接到目标主机。此时,您可以在 /proc/cmdline
文件中查看发现 ISO 的内核参数。
使用目标主机开始 SSH 会话:
$ ssh -i /path/to/privatekey core@<host_name>
使用以下命令查看系统的内核参数:
$ cat /proc/cmdline