文章目录
1. 介绍
2. Operator概述
3. Operator Components
4. Operator Installation
5. Sample Operator Components
5.1 Custom Resource Definition
5.2 RBAC Role
5.3 RBAC RoleBinding
5.4 添加权限项目管理员(admin)
5.5 Operator Deployment
6 Custom Resource 管理
1. 介绍
- Operator概述
- Operator部署
- Operator创建
假设和前提条件
你想:
- 了解操作人员如何在Red Hat®OpenShift®容器平台上工作
- 了解如何部署Operator
- 学习如何创建Operator
2. Operator概述
OpenShift API对象由资源和控制器组成
资源:Pod、ConfigMap、secret、service、route、PersistentVolumeClaim等。
控制器:Deployment, ReplicaSet, StatefulSet, DaemonSet, et等等
Control loop: Observe → Analyze → Act
Operator:管理资源的控制器类型
在软件中代表人类的操作知识来管理应用程序
是否可以使用stock controllers或管理资源本身
Domain-/Application-Specific特定的知识
Install and uninstall
Upgrade
Scale properly
Back up
Restore
Self-heal
数据库常用维护任务
与OpenShift互动
Operators 利用自定义资源定义(crd)
crds允许扩展Kubernetes/OpenShift API,然后API知道新的资源
crd允许创建定制资源(CRs)
Operators watches CR的创建,通过创建应用程序进行反应
CRs的管理方式与普通的OpenShift对象相同:创建、获取、描述、删除等。
例子:
oc get tomcats
CRD + Custom controller + Domain-specific knowledge = Operator
https://github.com/operator-framework
3. Operator Components
- Operator Deletion
- Custom Resource Creation Using an Operator
4. Operator Installation
可以为以下任何一种安装Operators :
整个集群
单项目
需要不同的RBAC对象
Operator监视一个项目或整个集群,以进行CR创建事件
是否可以自动向项目管理员授予发放CRs的权限
某些对象需要集群管理员权限(cluster-admin)
Cluster-Wide Operator 的安装步骤
所有步骤都需要以集群管理员权限执行
创建 CRD
为 Operator 创建项目以在其中运行
为 Operator pod 创建服务帐户(service account)以运行
创建 RBAC ClusterRole
为运行 Operator 的服务帐户创建 RBAC ClusterRoleBinding
创建指向包含 Operator 代码的容器映像的 Operator 部署
将 WATCH_NAMESPACE 环境变量设置为“”
命名空间运算符的安装步骤
除 CRD 之外的所有步骤都可以在项目管理员权限下执行
创建 CRD
需要集群管理员(cluster-admin)权限
为 Operator 创建项目以在其中运行
为 Operator pod 创建service account以运行
创建 RBAC Role
为运行 Operator 的服务帐户创建 RBAC RoleBinding
创建指向包含 Operator 代码的容器映像的 Operator 部署
将 WATCH_NAMESPACE 环境变量设置为当前项目名称
要自动设置,请使用 downwardAPI metadata.namespace 字段
5. Sample Operator Components
5.1 Custom Resource Definition
apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: tomcats.apache.org spec: group: apache.org names: kind: Tomcat listKind: TomcatList plural: tomcats singular: tomcat shortNames: - tc scope: Namespaced version: v1alpha1
5.2 RBAC Role
kind: Role apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: tomcat-operator rules: - apiGroups: - tomcats.apache.org resources: - "*" verbs: - "*" - apiGroups: - "" resources: - "*" verbs: - "*"
如果不使用集群管理权限,OpenShift需要明确的resources
和 verbs
列表
5.3 RBAC RoleBinding
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: default-account-tomcat-operator subjects: - kind: ServiceAccount name: tomcat-operator roleRef: kind: Role name: tomcat-operator apiGroup: rbac.authorization.k8s.io
5.4 添加权限项目管理员(admin)
为每个项目管理员添加权限,以创建从项目访问CRD的角色:
apiVersion: authorization.openshift.io/v1 kind: ClusterRole metadata: labels: rbac.authorization.k8s.io/aggregate-to-admin: "true" name: gogs-admin-rules rules: - apiGroups: - gpte.opentlc.com resources: - gogs verbs: - create - update - delete - get - list - watch - patch
5.5 Operator Deployment
apiVersion: apps/v1 kind: Deployment metadata: name: tomcat-operator spec: replicas: 1 selector: matchLabels: name: tomcat-operator template: metadata: labels: name: tomcat-operator spec: serviceAccountName: tomcat-operator containers: - name: tomcat-operator image: quay.io/wkulhanek/tomcat-operator:v0.1.0 imagePullPolicy: Always env: - name: WATCH_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace
To deploy a cluster-wide Operator, replace valueFrom: with value: “”.
6 Custom Resource 管理
运行操作员将在以下两种方式中创建CR:
整个OpenShift集群
运行者正在运行的项目
当创建CR时,Operator接收事件
然后Operator创建所有OpenShift资源组成的应用程序
Example: Custom Resource Creation
to create CR instance:
Create YAML file with definition of CR:
apiVersion: apache.org/v1alpha1 kind: Tomcat metadata: name: mytomcat spec: replicaCount: 2
Create resource in OpenShift:
oc create -f mytomcat.yaml
Custom Resource Management
要操作和检查CR,请使用oc命令:
oc get tomcats oc describe tomcat mytomcat oc scale tomcats --replicas=2 # only if Operator supports scaling
不要直接扩展ReplicaSets, deployment, StatefulSets, etc
- Use Operator to scale
- Operator继续监视已创建的资源,并将其设置回初始状态
删除所有创建的OpenShift API对象,删除CR:
oc delete tomcat mytomcat
Summary
- Operator Components
- Operator Installation
- Sample Operator Components
- Operator Deletion
- Custom Resource Creation Using an Operator