Skip to content

Commit b5af1c0

Browse files
authored
Merge pull request #782 from gmarcy/k8s-debian-default
chore: updates for k8s distro to work with all guest os
2 parents ffcf6c1 + f71b640 commit b5af1c0

File tree

10 files changed

+147
-140
lines changed

10 files changed

+147
-140
lines changed

kubeinit/galaxy.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ tags:
1717
- origin
1818
dependencies:
1919
ansible.posix: '==1.5.4'
20-
ansible.utils: '==2.10.3'
21-
community.crypto: '==2.13.1'
22-
community.general: '==7.0.1'
23-
community.libvirt: '==1.2.0'
24-
containers.podman: '==1.10.2'
20+
ansible.utils: '==5.0.0'
21+
community.crypto: '==2.21.1'
22+
community.general: '==9.2.0'
23+
community.libvirt: '==1.3.0'
24+
containers.podman: '==1.15.4'
2525
openvswitch.openvswitch: '==2.1.1'
2626

2727
repository: 'https://github.com/kubeinit/kubeinit'

kubeinit/group_vars/kubeinit_defaults.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ cluster_node_configurations_docsplaceholder: 'we should have a cluster_node_conf
1717

1818
cluster_node_default_distro:
1919
k8s:
20-
os: centos
20+
os: debian
2121
ocp:
2222
os: coreos
2323
okd:

kubeinit/requirements.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ collections:
77
- name: ansible.posix
88
version: '1.5.4'
99
- name: ansible.utils
10-
version: '2.10.3'
10+
version: '5.0.0'
1111
- name: community.crypto
12-
version: '2.13.1'
12+
version: '2.21.1'
1313
- name: community.general
14-
version: '7.0.1'
14+
version: '9.2.0'
1515
- name: community.libvirt
16-
version: '1.2.0'
16+
version: '1.3.0'
1717
- name: containers.podman
18-
version: '1.10.2'
18+
version: '1.15.4'
1919
- name: openvswitch.openvswitch
2020
version: '2.1.1'

kubeinit/roles/kubeinit_k8s/tasks/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@
187187

188188
- name: Label compute nodes
189189
ansible.builtin.command: |
190-
kubectl label node {{ hostvars[compute_node].fqdn }} node-role.kubernetes.io/worker=
190+
kubectl label node {{ compute_node }} node-role.kubernetes.io/worker=
191191
register: _result
192192
changed_when: "_result.rc == 0"
193193
loop: "{{ groups['all_compute_nodes'] | default([]) }}"

kubeinit/roles/kubeinit_k8s/tasks/prepare_cluster.yml

Lines changed: 13 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -58,130 +58,39 @@
5858
register: _result
5959
changed_when: "_result.rc == 0"
6060

