博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kubernetes操作器Operator开发SDK简介
阅读量:6564 次
发布时间:2019-06-24

本文共 4272 字,大约阅读时间需要 14 分钟。

hot3.png

概览

  • 原文来自:

该项目是 的组成部分, 是一个开源的工具用于管理 Kubernetes 原生的应用, 称为 Operators, 以一种更为有效、自动化、可伸缩的方式。更多信息参考 。

使在Kubernetes中管理复杂的有状态的应用更为简单。但是,目前编写 operator 还是比较困难,因为需要与底层的APIs打交道,编写模版和模块化资源缺乏也导致重复的工作。

该 Operator SDK 是一个框架,使用 库来使得编写 operators 更为容易,提供了:

  • 高阶APIs 和抽象,使编写运维逻辑更为直观。
  • Tools和启动模块,使创建新的工程时更快。
  • 覆盖常用的operator的扩展。

工作流

该 SDK 提供了一个工作流程,用于使用 Go、 Ansible 或 Helm来开发operators。

下面的工作流用于创建新的 Go operator:

  1. 创建新的 operator project,使用 SDK Command Line Interface(CLI)。
  2. 定义新的resource APIs,通过添加Custom Resource Definitions(CRD)。
  3. 定义 Controllers 观察和协调资源。
  4. 编写协调逻辑,使用 SDK 和 controller-runtime APIs。
  5. 使用 SDK CLI 构建和生成 operator deployment manifests。

下面的工作流用于创建新的Ansible operator:

  1. 创建新的 operator project,使用SDK Command Line Interface(CLI)。
  2. 编写协调逻辑,为自己的对象,使用ansible playbooks 和 roles。
  3. 使用 SDK CLI 构建和生成 operator deployment manifests。
  4. 可选添加额外的 CRD's,使用 SDK CLI,重复步骤2、3。

下面的工作流用于创建新的Helm operator:

  1. 创建新的 operator project,使用 SDK Command Line Interface(CLI)。
  2. 创建新的  (或添加已有的) Helm chart,用于 operator's 协调逻辑使用。
  3. 使用SDK CLI 构建和生成operator deployment manifests。
  4. 可选添加额外的CRD's,使用SDK CLI,重复步骤 2 和 3。

预先要求

  • version v0.5.0+.
  • version v1.10+.
  • version 17.03+.
  • version v1.11.0+.
  • Access to a kubernetes v.1.11.0+ cluster.

快速开始

首先, 检出和安装 operator-sdk CLI,如下:

$ mkdir -p $GOPATH/src/github.com/operator-framework$ cd $GOPATH/src/github.com/operator-framework$ git clone https://github.com/operator-framework/operator-sdk$ cd operator-sdk$ git checkout master$ make dep$ make install

创建和部署一个 app-operator,使用SDK CLI来完成,如下:

# Create an app-operator project that defines the App CR.$ mkdir -p $GOPATH/src/github.com/example-inc/# Create a new app-operator project$ cd $GOPATH/src/github.com/example-inc/$ operator-sdk new app-operator$ cd app-operator# Add a new API for the custom resource AppService$ operator-sdk add api --api-version=app.example.com/v1alpha1 --kind=AppService# Add a new controller that watches for AppService$ operator-sdk add controller --api-version=app.example.com/v1alpha1 --kind=AppService# Build and push the app-operator image to a public registry such as quay.io$ operator-sdk build quay.io/example/app-operator$ docker push quay.io/example/app-operator# Update the operator manifest to use the built image name (if you are performing these steps on OSX, see note below)$ sed -i 's|REPLACE_IMAGE|quay.io/example/app-operator|g' deploy/operator.yaml# On OSX use:$ sed -i "" 's|REPLACE_IMAGE|quay.io/example/app-operator|g' deploy/operator.yaml# Setup Service Account$ kubectl create -f deploy/service_account.yaml# Setup RBAC$ kubectl create -f deploy/role.yaml$ kubectl create -f deploy/role_binding.yaml# Setup the CRD$ kubectl create -f deploy/crds/app_v1alpha1_appservice_crd.yaml# Deploy the app-operator$ kubectl create -f deploy/operator.yaml# Create an AppService CR# The default controller will watch for AppService objects and create a pod for each CR$ kubectl create -f deploy/crds/app_v1alpha1_appservice_cr.yaml# Verify that a pod is created$ kubectl get pod -l app=example-appserviceNAME                     READY     STATUS    RESTARTS   AGEexample-appservice-pod   1/1       Running   0          1m# Test the new Resource Type$ kubectl describe appservice example-appserviceName:         example-appserviceNamespace:    myprojectLabels:       
Annotations:
API Version: app.example.com/v1alpha1Kind: AppServiceMetadata: Cluster Name: Creation Timestamp: 2018-12-17T21:18:43Z Generation: 1 Resource Version: 248412 Self Link: /apis/app.example.com/v1alpha1/namespaces/myproject/appservices/example-appservice UID: 554f301f-0241-11e9-b551-080027c7d133Spec: Size: 3# Cleanup$ kubectl delete -f deploy/crds/app_v1alpha1_appservice_cr.yaml$ kubectl delete -f deploy/operator.yaml$ kubectl delete -f deploy/role.yaml$ kubectl delete -f deploy/role_binding.yaml$ kubectl delete -f deploy/service_account.yaml$ kubectl delete -f deploy/crds/app_v1alpha1_appservice_crd.yaml

命令行界面-CLI

了解更多 SDK CLI, 查看 , 或者运行 operator-sdk [command] -h

使用指南

了解更多使用 Go 语言编写 operator的方法,查看 。

该 SDK 同时支持使用 Ansible 和 Helm开发 operator。查看 和 的operator 用户指南。

例子

探索operator-sdk的例子,查看 。

贡献

查看 了解提交布丁和贡献的方法和流程。

查看 提交需求和规划。

报告 bugs

查看 报告Bugs。

许可

Operator SDK的许可为 Apache 2.0 license. 查看许可文件 了解细节。

转载于:https://my.oschina.net/u/2306127/blog/3017244

你可能感兴趣的文章
consule服务注册和发现 安装 部署
查看>>
多个帐户都用root 来登录 怎么看另一个用户使用的那些命令
查看>>
Map集合案例
查看>>
《FPGA全程进阶---实战演练》第十一章 VGA五彩缤纷
查看>>
第七次课程作业
查看>>
C++ 文本查询2.0(逻辑查询)
查看>>
Objective-C学习总结-13协议1
查看>>
web学习方向
查看>>
A*算法实现
查看>>
第一周 从C走进C++ 002 命令行参数
查看>>
【java】itext pdf 分页
查看>>
看看这个电脑的配置
查看>>
[转]【NoSQL】NoSQL入门级资料整理(CAP原理、最终一致性)
查看>>
RequireJS进阶(二)
查看>>
我设计的网站的分布式架构
查看>>
linux extract rar files
查看>>
Knockout.Js官网学习(监控属性Observables)
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决
查看>>
azure之MSSQL服务性能测试
查看>>
Android BitmapFactory.Options
查看>>