Ansible 在Kubernetes Operator中的使用
Posted 云技术实践
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible 在Kubernetes Operator中的使用相关的知识,希望对你有一定的参考价值。
新的Operator SDK可以轻松创建Kubernetes控制器,以部署和管理群集中的服务或应用程序。
多年来,Ansible一直是基础设施自动化的首选。随着Kubernetes的采用量激增,Ansible继续在新兴的容器编排生态系统中大放异彩。
Ansible自适合Kubernetes工作流程,使用YAML描述理想状态。包括Automation Broker在内的多个项目正在使Ansible适应特定API的使用。本文将重点介绍一种新技术,该技术是由Ansible核心团队和Automation Broker的开发人员共同创建的,它使Ansible以最小的努力创建Operator。
Operator是什么?
Operator是一个Kubernetes控制器,用于部署和管理集群中的服务或应用程序。它可以自动化人类操作知识和最佳实践,以保持服务的运行和健康。输入以自定义资源的形式接收。让我们以Memcached Operator为例进行讨论。
Memcached Operator可以部署为集群中运行的服务,它包含一个名为Memcached的自定义资源定义(CRD)。最终用户创建该自定义资源的实例,以描述Memcached Deployment的外观。以下示例请求使用三个Pod进行部署。
apiVersion: "cache.example.com/v1alpha1"
kind: "Memcached"
metadata:
name: "example-memcached"
spec:
size: 3
Operator的工作称为调和,持续确保“规范”中指定的内容与实际状态相匹配。此示例Operator将Pod管理委派给Deployment控制器。因此,虽然它不直接创建或删除Pod,但如果更改大小,则Operator的协调循环可确保将新值应用于它创建的Deployment资源。
成熟的Operator可以部署,升级,备份,修复,扩展和重新配置其管理的应用程序。如你所见,运Operator不仅提供了一种仅使用本机Kubernetes API部署任意服务的简单方法; 它可以实现完整的第二天(部署后,例如更新,备份等)管理,仅受你可以编码的内容的限制。
创建Operator
Operator SDK使你可以轻松入门。它规定了新Operator的框架,其中许多复杂的部件已经处理完毕。你可以专注于定义自定义资源并在Go中编码协调逻辑。SDK可以为你节省大量时间和持续的维护负担,你最终仍将拥有一个实质性的软件项目。
Ansible最近被引入到Operator SDK中,作为一种更简单的制作运算符的方法,无需编码。 要创建Operator,你只需:
以YAML的形式创建CRD
通过创建Ansible角色或playbook来定义协调应该执行的操作
这是YAML一直以来的方式,对Kubernetes用户来说是一种熟悉的体验。
如何工作
有一个预先存在的Ansible Operator基本容器映像,包括Ansible,ansible-runner和Operator的可执行服务。SDK有助于在顶部构建一个层,用于添加一个或多个CRD,并将每个CRD与Ansible角色或playbook相关联。
当它运行时,Operator使用Kubernetes功能“监视”对所定义类型的任何资源的更改。收到此类通知后,它会协调更改的资源。Operator运行相应的role或playbook,有关资源的信息将作为extra-vars传递给Ansible。
在Kubernetes中使用Ansible
经过几次迭代,Ansible社区已经为Kubernetes提供了一个非常易于使用的模块。特别是如果你对Ansible 2.6之前的Kubernetes模块有任何经验,那么你应该自己去看看k8s模块。创建,检索和更新资源是一种自然体验,任何Kubernetes用户都会对此感到熟悉。 它使创建Operator变得更加容易。
试试看
如果你需要构建一个Kubernetes Operator,使用Ansible这样做可以节省时间和复杂性。要了解更多信息,请阅读Operator SDK文档并完成基于Ansible Operator入门指南。
原文链接:
https://opensource.com/article/18/10/ansible-operators-kubernetes
↓↓↓ 点击"阅读原文" 【加入云技术社区】
相关阅读:
以上是关于Ansible 在Kubernetes Operator中的使用的主要内容,如果未能解决你的问题,请参考以下文章
如何用Ansible部署Kubernetes集群到OpenStack
从零搭建Linux+Docker+Ansible+kubernetes 学习环境(1*Master+3*Node)
从零搭建Linux+Docker+Ansible+kubernetes 学习环境(1*Master+3*Node)
kubeadm ansible快速部署kubernetes生产级高可用集群