Compare commits

...

57 Commits

Author SHA1 Message Date
c3a225ca05 Update .gitea/workflows/deploy-k8s.yml 2025-10-24 18:43:35 +00:00
9385da0ed1 Update inventory.ini 2025-10-23 07:52:40 +00:00
feefc19d09 Update roles/kube-master/tasks/main.yml 2025-10-21 16:06:18 +00:00
3c990702ed Update roles/kube-master/tasks/patch_netconf.py 2025-10-21 15:43:10 +00:00
55ac95fc90 Update roles/kube-master/tasks/main.yml 2025-10-21 15:09:51 +00:00
880c7b23f1 Update roles/kube-node/tasks/main.yml 2025-10-21 09:12:45 +00:00
78e1bb9b48 Update roles/kube-master/tasks/patch_netconf.py 2025-10-21 09:11:30 +00:00
2391d89175 Update roles/kube-master/tasks/main.yml 2025-10-21 09:11:06 +00:00
47b3cb9bd4 Update roles/kube-node/tasks/main.yml 2025-10-20 20:21:19 +00:00
b016fd12ca Update roles/kube-node/tasks/main.yml 2025-10-20 20:14:40 +00:00
805b5c0817 Update roles/kube-node/tasks/main.yml 2025-10-20 20:13:46 +00:00
def84bb4de Update roles/kube-node/tasks/main.yml 2025-10-20 20:05:16 +00:00
8b7a067374 Update roles/kube-node/tasks/main.yml 2025-10-20 19:53:34 +00:00
249f9cadf3 Update roles/kube-node/tasks/main.yml 2025-10-20 19:48:09 +00:00
ff172ce20d Update roles/kube-node/tasks/main.yml 2025-10-20 19:38:21 +00:00
542b70c057 Update roles/kube-node/tasks/main.yml 2025-10-20 19:32:29 +00:00
13fc57c614 Update roles/kube-node/tasks/main.yml 2025-10-20 19:26:10 +00:00
52ddca4910 Update roles/kube-node/tasks/main.yml 2025-10-20 19:15:51 +00:00
05600edcec Update roles/kube-node/tasks/main.yml 2025-10-20 17:22:04 +00:00
ac9d93a0fb Update roles/kube-node/tasks/main.yml 2025-10-20 17:10:57 +00:00
0324d38eb4 Update roles/kube-master/tasks/main.yml 2025-10-20 16:45:07 +00:00
1c5db46acc Update roles/kube-master/tasks/patch_netconf.py 2025-10-20 16:44:35 +00:00
fd6cae2c81 Update roles/kubernetes/tasks/main.yml 2025-10-20 14:38:11 +00:00
75ca33bfa9 Update roles/kubernetes/tasks/main.yml 2025-10-20 13:55:08 +00:00
c0022c470d Update roles/kubernetes/tasks/main.yml 2025-10-20 13:49:55 +00:00
88ad914efe Update roles/kubernetes/tasks/main.yml 2025-10-20 13:32:39 +00:00
24a1fc02fd Update roles/kubernetes/tasks/main.yml 2025-10-20 13:24:55 +00:00
965d2d80c3 Update roles/kubernetes/tasks/main.yml 2025-10-20 13:18:49 +00:00
19ae31c442 Update roles/kubernetes/tasks/main.yml 2025-10-20 13:13:50 +00:00
ce5cd6d275 Update roles/kubernetes/tasks/main.yml 2025-10-20 13:07:56 +00:00
d06a6ac646 Update roles/kubernetes/tasks/main.yml 2025-10-20 13:02:01 +00:00
7d6530ba4e Update roles/kube-master/tasks/main.yml 2025-10-20 12:53:09 +00:00
34cc967d0b Update roles/kubernetes/tasks/main.yml 2025-10-20 12:51:59 +00:00
5401347945 Update roles/kubernetes/tasks/main.yml 2025-10-20 12:51:32 +00:00
16a6fae38e Update roles/kubernetes/tasks/main.yml 2025-10-20 12:23:53 +00:00
ee12fcec8b Update roles/kubernetes/tasks/main.yml 2025-10-20 12:16:29 +00:00
9721f54e7e Update roles/kube-master/tasks/main.yml 2025-10-20 11:03:40 +00:00
808ddb03eb Update roles/kube-master/tasks/patch_netconf.py 2025-10-20 09:45:03 +00:00
f14a0a137a Update roles/kube-master/tasks/main.yml 2025-10-20 08:49:45 +00:00
9bbe345dba Update roles/kubernetes/tasks/main.yml 2025-10-19 20:16:59 +00:00
d1d03f45e9 Update roles/kube-master/tasks/main.yml 2025-10-19 20:16:17 +00:00
d0a6f334ed Update roles/kube-master/tasks/main.yml 2025-10-19 19:37:27 +00:00
297354bf83 Update roles/kubernetes/tasks/main.yml 2025-10-17 19:35:49 +00:00
1be1e6e121 Update roles/kube-master/tasks/main.yml 2025-10-17 16:34:47 +00:00
358b575230 Update roles/kubernetes/tasks/main.yml 2025-10-17 15:05:25 +00:00
170c48bb60 Update roles/kube-master/tasks/main.yml 2025-10-17 15:04:42 +00:00
e4e4016a55 Update roles/kubernetes/tasks/main.yml 2025-10-17 14:50:29 +00:00
73e61f42ba Update roles/kubernetes/tasks/main.yml 2025-10-17 14:39:26 +00:00
290de9183a Update roles/kubernetes/tasks/main.yml 2025-10-17 14:27:48 +00:00
0044266d4f Update roles/kubernetes/tasks/main.yml 2025-10-17 14:26:47 +00:00
bf7319acb6 Update roles/kubernetes/tasks/main.yml 2025-10-17 14:21:40 +00:00
60c92d167a Update roles/kubernetes/tasks/main.yml 2025-10-17 14:13:31 +00:00
64cdb80a12 Update roles/kubernetes/tasks/main.yml 2025-10-17 14:06:20 +00:00
7df3f284f3 Update roles/kubernetes/tasks/main.yml 2025-10-17 14:01:20 +00:00
c97a7a393d Update roles/kubernetes/tasks/main.yml 2025-10-17 13:56:22 +00:00
39af168908 Update roles/kubernetes/tasks/main.yml 2025-10-17 13:47:53 +00:00
adf2e80757 Update roles/kube-master/tasks/main.yml 2025-10-17 13:47:07 +00:00
6 changed files with 136 additions and 44 deletions

