5.12. 添加自定义清单
自定义清单是一个 JSON 或 YAML 文件,其包含辅助安装程序用户界面目前不支持的高级配置。您可以创建一个自定义清单,或使用第三方提供的清单。要使用 API 创建一个自定义清单,请使用 /v2/clusters/$CLUSTER_ID/manifests 端点。
您可以使用辅助安装程序 API 将 base64 编码的自定义清单上传到 openshift 文件夹或 manifests 文件夹。对允许的自定义清单数量没有限制。
您只能一次上传一个 base64 编码的 JSON 清单。但是,每个上传的 base64 编码的 YAML 文件可以包含多个自定义清单。上传多文档 YAML 清单比单独添加 YAML 文件要快。
对于包含一个自定义清单的文件,可接受的文件扩展名包括 .yaml、.yml 或 .json。
一个自定义清单示例
{
"apiVersion": "machineconfiguration.openshift.io/v1",
"kind": "MachineConfig",
"metadata": {
"labels": {
"machineconfiguration.openshift.io/role": "primary"
},
"name": "10_primary_storage_config"
},
"spec": {
"config": {
"ignition": {
"version": "3.2.0"
},
"storage": {
"disks": [
{
"device": "</dev/xxyN>",
"partitions": [
{
"label": "recovery",
"startMiB": 32768,
"sizeMiB": 16384
}
]
}
],
"filesystems": [
{
"device": "/dev/disk/by-partlabel/recovery",
"label": "recovery",
"format": "xfs"
}
]
}
}
}
}
对于包含多个自定义清单的文件,可接受的文件类型包括 .yaml 或 .yml。
多个自定义清单示例
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: master
name: 99-openshift-machineconfig-master-kargs
spec:
kernelArguments:
- loglevel=7
---
apiVersion: machineconfiguration.openshift.io/v2
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: worker
name: 98-openshift-machineconfig-worker-kargs
spec:
kernelArguments:
- loglevel=5
- 当在 Oracle Cloud Infrastructure (OCI)外部平台上安装 OpenShift Container Platform 时,您必须添加 Oracle 提供的自定义清单。对于其它外部合作伙伴集成,如 vSphere 或 Nutanix,此步骤是可选的。
- 有关自定义清单的更多信息,请参阅 其它资源。
先决条件
-
您已生成了一个有效的
API_TOKEN。令牌每 15 分钟过期一次。 -
您已注册了一个新的集群定义,并将
cluster_id导出到$CLUSTER_IDBASH 变量。
流程
- 创建一个自定义清单文件。
- 使用合适的文件格式的扩展名保存自定义清单文件。
刷新 API 令牌:
$ source refresh-token运行以下命令,将自定义清单添加到集群中:
$ curl -X POST "https://api.openshift.com/api/assisted-install/v2/clusters/$CLUSTER_ID/manifests" \ -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_name":"manifest.json", "folder":"manifests", "content":"'"$(base64 -w 0 ~/manifest.json)"'" }' | jq将
manifest.json替换为清单文件的名称。manifest.json的第二个实例是文件的路径。确保路径正确。输出示例
{ "file_name": "manifest.json", "folder": "manifests" }注意base64 -w 0命令使用 base64 将清单编码为一个字符串,并省略回车。带回车的的编码将产生一个异常。验证辅助安装程序是否添加了清单:
$ curl -X GET "https://api.openshift.com/api/assisted-install/v2/clusters/$CLUSTER_ID/manifests/files?folder=manifests&file_name=manifest.json" -H "Authorization: Bearer $API_TOKEN"将
manifest.json替换为清单文件的名称。