Kubernetes 中 Ansible Operator 简介

新的 Operator SDK 使创建 Kubernetes 控制器变得容易,以便在集群中部署和管理服务或应用程序。
332 位读者喜欢这篇文章。
A community raising a barn

Opensource.com

多年来,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 的 Deployment。

apiVersion: "cache.example.com/v1alpha1"
kind: "Memcached"
metadata:
  name: "example-memcached"
spec:
  size: 3

Operator 的工作称为协调——持续确保 “spec” 中指定的内容与世界的真实状态相匹配。此示例 Operator 将 Pod 管理委托给 Deployment 控制器。因此,虽然它不直接创建或删除 Pod,但如果您更改大小,Operator 的协调循环会确保新值应用于它创建的 Deployment 资源。

成熟的 Operator 可以部署、升级、备份、修复、扩展和重新配置它管理的应用程序。正如您所看到的,Operator 不仅提供了一种仅使用原生 Kubernetes API 部署任意服务的简单方法;它还支持全面的 day-two(部署后,例如更新、备份等)管理,仅受您可以编写的代码的限制。

创建 Operator

Operator SDK 使入门变得容易。它奠定了新 Operator 的框架,其中许多复杂的部分已经处理完毕。您可以专注于定义您的自定义资源并在 Go 中编写协调逻辑。SDK 为您节省了大量时间和持续维护负担,但您最终仍然会拥有一个庞大的软件项目。

Ansible 最近被引入 Operator SDK,成为创建 Operator 的更简单方法,无需编码。要创建 Operator,您只需

  • 以 YAML 形式创建 CRD
  • 通过创建 Ansible 角色或 playbook 来定义协调应该做什么

一切都是 YAML——Kubernetes 用户熟悉的体验。

它是如何工作的?

存在一个预先存在的 Ansible Operator 基础容器镜像,其中包括 Ansible、ansible-runner 和 Operator 的可执行服务。SDK 帮助构建一个顶层,该顶层添加一个或多个 CRD,并将每个 CRD 与 Ansible 角色或 playbook 相关联。

运行时,Operator 使用 Kubernetes 功能“监视”对定义的任何类型资源的更改。收到此类通知后,它会协调更改的资源。Operator 运行相应的角色或 playbook,有关资源的信息作为 extra-vars 传递给 Ansible。

将 Ansible 与 Kubernetes 结合使用

经过多次迭代,Ansible 社区已经制作了一个非常易于使用的模块,用于与 Kubernetes 配合使用。特别是如果您有 Ansible 2.6 之前 Kubernetes 模块的任何经验,您应该了解一下 k8s 模块。创建、检索和更新资源是一种自然的体验,任何 Kubernetes 用户都会感到熟悉。这使得创建 Operator 变得更加容易。

试一试

如果您需要构建 Kubernetes Operator,使用 Ansible 这样做可以节省时间和复杂性。要了解更多信息,请访问 Operator SDK 文档并完成 Ansible Operator 的 入门指南。然后加入我们的 Operator Framework 邮件列表,让我们知道您的想法。 


Michael Hrivnak 将在 10 月 29 日至 31 日在美国田纳西州纳什维尔举行的 LISA18 上展示 在 Kubernetes 上自动化多服务部署

User profile image.
Michael Hrivnak 是 Red Hat 的首席软件工程师。在领导容器镜像的早期注册和分发技术开发之后,他开始参与解决 Kubernetes 上的实际编排问题。

评论已关闭。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.