Browse Source

temp

pull/7/head
fedy95 4 years ago
parent
commit
14e10d080c
  1. 5
      .drone.yml
  2. 9
      Makefile
  3. 7
      README.md
  4. 15
      inventory/hosts
  5. 31
      playbooks/k8s-dev/init.yml
  6. 6
      roles/common/tasks/main.yml
  7. 2
      roles/docker/tasks/main.yml
  8. 45
      roles/k8s-init-first-master/tasks/main.yml
  9. 5
      roles/k8s-init-machines/tasks/main.yml
  10. 55
      roles/k8s-init-machines/tasks/other.yml
  11. 14
      roles/k8s-init-workers/tasks/main.yml
  12. 7
      roles/k8s-join-workers-to-first-master/tasks/main.yml

5
.drone.yml

@ -9,16 +9,19 @@ steps:
- name: lint yaml - name: lint yaml
image: registry.fedy95.com/baseimage-yamllint:latest image: registry.fedy95.com/baseimage-yamllint:latest
commands: commands:
- yamllint -c /yamllint/relaxed.yaml group_vars/all.yml
- yamllint -c /yamllint/relaxed.yaml playbooks/docker-units/init.yml - yamllint -c /yamllint/relaxed.yaml playbooks/docker-units/init.yml
- yamllint -c /yamllint/relaxed.yaml playbooks/k8s/init.yml - yamllint -c /yamllint/relaxed.yaml playbooks/k8s/init.yml
- yamllint -c /yamllint/relaxed.yaml playbooks/k8s-dev/init.yml
- yamllint -c /yamllint/relaxed.yaml roles/common/tasks/main.yml - yamllint -c /yamllint/relaxed.yaml roles/common/tasks/main.yml
- yamllint -c /yamllint/relaxed.yaml roles/docker/defaults/main.yml - yamllint -c /yamllint/relaxed.yaml roles/docker/defaults/main.yml
- yamllint -c /yamllint/relaxed.yaml roles/docker/handlers/main.yml - yamllint -c /yamllint/relaxed.yaml roles/docker/handlers/main.yml
- yamllint -c /yamllint/relaxed.yaml roles/docker/tasks/main.yml - yamllint -c /yamllint/relaxed.yaml roles/docker/tasks/main.yml
- yamllint -c /yamllint/relaxed.yaml roles/docker-compose/tasks/main.yml - yamllint -c /yamllint/relaxed.yaml roles/docker-compose/tasks/main.yml
- yamllint -c /yamllint/relaxed.yaml roles/docker-compose/vars/main.yml - yamllint -c /yamllint/relaxed.yaml roles/docker-compose/vars/main.yml
- yamllint -c /yamllint/relaxed.yaml roles/k8s-init-first-master/tasks/main.yml
- yamllint -c /yamllint/relaxed.yaml roles/k8s-init-machines/tasks/main.yml - yamllint -c /yamllint/relaxed.yaml roles/k8s-init-machines/tasks/main.yml
- yamllint -c /yamllint/relaxed.yaml roles/k8s-init-workers/tasks/main.yml
- yamllint -c /yamllint/relaxed.yaml roles/k8s-join-workers-to-first-master/tasks/main.yml
- yamllint -c /yamllint/relaxed.yaml .drone.yml - yamllint -c /yamllint/relaxed.yaml .drone.yml
when: when:
event: pull_request event: pull_request

9
Makefile