View File

@ -2,7 +2,7 @@ name: IACAnsible
on: on:
push: push:
branches: [ main ] branches: [ kubernetes-vazio ]
workflow_dispatch: workflow_dispatch:
jobs: jobs:

View File

@ -1,9 +1,9 @@
[kube-master] [kube-master]
master1 ansible_host=192.168.1.10 ansible_user=ubuntu master1 ansible_host=192.168.1.10 ansible_user=ubuntu ansible_ssh_common_args='-o StrictHostKeyChecking=no'
[kube-node] [kube-node]
node1 ansible_host=192.168.1.11 ansible_user=ubuntu node1 ansible_host=192.168.1.11 ansible_user=ubuntu ansible_ssh_common_args='-o StrictHostKeyChecking=no'
node2 ansible_host=192.168.1.12 ansible_user=ubuntu node2 ansible_host=192.168.1.12 ansible_user=ubuntu ansible_ssh_common_args='-o StrictHostKeyChecking=no'
[all:vars] #[all:vars]
ansible_python_interpreter=/usr/bin/python3 #ansible_python_interpreter=/usr/bin/python3

View File

@ -1,73 +1,76 @@
- name: Instalar pip3 no host remoto - name: Instalar pip3 no host remoto
become: true
ansible.builtin.apt: ansible.builtin.apt:
name: python3-pip name: python3-pip
state: present state: present
update_cache: true update_cache: true
- name: Instalar ruamel.yaml no host remoto - name: Instalar ruamel.yaml no host remoto
become: true
ansible.builtin.pip: ansible.builtin.pip:
name: ruamel.yaml name: ruamel.yaml
executable: pip3 executable: pip3
- name: Fazer download do manifest oficial do Flannel - name: Fazer download do manifest oficial do Flannel
become: true
get_url: get_url:
url: https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml url: https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
dest: /tmp/kube-flannel.yml dest: /tmp/kube-flannel.yml
- name: Substituir o CIDR da rede no manifest - name: Substituir o CIDR da rede no manifest
become: true
replace: replace:
path: /tmp/kube-flannel.yml path: /tmp/kube-flannel.yml
regexp: '10\.244\.0\.0/16' regexp: '10\.244\.0\.0/16'
replace: '192.168.3.0/16' replace: '10.244.0.0/16' # .3.
- name: Corrigir net-conf.json no manifest do Flannel - name: Corrigir net-conf.json no manifest do Flannel
become: true
ansible.builtin.script: ansible.builtin.script:
cmd: patch_netconf.py cmd: patch_netconf.py
- name: cat flannel - name: cat flannel
become: true
shell: | shell: |
cat /tmp/kube-flannel.yml cat /tmp/kube-flannel.yml
register: flannel_manifest register: flannel_manifest
- name: Mostrar conteúdo do manifest - name: Mostrar conteúdo do manifest
become: true
debug: debug:
var: flannel_manifest.stdout var: flannel_manifest.stdout
- name: Forçar uso da interface correta - name: Adicionar --iface=eth0 ao flanneld
replace: become: true
ansible.builtin.lineinfile:
path: /tmp/kube-flannel.yml path: /tmp/kube-flannel.yml
regexp: 'command: insertafter: ' - --kube-subnet-mgr'
\[.*?flanneld.*?\] line: ' - --iface=eth0'
'
replace: |
command:
- /opt/bin/flanneld
- --ip-masq
- --kube-subnet-mgr
- --iface=eth1
- name: Inicializar o cluster com kubeadm - name: Inicializar o cluster com kubeadm
become: true
command: command:
argv: argv:
- kubeadm - kubeadm
- init - init
- --pod-network-cidr=192.168.3.0/16 - --pod-network-cidr=10.244.0.0/16 # .3.
- --apiserver-advertise-address=192.168.1.150 - --apiserver-advertise-address=192.168.1.150
- --cri-socket=unix:///run/containerd/containerd.sock
creates: /etc/kubernetes/admin.conf creates: /etc/kubernetes/admin.conf
- name: Verificar se o diretório .kube já existe - name: Verificar se o diretório .kube já existe
become: true
stat: stat:
path: /home/fenix/.kube path: /home/fenix/.kube
register: kube_dir register: kube_dir
- name: Criar diretório .kube para o usuário ubuntu - name: Criar diretório .kube para o usuário ubuntu
become: true
ansible.builtin.file: ansible.builtin.file:
path: /home/fenix/.kube path: /home/fenix/.kube
state: directory state: directory
@ -77,6 +80,7 @@
when: not kube_dir.stat.exists when: not kube_dir.stat.exists
- name: Set up kubeconfig for user - name: Set up kubeconfig for user
become: true
copy: copy:
src: /etc/kubernetes/admin.conf src: /etc/kubernetes/admin.conf
dest: /home/fenix/.kube/config dest: /home/fenix/.kube/config
@ -87,6 +91,7 @@
when: not kube_dir.stat.exists when: not kube_dir.stat.exists
- name: 33 Wait for Kubernetes API to be ready - name: 33 Wait for Kubernetes API to be ready
become: true
shell: | shell: |
kubectl get --raw='/healthz' kubectl get --raw='/healthz'
environment: environment:
@ -98,11 +103,13 @@
become: yes become: yes
- name: cat flannel - name: cat flannel
become: true
shell: | shell: |
cat /tmp/kube-flannel.yml cat /tmp/kube-flannel.yml
register: flannel_manifest2 register: flannel_manifest2
- name: Mostrar conteúdo do manifest - name: Mostrar conteúdo do manifest
become: true
debug: debug:
var: flannel_manifest2.stdout var: flannel_manifest2.stdout
@ -115,6 +122,7 @@
KUBECONFIG: /home/fenix/.kube/config KUBECONFIG: /home/fenix/.kube/config
- name: 34 Wait for Kubernetes API to be ready - name: 34 Wait for Kubernetes API to be ready
become: true
shell: | shell: |
kubectl get --raw='/healthz' kubectl get --raw='/healthz'
environment: environment:
@ -126,9 +134,11 @@
become: yes become: yes
- name: Get kubeadm join command - name: Get kubeadm join command
become: true
shell: kubeadm token create --print-join-command shell: kubeadm token create --print-join-command
register: join_cmd register: join_cmd
- name: Set join command as fact - name: Set join command as fact
become: true
set_fact: set_fact:
kubeadm_join_command: "{{ join_cmd.stdout }}" kubeadm_join_command: "{{ join_cmd.stdout }}"

