community.digitalocean.digital_ocean_kubernetes 模块 – 创建和删除 DigitalOcean Kubernetes 集群

注意

此模块是 community.digitalocean 集合 (版本 1.27.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查是否已安装它,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.digitalocean

要在剧本中使用它,请指定:community.digitalocean.digital_ocean_kubernetes

community.digitalocean 1.3.0 中的新增功能

摘要

  • 在 DigitalOcean 中创建和删除 Kubernetes 集群(并可选地等待其运行)。

参数

参数

注释

auto_upgrade

布尔值

一个布尔值,指示集群是否会在其维护窗口期间自动升级到新的补丁版本。

选项

  • false ← (默认)

  • true

ha

布尔值

一个布尔值,指示控制平面是否在集群中以高可用性配置运行。

高可用性控制平面会减少停机时间。

选项

  • false ← (默认)

  • true

maintenance_policy

字典

一个对象,指定 Kubernetes 集群的维护窗口策略(参见下表)。

name

字符串 / 必需

Kubernetes 集群的可读名称。

node_pools

列表 / 元素=字典

一个对象,指定 Kubernetes 集群可用的工作节点的详细信息(参见下表)。

默认值: [{"auto_scale": false, "count": 1, "labels": {}, "max_nodes": 0, "min_nodes": 0, "name": "worker-pool", "size": "s-1vcpu-2gb", "tags": [], "taints": []}]

auto_scale

布尔值

一个布尔值,指示是否为此节点池启用自动缩放。

选项

  • false

  • true

count

整数

节点池中的 Droplet 实例数量。

labels

字典

一个包含一组 Kubernetes 标签的对象。键是用户定义的。

max_nodes

整数

此节点池可以自动缩放到的最大节点数。

如果 auto_scale 设置为 false,则值为 0

min_nodes

整数

此节点池可以自动缩放到的最小节点数。

如果 auto_scale 设置为 false,则值为 0

name

字符串

节点池的可读名称。

size

字符串

用作节点池中工作节点的 Droplet 类型 的slug标识符。

tags

列表 / 元素=字符串

一个数组,包含应用于节点池的标签。

所有节点池都会自动标记为 "k8s""k8s-worker""k8s:$K8S_CLUSTER_ID"

taints

列表 / 元素=字典

要应用于池中所有节点的污点数组。

污点将自动应用于所有现有节点和随后添加到池中的任何节点。

删除污点时,会将其从池中的所有节点中删除。

oauth_token

别名:API_TOKEN

字符串 / 必需

DigitalOcean OAuth 令牌;可以在 DO_API_KEYDO_API_TOKENDO_OAUTH_TOKEN 环境变量中指定

project_name

别名:project

字符串

将资源分配到的项目(项目名称,而不是 UUID)。

默认为帐户的默认项目(空字符串)。

默认值: ""

region

别名:region_id

字符串

将创建 Kubernetes 集群的区域的 slug 标识符。

默认值: "nyc1"

return_kubeconfig

布尔值

控制是否返回 kubeconfig

选项

  • false ← (默认)

  • true

state

字符串

常用的,present 用于创建,absent 用于销毁

选项

  • "present" ← (默认)

  • "absent"

surge_upgrade

布尔值

一个布尔值,指示集群的 surge 升级是启用/禁用。

Surge 升级通过在销毁过时的节点之前启动新节点来使集群升级快速可靠。

选项

  • false ← (默认)

  • true

tags

列表 / 元素=字符串

一个扁平的标签名称数组(作为字符串),将应用于 Kubernetes 集群。

除了用户提供的任何标签外,所有集群还将自动标记为“k8s”和“k8s:$K8S_CLUSTER_ID”。

version

字符串

用于集群的 Kubernetes 版本的 slug 标识符。可用的版本请参见 /v2/kubernetes/options 端点。

默认值: "latest"

vpc_uuid

字符串

指定将 Kubernetes 集群分配到的 VPC 的 UUID 的字符串。

如果省略,则集群将分配到您帐户在该区域的默认 VPC。

wait

布尔值

等待集群运行完毕后再返回。

选项

  • false

  • true ← (默认值)

wait_timeout

整数

创建集群时,wait 超时之前的等待时间(秒)。

默认值: 600

示例

- name: Create a new DigitalOcean Kubernetes cluster in New York 1
  community.digitalocean.digital_ocean_kubernetes:
    state: present
    oauth_token: "{{ lookup('env', 'DO_API_TOKEN') }}"
    name: hacktoberfest
    region: nyc1
    node_pools:
      - name: hacktoberfest-workers
        size: s-1vcpu-2gb
        count: 3
    return_kubeconfig: true
    wait_timeout: 600
  register: my_cluster

- name: Show the kubeconfig for the cluster we just created
  debug:
    msg: "{{ my_cluster.data.kubeconfig }}"

- name: Destroy (delete) an existing DigitalOcean Kubernetes cluster
  community.digitalocean.digital_ocean_kubernetes:
    state: absent
    oauth_token: "{{ lookup('env', 'DO_API_TOKEN') }}"
    name: hacktoberfest

- name: Create a new DigitalOcean Kubernetes cluster assigned to Project "test"
  community.digitalocean.digital_ocean_kubernetes:
    state: present
    oauth_token: "{{ lookup('env', 'DO_API_TOKEN') }}"
    name: hacktoberfest
    region: nyc1
    node_pools:
      - name: hacktoberfest-workers
        size: s-1vcpu-2gb
        count: 3
    return_kubeconfig: true
    project: test
    wait_timeout: 600
  register: my_cluster

返回值

常见的返回值已在 此处 记录,以下是此模块特有的字段

描述

data

字典

一个 DigitalOcean Kubernetes 集群(和可选的 kubeconfig

返回: changed

示例: {"auto_upgrade": false, "cluster_subnet": "10.244.0.0/16", "created_at": "2020-09-27T00:55:37Z", "endpoint": "https://REDACTED.k8s.ondigitalocean.com", "id": "REDACTED", "ipv4": "REDACTED", "kubeconfig": "apiVersion: v1\nclusters:\n- cluster:\n    certificate-authority-data: REDACTED\n    server: https://REDACTED.k8s.ondigitalocean.com\n  name: do-nyc1-hacktoberfest\ncontexts:\n- context:\n    cluster: do-nyc1-hacktoberfest\n    user: do-nyc1-hacktoberfest-admin\n  name: do-nyc1-hacktoberfest\ncurrent-context: do-nyc1-hacktoberfest\nkind: Config\npreferences: {}\nusers:\n- name: do-nyc1-hacktoberfest-admin\n  user:\n    token: REDACTED", "maintenance_policy": {"day": "any", "duration": "4h0m0s", "start_time": "15:00"}, "name": "hacktoberfest", "node_pools": [{"auto_scale": false, "count": 1, "id": "REDACTED", "labels": null, "max_nodes": 0, "min_nodes": 0, "name": "hacktoberfest-workers", "nodes": [{"created_at": "2020-09-27T00:55:37Z", "droplet_id": "209555245", "id": "REDACTED", "name": "hacktoberfest-workers-3tdq1", "status": {"state": "running"}, "updated_at": "2020-09-27T00:58:36Z"}], "size": "s-1vcpu-2gb", "tags": ["k8s", "k8s:REDACTED", "k8s:worker"], "taints": []}], "region": "nyc1", "service_subnet": "10.245.0.0/16", "status": {"state": "running"}, "surge_upgrade": false, "tags": ["k8s", "k8s:REDACTED"], "updated_at": "2020-09-27T01:00:37Z", "version": "1.18.8-do.1", "vpc_uuid": "REDACTED"}

作者

  • Mark Mercado (@mamercad)