3.2.4. 使用 CLI 从 OperatorHub 安装
您可以使用 CLI 从 OperatorHub 安装 Operator,而不必使用 OpenShift Container Platform Web 控制台。使用 oc 命令来创建或更新一个订阅对象。
先决条件
- 使用具有 Operator 安装权限的账户访问 OpenShift Container Platform 集群。
-
在您的本地系统安装
oc命令。
流程
查看 OperatorHub 中集群可用的 Operator 列表:
$ oc get packagemanifests -n openshift-marketplace输出示例
NAME CATALOG AGE 3scale-operator Red Hat Operators 91m advanced-cluster-management Red Hat Operators 91m amq7-cert-manager Red Hat Operators 91m ... couchbase-enterprise-certified Certified Operators 91m crunchy-postgres-operator Certified Operators 91m mongodb-enterprise Certified Operators 91m ... etcd Community Operators 91m jaeger Community Operators 91m kubefed Community Operators 91m ...记录下所需 Operator 的目录。
检查所需 Operator,以验证其支持的安装模式和可用频道:
$ oc describe packagemanifests <operator_name> -n openshift-marketplace一个 Operator 组(由
OperatorGroup对象定义),在其中选择目标命名空间,在其中为与 Operator 组相同的命名空间中的所有 Operator 生成所需的 RBAC 访问权限。订阅 Operator 的命名空间必须具有与 Operator 的安装模式相匹配的 Operator 组,可采用
AllNamespaces模式,也可采用SingleNamespace模式。如果您要使用AllNamespaces安装 Operator,则openshift-operators命名空间已有适当的 Operator 组。如果要安装的 Operator 采用
SingleNamespace模式,而您没有适当的 Operator 组,则必须创建一个。注意在选择
SingleNamespace模式时,该流程的 Web 控制台版本会在后台自动为您处理OperatorGroup和Subscription对象的创建。创建
OperatorGroup对象 YAML 文件,如operatorgroup.yaml:OperatorGroup对象示例apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: <operatorgroup_name> namespace: <namespace> spec: targetNamespaces: - <namespace>创建
OperatorGroup对象:$ oc apply -f operatorgroup.yaml
创建一个
Subscription对象 YAML 文件,以便为 Operator 订阅一个命名空间,如sub.yaml:Subscription对象示例apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: <subscription_name> namespace: openshift-operators1 spec: channel: <channel_name>2 name: <operator_name>3 source: redhat-operators4 sourceNamespace: openshift-marketplace5 config: env:6 - name: ARGS value: "-v=10" envFrom:7 - secretRef: name: license-secret volumes:8 - name: <volume_name> configMap: name: <configmap_name> volumeMounts:9 - mountPath: <directory_name> name: <volume_name> tolerations:10 - operator: "Exists" resources:11 requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m" nodeSelector:12 foo: bar- 1
- 对于
AllNamespaces安装模式的使用,指定openshift-operators命名空间。否则,为SingleNamespace安装模式使用指定相关单一命名空间。 - 2
- 要订阅的频道的名称。
- 3
- 要订阅的 Operator 的名称。
- 4
- 提供 Operator 的目录源的名称。
- 5
- 目录源的命名空间。将
openshift-marketplace用于默认的 OperatorHub 目录源。 - 6
env参数定义必须存在于由 OLM 创建的 pod 中所有容器中的环境变量列表。- 7
envFrom参数定义要在容器中填充环境变量的源列表。- 8
volumes参数定义 OLM 创建的 pod 上必须存在的卷列表。- 9
volumeMounts参数定义由 OLM 创建的 pod 中必须存在的 VolumeMounts 列表。如果volumeMount引用不存在的卷,OLM 无法部署 Operator。- 10
tolerations参数为 OLM 创建的 pod 定义 Tolerations 列表。- 11
resources参数为 OLM 创建的 pod 中所有容器定义资源限制。- 12
nodeSelector参数为 OLM 创建的 pod 定义NodeSelector。
创建
Subscription对象:$ oc apply -f sub.yaml此时,OLM 已了解所选的 Operator。Operator 的集群服务版本(CSV)应出现在目标命名空间中,由 Operator 提供的 API 应可用于创建。