61-
#### Debian-based distributions
62-
###
63-
#### These instructions are for Kubernetes v1.30.
64-
###
65-
#### Update the apt package index and install packages needed to use the Kubernetes apt repository:
66-
###
67-
### sudo apt-get update
68-
### # apt-transport-https may be a dummy package; if so, you can skip that package
69-
### sudo apt-get install -y apt-transport-https ca-certificates curl gpg
70-
###
71-
#### Download the public signing key for the Kubernetes package repositories. The same signing key is used for all repositories so you can disregard the version in the URL:
72-
###
73-
### # If the directory `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below.
74-
### # sudo mkdir -p -m 755 /etc/apt/keyrings
75-
### curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
76-
###
77-
#### Note:
78-
#### In releases older than Debian 12 and Ubuntu 22.04, directory /etc/apt/keyrings does not exist by default, and it should be created before the curl command.
79-
###
80-
#### Add the appropriate Kubernetes apt repository. Please note that this repository have packages only for Kubernetes 1.30; for other Kubernetes minor versions, you need to change the Kubernetes minor version in the URL to match your desired minor version (you should also check that you are reading the documentation for the version of Kubernetes that you plan to install).
81-
###
82-
### # This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list
83-
### echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
84-
###
85-
#### Update the apt package index, install kubelet, kubeadm and kubectl, and pin their version:
86-
###
87-
### sudo apt-get update
88-
### sudo apt-get install -y kubelet kubeadm kubectl
89-
### sudo apt-mark hold kubelet kubeadm kubectl
90-
###
91-
#### (Optional) Enable the kubelet service before running kubeadm:
92-
###
93-
### sudo systemctl enable --now kubelet
94-
###
95-
####
96-
#### END
97-
####
98-
#### Distributions using deb packages
99-
###
100-
#### Install the dependencies for adding repositories
101-
### apt-get update
102-
### apt-get install -y software-properties-common curl
103-
###
104-
#### Add the Kubernetes repository
105-
### curl -fsSL https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/deb/Release.key |
106-
### gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
107-
###
108-
### echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/$KUBERNETES_VERSION/deb/ /" |
109-
### tee /etc/apt/sources.list.d/kubernetes.list
110-
###
111-
#### Add the CRI-O repository
112-
### curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/stable:/$CRIO_VERSION/deb/Release.key |
113-
### gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
114-
###
115-
### echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/stable:/$CRIO_VERSION/deb/ /" |
116-
### tee /etc/apt/sources.list.d/cri-o.list
117-
###
118-
#### Install the packages
119-
### apt-get update
120-
### apt-get install -y cri-o kubelet kubeadm kubectl
121-
###
122-
#### Start CRI-O
123-
### systemctl start crio.service
124-
###
125-
#### Bootstrap a cluster
126-
### swapoff -a
127-
### modprobe br_netfilter
128-
### sysctl -w net.ipv4.ip_forward=1
129-
###
130-
### kubeadm init
131-
####
132-
#### END
133-
####
134-
- when: hostvars[kubeinit_provision_service_node].os != 'centos'
61+
- when: hostvars[kubeinit_provision_service_node].os == 'debian'
13562
block:
13663

13764
- name: Add kubernetes repo for latest kubectl (Debian)
13865
ansible.builtin.shell: |
13966
set -eo pipefail
67+
apt-get install -y apt-transport-https ca-certificates curl gpg
68+
mkdir -p /etc/apt/keyrings
69+
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
70+
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
14071
apt-get update
141-
apt-get install -y software-properties-common curl
142-
143-
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key |
144-
gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
145-
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" |
146-
tee /etc/apt/sources.list.d/kubernetes.list
147-
148-
curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/Release.key |
149-
gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
150-
echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/ /" |
151-
tee /etc/apt/sources.list.d/cri-o.list
152-
153-
apt-get update
154-
apt-get install -y cri-o kubelet kubeadm kubectl
155-
156-
systemctl start crio.service
72+
apt-get install -y kubectl
73+
apt-mark hold kubectl
15774
args:
15875
executable: /bin/bash
15976
register: _result
16077
changed_when: "_result.rc == 0"
16178

162-
###
163-
# The Project's prerelease:/main prefix at the CRI-O's package path, can be replaced with stable:/v1.28, stable:/v1.29, prerelease:/v1.28 or prerelease:/v1.29 if another stream package is used.
164-
###
79+
- when: hostvars[kubeinit_provision_service_node].os == 'ubuntu'
80+
block:
16581

16682
- name: Add kubernetes repo for latest kubectl (Ubuntu)
16783
ansible.builtin.shell: |
16884
set -eo pipefail
169-
apt-get install -y apt-transport-https ca-certificates curl gnupg
85+
apt-get install -y apt-transport-https ca-certificates curl gpg
17086
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
171-
chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring
17287
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
173-
chmod 644 /etc/apt/sources.list.d/kubernetes.list # helps tools such as command-not-found to work correctly
174-
apt-get update --allow-insecure-repositories
88+
apt-get update
89+
apt-get install -y kubectl
90+
apt-mark hold kubectl
17591
args:
17692
executable: /bin/bash
17793
register: _result
17894
changed_when: "_result.rc == 0"
17995

