如何自动化Kubernetes配置?
我想自动化我的Kubernetes配置,比如Ansible for VMs 一个示例场景:如何自动化Kubernetes配置?,kubernetes,ansible,terraform,kubernetes-helm,Kubernetes,Ansible,Terraform,Kubernetes Helm,我想自动化我的Kubernetes配置,比如Ansible for VMs 一个示例场景: 创建名称空间港 通过舵部署港口 什么样的工具适合这样的场景?我也可以使用terraform吗?我完全同意@p Ekambaram的观点,即kubernetes automation可以通过ansible成功地实现,但同时我完全不同意他的观点。这种“声明性”代码实际上根本不是声明性的。它变成了命令集的包装器。除此之外,这样的剧本不是(让我们提醒一下,如果一次操作的结果与不进行任何干预的重复操作的结果完全相同
shell
或command
模块应在ansible中作为最后手段使用,前提是没有其他方式执行所需任务,例如专用模块不存在或缺少某些重要功能时
当谈到使用ansible自动化kubernetes时,这种专用模块已经存在
快速查看一下,您会发现可以通过更优雅、更清晰的方式实现所需的结果:
名称空间创建:
- name: Create a k8s namespace
k8s:
name: testing
api_version: v1
kind: Namespace
state: present
基于yaml定义文件创建服务
- name: Create a Service object by reading the definition from a file
k8s:
state: present
src: /testing/service.yml
您刚才提到过您正在使用helm管理kubernetes应用程序吗?看一看。有什么例子吗?给你:
- name: Install helm chart from a git repo
helm:
host: localhost
chart:
source:
type: git
location: https://github.com/user/helm-chart.git
state: present
name: my-example
namespace: default
更新:
为了能够在某台主机上运行大多数Ansible模块,您需要在其上安装两个组件:
- python 2.7
- ssh服务器
k8s
模块时,正如我们在its中看到的:
执行此操作的主机需要以下要求
模块
python >= 2.7
openshift >= 0.6
PyYAML >= 3.11
它需要openshift(不同的kubernetes实现)并不是真的。安装openshift来管理我们的kubernetes集群的工作负载没有多大意义。因此,让我们精确地避免传播任何潜在的误导信息:它需要并且需要安装在运行模块的主机上(即,在我们通常运行kubectl
命令的主机上)
OpenShift Python客户端封装了K8s Python客户端,提供
完全访问两个平台上可用的所有API和模型。
有关API版本的详细信息和其他信息,请访问
重要!:您不必在kubernetes节点上安装任何其他模块。您只需要在管理kubernetes工作负载的计算机上使用它们
如果我们的Ansible安装在配置了kubectl
工具的同一台主机上,并且我们希望在该主机上直接运行剧本,而无需使用ssh或配置Ansible资源清册,我们只需在我们的ansible剧本中将其称为:
hosts: localhost
connection: local
创建新k8s命名空间的整个剧本可能如下所示:
---
- hosts: localhost
connection: local
tasks:
- name: Create a k8s namespace
k8s:
name: testing
api_version: v1
kind: Namespace
state: present
我们可以通过执行以下命令来运行它:
ansible-playbook playbook.yaml
然而,在我们能够做到这一点之前,我们需要确保我们已经安装了所有必需的依赖项,这些依赖项实际上并不多,它们仅限于python 2.7和上述两个库(在必需的版本中)
在主机上安装了Python之后,安装其余所需依赖项的最简单方法是运行:
pip install openshift
及
您可能会遇到以下错误:
"msg": "Failed to import the required Python library (openshift) on ***** Python /usr/bin/python. Please read module documentation and install in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter"
如果是,运行:
pip install --upgrade requests
应该修复它(至少在我的情况下它修复了它),然后我们的简单的ansible playbook在kubernetes集群中创建了新的名称空间
,应该可以顺利运行。:) 我完全同意@p Ekambaram的观点,即kubernetes automation可以通过ansible成功实现,但同时我完全不同意他的观点。这种“声明性”代码实际上根本不是声明性的。它变成了命令集的包装器。除此之外,这样的剧本不是(让我们提醒一下,如果一次操作的结果与不进行任何干预的重复操作的结果完全相同,那么一个操作就是幂等的)。这种方法与ansible中的一个关键概念相反
shell
或command
模块应在ansible中作为最后手段使用,前提是没有其他方式执行所需任务,例如专用模块不存在或缺少某些重要功能时
当谈到使用ansible自动化kubernetes时,这种专用模块已经存在
快速查看一下,您会发现可以通过更优雅、更清晰的方式实现所需的结果:
名称空间创建:
- name: Create a k8s namespace
k8s:
name: testing
api_version: v1
kind: Namespace
state: present
基于yaml定义文件创建服务
- name: Create a Service object by reading the definition from a file
k8s:
state: present
src: /testing/service.yml
您刚才提到过您正在使用helm管理kubernetes应用程序吗?看一看。有什么例子吗?给你:
- name: Install helm chart from a git repo
helm:
host: localhost
chart:
source:
type: git
location: https://github.com/user/helm-chart.git
state: present
name: my-example
namespace: default
更新:
为了能够在某台主机上运行大多数Ansible模块,您需要在其上安装两个组件:
- python 2.7
- ssh服务器