View File

@ -10,11 +10,11 @@ with open("/tmp/kube-flannel.yml", "r") as f:
for doc in docs: for doc in docs:
if doc.get("kind") == "ConfigMap" and doc.get("metadata", {}).get("name") == "kube-flannel-cfg": if doc.get("kind") == "ConfigMap" and doc.get("metadata", {}).get("name") == "kube-flannel-cfg":
doc["data"]["net-conf.json"] = '''{ doc["data"]["net-conf.json"] = '''{
"Network": "192.168.3.0/16", "Network": "10.244.0.0/16",
"Backend": { "Backend": {
"Type": "vxlan" "Type": "vxlan"
}, },
"Interface": "eth1" "Interface": "eth0"
}''' }'''
with open("/tmp/kube-flannel.yml", "w") as f: with open("/tmp/kube-flannel.yml", "w") as f:

View File

@ -2,6 +2,30 @@
hostname: hostname:
name: "ubuntu-{{ ansible_play_hosts.index(inventory_hostname) }}" name: "ubuntu-{{ ansible_play_hosts.index(inventory_hostname) }}"
- name: Obter hostname real do nó
become: true
command: hostname
register: node_hostname
- name: Verificar se o nó já está no cluster
shell: |
kubectl get nodes --no-headers | grep -w {{ node_hostname.stdout }} || echo "NOT_IN_CLUSTER"
register: node_status
environment:
KUBECONFIG: /etc/kubernetes/kubelet.conf
- name: Join Kubernetes cluster - name: Join Kubernetes cluster
shell: "{{ hostvars['master1']['kubeadm_join_command'] }}" shell: "{{ hostvars['master1']['kubeadm_join_command'] }}"
when: hostvars['master1']['kubeadm_join_command'] is defined when:
- hostvars['master1']['kubeadm_join_command'] is defined
- node_status.stdout | trim == "NOT_IN_CLUSTER"
#- name: Atribuir podCIDR ao nó via hostname real
# shell: |
# kubectl patch node {{ node_hostname.stdout }} -p '{"spec":{"podCIDR":"192.168.2.0/24"}}'
# when:
# - hostvars['master1']['kubeadm_join_command'] is defined
# - node_status.stdout | trim == "NOT_IN_CLUSTER"