180-
- name: Install services requirements
181-
ansible.builtin.package:
182-
name:
183-
- kubectl
184-
state: present
185-
use: apt
186-
18796
delegate_to: "{{ kubeinit_provision_service_node }}"

kubeinit/roles/kubeinit_libvirt/tasks/cleanup_hypervisors.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@
198198
kubeinit_deployment_node_name: "{{ item[0] }}"
199199
service_name: "{{ kubeinit_cluster_name }}-{{ item[1] }}"
200200
delegate_to: "{{ kubeinit_deployment_node_name }}"
201+
when: false
201202

202203
- name: Remove any previous services podman pods
203204
containers.podman.podman_pod:

kubeinit/roles/kubeinit_libvirt/tasks/deploy_centos_guest.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@
203203
state: touch
204204
mode: '0644'
205205

206-
- name: Adding repository details in Kubernetes repo file.
206+
- name: Adding repository details in CRI-O repo file.
207207
ansible.builtin.blockinfile:
208208
path: /etc/yum.repos.d/cri-o.repo
209209
block: |

kubeinit/roles/kubeinit_libvirt/tasks/deploy_debian_guest.yml

Lines changed: 62 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,15 @@
117117
- name: Configure common requirements in Debian guests
118118
block:
119119

120+
- name: Update packages
121+
ansible.builtin.command: apt update
122+
123+
- name: Install resolvconf
124+
ansible.builtin.package:
125+
name: resolvconf
126+
state: present
127+
use: apt
128+
120129
- name: Make sure base file exists
121130
ansible.builtin.copy:
122131
content: ""
@@ -172,18 +181,11 @@
172181
- name: Force apt-get update
173182
ansible.builtin.shell: |
174183
apt-get update
175-
apt-get install -y gnupg
176184
args:
177185
executable: /bin/bash
178186
register: _result
179187
changed_when: "_result.rc == 0"
180188

181-
- name: Update packages
182-
ansible.builtin.package:
183-
name: "*"
184-
state: latest
185-
use: apt
186-
187189
- name: Disable SWAP
188190
ansible.builtin.shell: |
189191
swapoff -a
@@ -211,6 +213,59 @@
211213
register: _result
212214
changed_when: "_result.rc == 0"
213215

216+
- name: Enable kernel modules and IP forward
217+
ansible.builtin.shell: |
218+
modprobe br_netfilter
219+
echo br_netfilter > /etc/modules-load.d/br_netfilter.conf
220+
#modprobe overlay
221+
#echo overlay > /etc/modules-load.d/overlay.conf
222+
sysctl -w net.ipv4.ip_forward=1
223+
#sysctl -w net.bridge.bridge-nf-call-iptables=1
224+
args:
225+
executable: /bin/bash
226+
register: _result
227+
changed_when: "_result.rc == 0"
228+
229+
- name: Add kubernetes repo for latest kubectl (Ubuntu)
230+
ansible.builtin.shell: |
231+
set -eo pipefail
232+
export DEBIAN_FRONTEND=noninteractive
233+
apt-get install -y apt-transport-https ca-certificates curl gpg
234+
mkdir -p /etc/apt/keyrings
235+
curl -fsSL https://pkgs.k8s.io/core:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
236+
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
237+
curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
238+
echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/deb/ /" | tee /etc/apt/sources.list.d/cri-o.list
239+
apt-get update
240+
args:
241+
executable: /bin/bash
242+
register: _result
243+
changed_when: "_result.rc == 0"
244+
245+
- name: Install requirements
246+
ansible.builtin.shell: |
247+
apt-get install -y cri-o={{ kubeinit_k8s_kubernetes_version }}.* kubelet={{ kubeinit_k8s_kubernetes_version }}.* kubeadm={{ kubeinit_k8s_kubernetes_version }}.* kubectl={{ kubeinit_k8s_kubernetes_version }}.*
248+
apt-mark hold cri-o kubelet kubeadm kubectl
249+
args:
250+
executable: /bin/bash
251+
register: _result
252+
changed_when: "_result.rc == 0"
253+
254+
- name: Enable/start/status cri-o
255+
ansible.builtin.shell: |
256+
systemctl enable crio
257+
systemctl start crio
258+
systemctl status crio
259+
args:
260+
executable: /bin/bash
261+
register: _result
262+
changed_when: "_result.rc == 0"
263+
264+
- name: Enable kubelet
265+
ansible.builtin.systemd:
266+
name: kubelet
267+
enabled: yes
268+
214269
- name: Update packages
215270
ansible.builtin.package:
216271
name: "*"