@ -9,21 +9,25 @@ lint: lint-yaml
LINT-YAML-CMD=docker run --rm -it -v $(PWD):/data ${REGISTRY}/${YAMLLINT_TAG} LINT-YAML-CMD=docker run --rm -it -v $(PWD):/data ${REGISTRY}/${YAMLLINT_TAG}
lint-yaml: lint-yaml:
docker pull ${REGISTRY}/${YAMLLINT_TAG} docker pull ${REGISTRY}/${YAMLLINT_TAG}
$(LINT-YAML-CMD) group_vars/all.yml
$(LINT-YAML-CMD) playbooks/docker-units/init.yml $(LINT-YAML-CMD) playbooks/docker-units/init.yml
$(LINT-YAML-CMD) playbooks/k8s/init.yml $(LINT-YAML-CMD) playbooks/k8s/init.yml
$(LINT-YAML-CMD) playbooks/k8s-dev/init.yml
$(LINT-YAML-CMD) roles/common/tasks/main.yml $(LINT-YAML-CMD) roles/common/tasks/main.yml
$(LINT-YAML-CMD) roles/docker/defaults/main.yml $(LINT-YAML-CMD) roles/docker/defaults/main.yml
$(LINT-YAML-CMD) roles/docker/handlers/main.yml $(LINT-YAML-CMD) roles/docker/handlers/main.yml
$(LINT-YAML-CMD) roles/docker/tasks/main.yml $(LINT-YAML-CMD) roles/docker/tasks/main.yml
$(LINT-YAML-CMD) roles/docker-compose/tasks/main.yml $(LINT-YAML-CMD) roles/docker-compose/tasks/main.yml
$(LINT-YAML-CMD) roles/docker-compose/vars/main.yml $(LINT-YAML-CMD) roles/docker-compose/vars/main.yml
$(LINT-YAML-CMD) roles/k8s-init-first-master/tasks/main.yml
$(LINT-YAML-CMD) roles/k8s-init-machines/tasks/main.yml $(LINT-YAML-CMD) roles/k8s-init-machines/tasks/main.yml
$(LINT-YAML-CMD) roles/k8s-init-workers/tasks/main.yml
$(LINT-YAML-CMD) roles/k8s-join-workers-to-first-master/tasks/main.yml
$(LINT-YAML-CMD) .drone.yml $(LINT-YAML-CMD) .drone.yml
check-playbooks-syntax: check-playbooks-syntax:
ansible-playbook playbooks/docker-units/init.yml -i inventory/hosts --syntax-check ansible-playbook playbooks/docker-units/init.yml -i inventory/hosts --syntax-check
ansible-playbook playbooks/k8s/init.yml -i inventory/hosts --syntax-check ansible-playbook playbooks/k8s/init.yml -i inventory/hosts --syntax-check
ansible-playbook playbooks/k8s-dev/init.yml -i inventory/hosts --syntax-check
docker-units-init: docker-units-init:
ansible-playbook playbooks/docker-units/init.yml -i inventory/hosts --ask-become-pass ansible-playbook playbooks/docker-units/init.yml -i inventory/hosts --ask-become-pass
@ -31,6 +35,9 @@ docker-units-init:
k8s-units-init: k8s-units-init:
ansible-playbook playbooks/k8s/init.yml -i inventory/hosts --ask-become-pass ansible-playbook playbooks/k8s/init.yml -i inventory/hosts --ask-become-pass
k8s-dev-units-init:
ansible-playbook playbooks/k8s-dev/init.yml -i inventory/hosts --ask-become-pass
ping: ping:
ansible -i inventory/hosts all -m ping ansible -i inventory/hosts all -m ping

7
README.md

