-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
13 changed files
with
324 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
from package.generate_conf import setup_configurations, get_inventory_path, merge_and_delete_ini_files | ||
from package.execute_command import run_ansible_playbook | ||
|
||
default_dir = 'playbook' | ||
project_id = 'project-id' | ||
region = 'asia-east1' | ||
|
||
group_vars = { | ||
'project_id' : project_id, | ||
'region' : region, | ||
} | ||
|
||
master_inventory_vars = { | ||
'group' : 'k8s_master', | ||
'hosts' : | ||
[ | ||
{"hostname": "master", "IP": "10.140.0.28", "zone": "asia-east1-b"}, | ||
] | ||
} | ||
|
||
slave_inventory_vars = { | ||
'group' : 'k8s_slave', | ||
'hosts' : | ||
[ | ||
{"hostname": "slave1", "IP": "10.140.0.29", "zone": "asia-east1-b"}, | ||
{"hostname": "slave2", "IP": "10.140.0.30", "zone": "asia-east1-b"}, | ||
] | ||
} | ||
|
||
instance_vars = { | ||
'machine_type' : 'e2-medium', | ||
'boot_disk_size' : '20', | ||
'boot_disk_type' : 'pd-standard', | ||
'scopes' : 'default', | ||
'subnet' : 'projects/project-id/regions/asia-east1/subnetworks/asia-east1', | ||
'labels': { | ||
'env': 'dev', | ||
}, | ||
'tags': ['dev', 'test'], | ||
} | ||
|
||
k8s_vars = { | ||
'pod_cidr' : '10.244.0.0/16', | ||
} | ||
|
||
monitor_vars = { | ||
'enabled_node_exporter': 'true', | ||
} | ||
|
||
configurations = { | ||
'group_vars' : (group_vars, 'group_vars/all/env.j2', 'group_vars/all/env.yml'), | ||
'master_inventory' : (master_inventory_vars, 'inventory/inventory.j2', 'inventory/master_inventory.yml'), | ||
'slave_inventory' : (slave_inventory_vars, 'inventory/inventory.j2', 'inventory/slave_inventory.yml'), | ||
'k8s' : (k8s_vars, 'vars/k8s/k8s_var.j2', 'vars/k8s/vars.yml'), | ||
'instance' : (instance_vars, 'vars/instance/instance_var.j2', 'vars/instance/vars.yml'), | ||
'monitor' : (monitor_vars, 'vars/monitor/monitor_var.j2', 'vars/monitor/vars.yml') | ||
} | ||
|
||
setup_configurations(configurations) | ||
inventory_list = ['master_inventory','slave_inventory'] | ||
file_list = [configurations[config][2] for config in inventory_list] | ||
inventory_path = f'{default_dir}/inventory/inventory.yml' | ||
merge_and_delete_ini_files(file_list, inventory_path) | ||
|
||
master_playbook_path = f'{default_dir}/create_k8s_master_gce.yml' | ||
slave_playbook_path = f'{default_dir}/create_k8s_slave_gce.yml' | ||
run_ansible_playbook(inventory_path, master_playbook_path) | ||
run_ansible_playbook(inventory_path, slave_playbook_path) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
--- | ||
- name: Create instances | ||
hosts: k8s_master | ||
gather_facts: no | ||
connection: local | ||
vars_files: | ||
- vars/instance/vars.yml | ||
tasks: | ||
- include_tasks: roles/instance/tasks/create.yml | ||
run_once: true | ||
|
||
- name: Setup instances | ||
hosts: k8s_master | ||
become: yes | ||
become_user: root | ||
gather_facts: no | ||
tasks: | ||
- include_tasks: roles/instance/tasks/setup.yml | ||
|
||
- name: Install k8s_master | ||
hosts: k8s_master | ||
become: yes | ||
become_user: root | ||
gather_facts: no | ||
vars_files: | ||
- vars/k8s/vars.yml | ||
tasks: | ||
- include_tasks: roles/k8s/tasks/main.yml | ||
|
||
- name: Install Monitor | ||
hosts: k8s_master | ||
become: yes | ||
become_user: root | ||
gather_facts: no | ||
vars_files: | ||
- vars/monitor/vars.yml | ||
tasks: | ||
- include_tasks: roles/monitor/tasks/main.yml | ||
|
||
- name: Install Google Ops Agent | ||
hosts: k8s_master | ||
become: yes | ||
become_user: root | ||
gather_facts: no | ||
tasks: | ||
- include_tasks: roles/ops_agent/tasks/main.yml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
--- | ||
- name: Create instances | ||
hosts: k8s_slave | ||
gather_facts: no | ||
connection: local | ||
vars_files: | ||
- vars/instance/vars.yml | ||
tasks: | ||
- include_tasks: roles/instance/tasks/create.yml | ||
run_once: true | ||
|
||
- name: Setup instances | ||
hosts: k8s_slave | ||
become: yes | ||
become_user: root | ||
gather_facts: no | ||
tasks: | ||
- include_tasks: roles/instance/tasks/setup.yml | ||
|
||
- name: Install k8s_slave | ||
hosts: k8s_slave | ||
become: yes | ||
become_user: root | ||
gather_facts: no | ||
vars_files: | ||
- vars/k8s/token | ||
tasks: | ||
- include_tasks: roles/k8s/tasks/main.yml | ||
|
||
- name: Install Monitor | ||
hosts: k8s_slave | ||
become: yes | ||
become_user: root | ||
gather_facts: no | ||
vars_files: | ||
- vars/monitor/vars.yml | ||
tasks: | ||
- include_tasks: roles/monitor/tasks/main.yml | ||
|
||
- name: Install Google Ops Agent | ||
hosts: k8s_slave | ||
become: yes | ||
become_user: root | ||
gather_facts: no | ||
tasks: | ||
- include_tasks: roles/ops_agent/tasks/main.yml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
overlay | ||
br_netfilter |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
{ | ||
"exec-opts": ["native.cgroupdriver=systemd"], | ||
"log-driver": "json-file", | ||
"log-opts": { | ||
"max-size": "100m" | ||
}, | ||
"storage-driver": "overlay2" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
net.bridge.bridge-nf-call-ip6tables = 1 | ||
net.bridge.bridge-nf-call-iptables = 1 | ||
net.ipv4.ip_forward = 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
[kubernetes] | ||
name=Kubernetes | ||
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/ | ||
enabled=1 | ||
gpgcheck=1 | ||
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key | ||
exclude=kubelet kubeadm kubectl |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
--- | ||
# tasks file for k8s | ||
- name: Copy kubernetes.repo | ||
copy: | ||
src: "{{ playbook_dir }}/files/k8s/kubernetes.repo" | ||
dest: /etc/yum.repos.d/kubernetes.repo | ||
owner: root | ||
group: root | ||
mode: '0644' | ||
|
||
- name: Clean YUM cache and update cache | ||
shell: | | ||
sudo yum clean all && sudo yum -y makecache | ||
- name: "Installing Kubeadm, Kubelet, and Kubectl" | ||
yum: | ||
name: [ 'kubectl', 'kubeadm', 'kubelet' ] | ||
state: present | ||
disable_excludes: kubernetes | ||
|
||
- name: Disable swap | ||
shell: | | ||
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab | ||
sudo swapoff -a | ||
- name: Configure persistent loading of modules | ||
copy: | ||
src: "{{ playbook_dir }}/files/k8s/containerd.conf" | ||
dest: /etc/modules-load.d/containerd.conf | ||
owner: root | ||
group: root | ||
mode: '0644' | ||
|
||
- name: Ensure overlay is enabled. | ||
modprobe: | ||
name: overlay | ||
state: present | ||
|
||
- name: Ensure br_netfilter is enabled. | ||
modprobe: | ||
name: br_netfilter | ||
state: present | ||
|
||
- name: Copy kubernetes.conf | ||
copy: | ||
src: "{{ playbook_dir }}/files/k8s/kubernetes.conf" | ||
dest: /etc/sysctl.d/kubernetes.conf | ||
owner: root | ||
group: root | ||
mode: '0644' | ||
|
||
- name: Apply sysctl changes | ||
shell: | | ||
sudo sysctl --system | ||
- name: Install Docker dependencies | ||
yum: | ||
name: | ||
- yum-utils | ||
- device-mapper-persistent-data | ||
- lvm2 | ||
state: present | ||
|
||
- name: Add Docker repository | ||
shell: | | ||
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | ||
- name: Install containerd | ||
yum: | ||
name: containerd | ||
state: present | ||
update_cache: yes | ||
|
||
- name: Configure containerd | ||
shell: | | ||
sudo mkdir -p /etc/containerd | ||
sudo containerd config default > /etc/containerd/config.toml | ||
- name: Restart containerd | ||
service: | ||
name: containerd | ||
state: restarted | ||
enabled: yes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
--- | ||
- name: Install k8s | ||
include: install_k8s.yml | ||
|
||
- name: Set up k8s init master | ||
include: setup_k8s_master.yml | ||
when: | ||
- inventory_hostname in groups["k8s_master"] | ||
|
||
- name: Set up k8s slave | ||
include: setup_k8s_slave.yml | ||
when: | ||
- inventory_hostname in groups["k8s_slave"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
--- | ||
# tasks file for kube_master | ||
- name: Start kubelet | ||
systemd: | ||
name: kubelet | ||
enabled: yes | ||
|
||
- name: Pull kubeadm images | ||
shell: sudo kubeadm config images pull | ||
|
||
- name: Initial kubernetes | ||
shell: | | ||
sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --cri-socket /run/containerd/containerd.sock | ||
- name: Copy kubernetes admin config to user home directory | ||
shell: | | ||
mkdir -p $HOME/.kube | ||
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config | ||
sudo chown $(id -u):$(id -g) $HOME/.kube/config | ||
- name: Create Calico resources | ||
command: kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml | ||
register: result | ||
|
||
- name: Create custom resources | ||
command: kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/custom-resources.yaml | ||
register: result | ||
|
||
- name: Get token | ||
shell: | | ||
declare token | ||
token=$(kubeadm token create --print-join-command) | ||
echo token: $token > /tmp/token | ||
- name: Transfer token from master to local | ||
fetch: src=/tmp/token dest={{ playbook_dir }}/vars/k8s/token flat=yes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
--- | ||
# tasks file for kube_slave | ||
- name: Start kubelet | ||
systemd: | ||
name: kubelet | ||
enabled: yes | ||
|
||
- name: "Joining the cluster" | ||
shell: "{{ token }}" | ||
ignore_errors: True |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
pod_cidr_network: {{ pod_cidr }} |