Fix etcd client generation (#10769)
* ci: redefine multinode to node-etcd-client This should allow to catch several class of problem rather than just one -> from network plugin such as calico or cilium talking directly to the etcd. * Dynamically define etcd host range This has two benefits: - We don't play the etcd role twice for no reason - We have access to the whole cluster (if needed) to use things like group_by.pull/10800/head
parent
a0a2f40295
commit
a9e29a9eb2
|
@ -1,6 +1,6 @@
|
||||||
# Node Layouts
|
# Node Layouts
|
||||||
|
|
||||||
There are six node layout types: `default`, `separate`, `ha`, `scale`, `all-in-one`, and `multinode`.
|
There are six node layout types: `default`, `separate`, `ha`, `scale`, `all-in-one`, and `node-etcd-client`.
|
||||||
|
|
||||||
`default` is a non-HA two nodes setup with one separate `kube_node`
|
`default` is a non-HA two nodes setup with one separate `kube_node`
|
||||||
and the `etcd` group merged with the `kube_control_plane`.
|
and the `etcd` group merged with the `kube_control_plane`.
|
||||||
|
@ -18,7 +18,8 @@ never actually deployed, but certificates are generated for them.
|
||||||
|
|
||||||
`all-in-one` layout use a single node for with `kube_control_plane`, `etcd` and `kube_node` merged.
|
`all-in-one` layout use a single node for with `kube_control_plane`, `etcd` and `kube_node` merged.
|
||||||
|
|
||||||
`multinode` layout consists of two separate `kube_node` and a merged single `etcd+kube_control_plane` node.
|
`node-etcd-client` layout consists of a 4 nodes cluster, all of them in `kube_node`, first 3 in `etcd` and only one `kube_control_plane`.
|
||||||
|
This is necessary to tests setups requiring that nodes are etcd clients (use of cilium as `network_plugin` for instance)
|
||||||
|
|
||||||
Note, the canal network plugin deploys flannel as well plus calico policy controller.
|
Note, the canal network plugin deploys flannel as well plus calico policy controller.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,21 @@
|
||||||
---
|
---
|
||||||
|
- name: Add worker nodes to the etcd play if needed
|
||||||
|
hosts: kube_node
|
||||||
|
roles:
|
||||||
|
- { role: kubespray-defaults }
|
||||||
|
tasks:
|
||||||
|
- name: Check if nodes needs etcd client certs (depends on network_plugin)
|
||||||
|
group_by:
|
||||||
|
key: "_kubespray_needs_etcd"
|
||||||
|
when:
|
||||||
|
- kube_network_plugin in ["flannel", "canal", "cilium"] or
|
||||||
|
(cilium_deploy_additionally | default(false)) or
|
||||||
|
(kube_network_plugin == "calico" and calico_datastore == "etcd")
|
||||||
|
- etcd_deployment_type != "kubeadm"
|
||||||
|
tags: etcd
|
||||||
|
|
||||||
- name: Install etcd
|
- name: Install etcd
|
||||||
hosts: etcd:kube_control_plane
|
hosts: etcd:kube_control_plane:_kubespray_needs_etcd
|
||||||
gather_facts: False
|
gather_facts: False
|
||||||
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
||||||
environment: "{{ proxy_disable_env }}"
|
environment: "{{ proxy_disable_env }}"
|
||||||
|
@ -12,20 +27,3 @@
|
||||||
etcd_cluster_setup: true
|
etcd_cluster_setup: true
|
||||||
etcd_events_cluster_setup: "{{ etcd_events_cluster_enabled }}"
|
etcd_events_cluster_setup: "{{ etcd_events_cluster_enabled }}"
|
||||||
when: etcd_deployment_type != "kubeadm"
|
when: etcd_deployment_type != "kubeadm"
|
||||||
|
|
||||||
- name: Install etcd certs on nodes if required
|
|
||||||
hosts: k8s_cluster
|
|
||||||
gather_facts: False
|
|
||||||
any_errors_fatal: "{{ any_errors_fatal | default(true) }}"
|
|
||||||
environment: "{{ proxy_disable_env }}"
|
|
||||||
roles:
|
|
||||||
- { role: kubespray-defaults }
|
|
||||||
- role: etcd
|
|
||||||
tags: etcd
|
|
||||||
vars:
|
|
||||||
etcd_cluster_setup: false
|
|
||||||
etcd_events_cluster_setup: false
|
|
||||||
when:
|
|
||||||
- etcd_deployment_type != "kubeadm"
|
|
||||||
- kube_network_plugin in ["calico", "flannel", "canal", "cilium"] or cilium_deploy_additionally | default(false) | bool
|
|
||||||
- kube_network_plugin != "calico" or calico_datastore == "etcd"
|
|
||||||
|
|
|
@ -81,16 +81,20 @@ instance-2
|
||||||
[broken_etcd]
|
[broken_etcd]
|
||||||
instance-1 etcd_member_name=etcd2
|
instance-1 etcd_member_name=etcd2
|
||||||
instance-2 etcd_member_name=etcd3
|
instance-2 etcd_member_name=etcd3
|
||||||
{% elif mode == "multinode" %}
|
{% elif mode == "node-etcd-client" %}
|
||||||
[kube_control_plane]
|
[kube_control_plane]
|
||||||
instance-1
|
instance-1
|
||||||
|
|
||||||
[etcd]
|
[etcd]
|
||||||
instance-1
|
instance-1
|
||||||
|
|
||||||
[kube_node]
|
|
||||||
instance-2
|
instance-2
|
||||||
instance-3
|
instance-3
|
||||||
|
|
||||||
|
[kube_node]
|
||||||
|
instance-1
|
||||||
|
instance-2
|
||||||
|
instance-3
|
||||||
|
instance-4
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
[k8s_cluster:children]
|
[k8s_cluster:children]
|
||||||
|
|
|
@ -7,7 +7,7 @@ _vm_count_dict:
|
||||||
ha-recover: 3
|
ha-recover: 3
|
||||||
ha-recover-noquorum: 3
|
ha-recover-noquorum: 3
|
||||||
all-in-one: 1
|
all-in-one: 1
|
||||||
multinode: 3
|
node-etcd-client: 4
|
||||||
default: 2
|
default: 2
|
||||||
|
|
||||||
vm_count: "{{ _vm_count_dict[mode | d('default')] }}"
|
vm_count: "{{ _vm_count_dict[mode | d('default')] }}"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
# Instance settings
|
# Instance settings
|
||||||
cloud_image: ubuntu-2204
|
cloud_image: ubuntu-2204
|
||||||
mode: multinode
|
mode: node-etcd-client
|
||||||
vm_memory: 1600Mi
|
vm_memory: 1600Mi
|
||||||
|
|
||||||
# Kubespray settings
|
# Kubespray settings
|
||||||
|
|
Loading…
Reference in New Issue