@ -6,6 +6,11 @@
- [ansible](https://www.ansible.com/) - [ansible](https://www.ansible.com/)
- https://github.com/IBM/ansible-kubernetes-ha-cluster - https://github.com/IBM/ansible-kubernetes-ha-cluster
- https://www.linuxsysadmins.com/install-kubernetes-cluster-with-ansible/ - https://www.linuxsysadmins.com/install-kubernetes-cluster-with-ansible/
- https://www.youtube.com/watch?v=l7gC4SgW7DU
### how to run ### how to run
- see Makefile - see Makefile
Creating User Account
Install Kubernetes & Docker Packages.
Setting up Kubernetes Master Server
Setting Up Worker Nodes

15
inventory/hosts

@ -1,3 +1,18 @@
[k8s-dev:children]
k8s-dev-master
k8s-dev-worker
[k8s-dev-master-first]
k8s-dev-master-01 ansible_host=192.168.1.200
[k8s-dev-master]
k8s-dev-master-01 ansible_host=192.168.1.200
k8s-dev-master-02 ansible_host=192.168.1.201
[k8s-dev-worker]
k8s-dev-worker-01 ansible_host=192.168.1.202
k8s-dev-worker-02 ansible_host=192.168.1.203
[k8s:children] [k8s:children]
k8s-master k8s-master
k8s-worker k8s-worker

31
playbooks/k8s-dev/init.yml

@ -0,0 +1,31 @@
---
- name: k8s-units playbook
hosts: k8s-dev
become: true
roles:
- common
- docker
- k8s-init-machines
- name: k8s-units playbook 2
hosts: k8s-dev-master-first
become: true
vars_prompt:
- name: "k8s_master_ip"
prompt: "Enter the Apiserver advertise address, example: 192.168.1.200"
private: no
roles:
- k8s-init-first-master
- name: k8s-units playbook 3
hosts: k8s-dev-worker
become: true
roles:
- k8s-init-workers
- name: k8s-units playbook 4
hosts: k8s-dev-master-first
become: true
roles:
- k8s-join-workers-to-first-master
...

6
roles/common/tasks/main.yml

@ -21,7 +21,11 @@
state: latest state: latest
update_cache: yes update_cache: yes
cache_valid_time: "{{ aptcachetime }}" cache_valid_time: "{{ aptcachetime }}"
loop: [ 'git', 'make', 'nano', 'net-tools' ]
loop:
- 'git'
- 'make'
- 'nano'
- 'net-tools'
- name: Upgrade installed packages - name: Upgrade installed packages
apt: upgrade=yes apt: upgrade=yes

2
roles/docker/tasks/main.yml

@ -45,7 +45,7 @@
name: "{{ item }}" name: "{{ item }}"
groups: docker groups: docker
append: true append: true
with_items: "{{ ansible_env.USER }}"
with_items: "fedy95"
- name: "Ensure Docker is {{ docker.start | ternary('started','stopped') }}" - name: "Ensure Docker is {{ docker.start | ternary('started','stopped') }}"
service: name=docker state={{ docker.start | ternary('restarted','stopped') }} enabled={{ docker.service_enabled }} service: name=docker state={{ docker.start | ternary('restarted','stopped') }} enabled={{ docker.service_enabled }}

45
roles/k8s-init-first-master/tasks/main.yml

@ -0,0 +1,45 @@
---
#- name: Intilizing Kubernetes Cluster
# command: kubeadm init --pod-network-cidr 192.168.0.0/16 --apiserver-advertise-address "{{ k8s_master_ip }}"
# run_once: true
# delegate_to: "{{ k8s_master_ip }}"
- name: Create directory for kube config.
file:
path: /home/fedy95/.kube
state: directory
owner: "fedy95"
group: "fedy95"
mode: 0755
- name: Copy /etc/kubernetes/admin.conf to user home directory /home/fedy95/.kube/config.
copy:
src: /etc/kubernetes/admin.conf
dest: /home/fedy95/.kube/config
remote_src: yes
owner: "fedy95"
group: "fedy95"
mode: '0644'
- name: Remove the cache directory.
file:
path: /home/fedy95/.kube/cache
state: absent
- name: Create Pod Network & RBAC.
command: "{{ item }}"
with_items:
- kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
- kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml
- name: Get the token for joining the nodes with Kuberentes master.
shell: kubeadm token create --print-join-command
register: kubernetes_join_command
- debug:
msg: "{{ kubernetes_join_command.stdout }}"
- name: Copy join command to local file.
become: false
local_action: copy content="{{ kubernetes_join_command.stdout_lines[0] }}" dest="/tmp/kubernetes_join_command" mode=0777
...

5
roles/k8s-init-machines/tasks/main.yml

@ -26,7 +26,10 @@
name: "{{ item }}" name: "{{ item }}"
state: present state: present
cache_valid_time: "{{ aptcachetime }}" cache_valid_time: "{{ aptcachetime }}"
loop: [ 'kubeadm', 'kubectl', 'kubelet' ]
loop:
- 'kubeadm'
- 'kubectl'
- 'kubelet'
- name: Enable service kubelet persistently - name: Enable service kubelet persistently
service: service:

55
roles/k8s-init-machines/tasks/other.yml

@ -1,55 +0,0 @@
- hosts: k8s-master
become: yes
tasks:
- name: install kubectl
apt:
name: kubectl={{ kube_version }}
state: present
force: yes
- name: initialize the cluster
shell: kubeadm init --pod-network-cidr=10.244.0.0/16 >> cluster_initialized.txt
args:
chdir: $HOME
creates: cluster_initialized.txt
- name: create .kube directory
file:
path: $HOME/.kube
state: directory
mode: 0755
- name: copy admin.conf to user's kube config
copy:
src: /etc/kubernetes/admin.conf
dest: $HOME/.kube/config
remote_src: yes
owner: fedy95
- name: install Pod network
shell: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml >> pod_network_setup.txt
args:
chdir: $HOME
creates: pod_network_setup.txt
- hosts: k8s-master
become: yes
gather_facts: false
tasks:
- name: get join command
shell: kubeadm token create --print-join-command
register: join_command_raw
- name: set join command
set_fact:
join_command: "{{ join_command_raw.stdout_lines[0] }}"
- hosts: k8s-workers
become: yes
tasks:
- name: join cluster
shell: "{{ hostvars['master'].join_command }} >> node_joined.txt"
args:
chdir: $HOME
creates: node_joined.txt

14
roles/k8s-init-workers/tasks/main.yml

@ -0,0 +1,14 @@
---
- name: Copy join command to worker nodes.
copy:
src: /tmp/kubernetes_join_command
dest: /tmp/kubernetes_join_command
mode: 0777
- name: Join the Worker nodes with master.
command: sh /tmp/kubernetes_join_command
register: joined_or_not
- debug:
msg: "{{ joined_or_not.stdout }}"
...

7
roles/k8s-join-workers-to-first-master/tasks/main.yml

@ -0,0 +1,7 @@
---
- name: Configure kubectl command auto completion.
lineinfile:
dest: /home/fedy95/.bashrc
line: 'source <(kubectl completion bash)'
insertafter: EOF
...