openshift operator 介绍

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: openshift operator 介绍

文章目录

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

数据库常用维护任务

1035234-20181020215539574-213176954.png

与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

image.png

https://github.com/operator-framework

3. Operator Components

1035234-20181020215539574-213176954.png

  • 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需要明确的resourcesverbs列表

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
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
缓存 Kubernetes API
Kubernetes Operator 开发教程
# 1. 概述 我们将 CRD, Controller, Webhook 三者合起来叫 Operator。一个 Operator 工程一般必须包含 CRD 和 Controller,Admission 是可选的。如果说 Kubernetes 是 "操作系统" 的话,Operator 是 Kubernetes 的第一层应用,它部署在 Kubernetes 里,使用 Kubernetes "扩展资源
9186 1
Kubernetes Operator 开发教程
|
2月前
|
Kubernetes API 数据库
CRD + Operator模式
【7月更文挑战第25天】
53 2
|
存储 JSON Kubernetes
听GPT 讲Istio源代码--operator
听GPT 讲Istio源代码--operator
50 0
|
4月前
|
Kubernetes Go API
|
Kubernetes API Docker
kubernetes Operator 【2】实战CRD编程
kubernetes Operator 【2】实战CRD编程
kubernetes Operator 【2】实战CRD编程
|
10月前
|
Prometheus Kubernetes 监控
Prometheus Operator(上)
Prometheus Operator(上)
202 0
|
10月前
|
Prometheus 监控 Kubernetes
Prometheus Operator(下)
Prometheus Operator(下)
58 0
|
Prometheus Kubernetes 监控
基于 Flagger Operator 的 Traefik 金丝雀部署
在日常的项目开发过程中时,我们时常会面临服务变更的挑战,为不影响用户体验,我们往往尽可能需要规避服务不可用风险。因此,持续交付便应运而生,其被接受为一种企业软件实践,并且是完善的持续集成原则的自然演变。然而,持续部署仍然非常罕见,这可能是由于管理的复杂性以及担心部署失败会影响系统可用性。在整个持续交付体系中,金丝雀发布,或许是最为经典的一个场景,基于此,我们能够很快发现不健康和“有问题”的服务,并且可以毫不费力地回滚到上一个的版本。
112 0
|
缓存 Kubernetes 监控
kubernetes Operator 【1】入门练习
kubernetes Operator 【1】入门练习
kubernetes Operator 【1】入门练习
|
Prometheus 运维 Kubernetes
Prometheus Operator
Prometheus Operator
715 0
Prometheus Operator