View File

@ -1,24 +1,72 @@
- name: Install containerd - name: disable UFW firewall for labs
service:
name: ufw
state: stopped
enabled: false
- name: Disable SWAP
shell: |
swapoff -a
- name: Disable SWAP in fstab
lineinfile:
path: /etc/fstab
regexp: '^.*swap.*$'
line: '#\0'
backrefs: yes
- name: Installation of apt-utils
become: true
apt:
name:
- apt-transport-https
state: present
update_cache: yes
- name: Instalar containerd
become: true
apt: apt:
name: containerd name: containerd
state: present state: present
update_cache: no update_cache: yes
- name: Hold Kubernetes packages - name: Criar diretório de configuração do containerd
ansible.builtin.shell: | become: true
apt-mark hold containerd file:
path: /etc/containerd
state: directory
mode: '0755'
#- name: Add Kubernetes APT key - name: Gerar config.toml padrão do containerd
# apt_key: become: true
# url: https://packages.cloud.google.com/apt/doc/apt-key.gpg shell: containerd config default > /etc/containerd/config.toml
# state: present args:
creates: /etc/containerd/config.toml
- name: Ativar SystemdCgroup no containerd
become: true
replace:
path: /etc/containerd/config.toml
regexp: 'SystemdCgroup = false'
replace: 'SystemdCgroup = true'
- name: Reiniciar e habilitar containerd
become: true
systemd:
name: containerd
state: restarted
enabled: true
- name: Setting value of SystemdCgroup
shell: |
containerd config default | sudo tee /etc/containerd/config.toml | grep SystemdCgroup
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
#- name: Add Kubernetes repo
# apt_repository:
# repo: deb http://apt.kubernetes.io/ kubernetes-jammy main
# state: present
- name: Adicionar chave GPG do Kubernetes - name: Adicionar chave GPG do Kubernetes
become: true
ansible.builtin.shell: | ansible.builtin.shell: |
mkdir -p /etc/apt/keyrings mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
@ -26,6 +74,7 @@
creates: /etc/apt/keyrings/kubernetes-apt-keyring.gpg creates: /etc/apt/keyrings/kubernetes-apt-keyring.gpg
- name: Adicionar repositório oficial do Kubernetes - name: Adicionar repositório oficial do Kubernetes
become: true
ansible.builtin.copy: ansible.builtin.copy:
dest: /etc/apt/sources.list.d/kubernetes.list dest: /etc/apt/sources.list.d/kubernetes.list
content: | content: |
@ -33,6 +82,7 @@
- name: Install Kubernetes components - name: Install Kubernetes components
become: true
apt: apt:
name: name:
- kubelet - kubelet
@ -42,28 +92,33 @@
update_cache: yes update_cache: yes
- name: Hold Kubernetes packages - name: Hold Kubernetes packages
become: true
ansible.builtin.shell: | ansible.builtin.shell: |
apt-mark hold kubelet kubeadm kubectl apt-mark hold kubelet kubeadm kubectl
- name: Desativar swap - name: Desativar swap
become: true
ansible.builtin.command: swapoff -a ansible.builtin.command: swapoff -a
- name: Garantir que swap está desativado no fstab - name: Garantir que swap está desativado no fstab
become: true
ansible.builtin.lineinfile: ansible.builtin.lineinfile:
path: /etc/fstab path: /etc/fstab
regexp: '.*swap.*' regexp: '.*swap.*'
state: absent state: absent
- name: Ativar ip_forward de forma idempotente #- name: Ativar ip_forward de forma idempotente
ansible.builtin.sysctl: # become: true
name: net.ipv4.ip_forward # ansible.builtin.sysctl:
value: '1' # name: net.ipv4.ip_forward
state: present # value: '1'
reload: yes # state: present
# reload: yes
- name: Configurar sysctl para Kubernetes - name: Configurar sysctl para Kubernetes
become: true
ansible.builtin.copy: ansible.builtin.copy:
dest: /etc/sysctl.d/k8s.conf dest: /etc/sysctl.d/k8s.conf
content: | content: |
@ -75,10 +130,12 @@
ansible.builtin.command: sysctl --system ansible.builtin.command: sysctl --system
when: ansible_facts['os_family'] == 'Debian' when: ansible_facts['os_family'] == 'Debian'
changed_when: false changed_when: false
become: true
- name: Criar arquivo de configuração sysctl para Kubernetes - name: Criar arquivo de configuração sysctl para Kubernetes
become: true
ansible.builtin.copy: ansible.builtin.copy:
dest: /etc/sysctl.d/k8s.conf dest: /etc/sysctl.d/k8s.conf
content: | content: |
@ -90,12 +147,13 @@
notify: Reload sysctl notify: Reload sysctl
- name: Carregar módulo br_netfilter se necessário - name: Carregar módulo br_netfilter se necessário
become: true
ansible.builtin.modprobe: ansible.builtin.modprobe:
name: br_netfilter name: br_netfilter
state: present state: present
- name: Garantir que o módulo br_netfilter seja carregado na inicialização - name: Garantir que o módulo br_netfilter seja carregado na inicialização
become: true
ansible.builtin.copy: ansible.builtin.copy:
dest: /etc/modules-load.d/k8s.conf dest: /etc/modules-load.d/k8s.conf
content: | content: |