kubeinit/roles/kubeinit_libvirt/tasks/deploy_ubuntu_guest.yml

Lines changed: 55 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -116,19 +116,8 @@
116116
- name: Configure common requirements in Ubuntu guests
117117
block:
118118

119-
- name: Add kubernetes repo for latest kubectl (Ubuntu)
120-
ansible.builtin.shell: |
121-
set -eo pipefail
122-
apt-get install -y apt-transport-https ca-certificates curl gnupg
123-
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
124-
chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring
125-
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
126-
chmod 644 /etc/apt/sources.list.d/kubernetes.list # helps tools such as command-not-found to work correctly
127-
apt-get update --allow-insecure-repositories
128-
args:
129-
executable: /bin/bash
130-
register: _result
131-
changed_when: "_result.rc == 0"
119+
- name: Update packages
120+
ansible.builtin.command: apt update
132121

133122
- name: Install resolvconf
134123
ansible.builtin.package:
@@ -223,6 +212,59 @@
223212
register: _result
224213
changed_when: "_result.rc == 0"
225214

215+
- name: Enable kernel modules and IP forward
216+
ansible.builtin.shell: |
217+
modprobe br_netfilter
218+
echo br_netfilter > /etc/modules-load.d/br_netfilter.conf
219+
#modprobe overlay
220+
#echo overlay > /etc/modules-load.d/overlay.conf
221+
sysctl -w net.ipv4.ip_forward=1
222+
#sysctl -w net.bridge.bridge-nf-call-iptables=1
223+
args:
224+
executable: /bin/bash
225+
register: _result
226+
changed_when: "_result.rc == 0"
227+
228+
- name: Add kubernetes repo for latest kubectl (Ubuntu)
229+
ansible.builtin.shell: |
230+
set -eo pipefail
231+
export DEBIAN_FRONTEND=noninteractive
232+
apt-get install -y apt-transport-https ca-certificates curl gpg
233+
mkdir -p /etc/apt/keyrings
234+
curl -fsSL https://pkgs.k8s.io/core:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
235+
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
236+
curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
237+
echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/stable:/v{{ kubeinit_k8s_kubernetes_version }}/deb/ /" | tee /etc/apt/sources.list.d/cri-o.list
238+
apt-get update
239+
args:
240+
executable: /bin/bash
241+
register: _result
242+
changed_when: "_result.rc == 0"
243+
244+
- name: Install requirements
245+
ansible.builtin.shell: |
246+
apt-get install -y cri-o={{ kubeinit_k8s_kubernetes_version }}.* kubelet={{ kubeinit_k8s_kubernetes_version }}.* kubeadm={{ kubeinit_k8s_kubernetes_version }}.* kubectl={{ kubeinit_k8s_kubernetes_version }}.*
247+
apt-mark hold cri-o kubelet kubeadm kubectl
248+
args:
249+
executable: /bin/bash
250+
register: _result
251+
changed_when: "_result.rc == 0"
252+
253+
- name: Enable/start/status cri-o
254+
ansible.builtin.shell: |
255+
systemctl enable crio
256+
systemctl start crio
257+
systemctl status crio
258+
args:
259+
executable: /bin/bash
260+
register: _result
261+
changed_when: "_result.rc == 0"
262+
263+
- name: Enable kubelet
264+
ansible.builtin.systemd:
265+
name: kubelet
266+
enabled: yes
267+
226268
- name: Update packages
227269
ansible.builtin.package:
228270
name: "*"

0 commit comments

Comments
 (0)