From 40654887e0efde614701c281742c6c0d72c5d778 Mon Sep 17 00:00:00 2001 From: Thedro Neely Date: Sun, 22 Dec 2019 21:25:30 -0500 Subject: roles/k8s: Add kubernetes cluster playbook --- roles/k8s/files/containerd-override.conf | 2 + roles/k8s/files/daemon.json | 8 ++ roles/k8s/files/k8s-dashboard-admin.yaml | 6 ++ roles/k8s/files/k8s-dashboard-binding.yaml | 11 +++ roles/k8s/files/kubelet | 1 + roles/k8s/main.yml | 115 +++++++++++++++++++++++++++++ 6 files changed, 143 insertions(+) create mode 100644 roles/k8s/files/containerd-override.conf create mode 100644 roles/k8s/files/daemon.json create mode 100644 roles/k8s/files/k8s-dashboard-admin.yaml create mode 100644 roles/k8s/files/k8s-dashboard-binding.yaml create mode 100644 roles/k8s/files/kubelet create mode 100644 roles/k8s/main.yml diff --git a/roles/k8s/files/containerd-override.conf b/roles/k8s/files/containerd-override.conf new file mode 100644 index 0000000..76864e2 --- /dev/null +++ b/roles/k8s/files/containerd-override.conf @@ -0,0 +1,2 @@ +[Service] +ExecStartPre= diff --git a/roles/k8s/files/daemon.json b/roles/k8s/files/daemon.json new file mode 100644 index 0000000..5d18abc --- /dev/null +++ b/roles/k8s/files/daemon.json @@ -0,0 +1,8 @@ +{ + "exec-opts": ["native.cgroupdriver=systemd"], + "log-driver": "json-file", + "log-opts": { + "max-size": "100m" + }, + "storage-driver": "overlay2" +} diff --git a/roles/k8s/files/k8s-dashboard-admin.yaml b/roles/k8s/files/k8s-dashboard-admin.yaml new file mode 100644 index 0000000..639a776 --- /dev/null +++ b/roles/k8s/files/k8s-dashboard-admin.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: admin-user + namespace: kubernetes-dashboard + diff --git a/roles/k8s/files/k8s-dashboard-binding.yaml b/roles/k8s/files/k8s-dashboard-binding.yaml new file mode 100644 index 0000000..399839f --- /dev/null +++ b/roles/k8s/files/k8s-dashboard-binding.yaml @@ -0,0 +1,11 @@ +kind: ClusterRoleBinding +metadata: + name: admin-user +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: admin-user + namespace: kubernetes-dashboard diff --git a/roles/k8s/files/kubelet b/roles/k8s/files/kubelet new file mode 100644 index 0000000..8336325 --- /dev/null +++ b/roles/k8s/files/kubelet @@ -0,0 +1 @@ +KUBELET_EXTRA_ARGS='--fail-swap-on=false' diff --git a/roles/k8s/main.yml b/roles/k8s/main.yml new file mode 100644 index 0000000..148df32 --- /dev/null +++ b/roles/k8s/main.yml @@ -0,0 +1,115 @@ +--- +# Target: centos8 +- hosts: k8s + vars: + username: k8s + home_directory: "/home/{{ username }}" + k8s_version: 1.17.0 + tasks: + - name: Ensuring group exists + group: + name: "{{ username }}" + state: present + - name: Creating user and making home directory + user: + system: yes + state: present + name: "{{ username }}" + groups: "{{ username }}" + home: "{{ home_directory }}" + - name: Adding Docker repository + get_url: + url: https://download.docker.com/linux/centos/docker-ce.repo + dest: /etc/yum.repos.d/ + - name: Installing Docker + yum: + state: present + update_cache: yes + name: + - docker-ce-3:18.09.1-3.el7 + - docker-ce-cli-1:18.09.1-3.el7 + - containerd.io-1.2.0-3.el7 + - tc + - name: Creating docker directory + file: + path: /etc/docker + state: directory + mode: '0755' + - name: Copying Docker daemon configuration + copy: + src: daemon.json + dest: /etc/docker/daemon.json + owner: root + group: root + mode: '0644' + register: dockerDaemonConfig + - name: Creating containerd override directory + file: + path: /etc/systemd/system/containerd.service.d/ + state: directory + mode: '0755' + - name: Copying containerd override configuration + copy: + src: containerd-override.conf + dest: /etc/systemd/system/containerd.service.d/override.conf + owner: root + group: root + mode: '0644' + - name: Reloading systemd daemon + systemd: + daemon_reload: yes + - name: Ensuring Docker is enabled and started + systemd: + name: docker + state: started + enabled: yes + - name: Restarting Docker due to daemon config change + systemd: + name: docker + state: restarted + when: dockerDaemonConfig.changed + - name: Adding Kubernetes repository + yum_repository: + name: kubernetes + file: kubernetes + description: Kubernetes Repo + baseurl: https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 + gpgkey: https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg + gpgcheck: yes + - name: Installing kubelet and kubeadm on nodes + yum: + state: present + update_cache: yes + name: + - kubelet-{{ k8s_version }}-0 + - kubeadm-{{ k8s_version }}-0 + +- hosts: k8s_master + vars: + username: k8s + home_directory: "/home/{{ username }}" + k8s_version: 1.17.0 + tasks: + - name: Installing kubectl on master + yum: + state: present + name: + - kubectl-{{ k8s_version }}-0 + - name: Copying kubelet environment file + copy: + src: kubelet + dest: /etc/sysconfig/kubelet + mode: '0644' + - name: Initialize Kubernetes cluster + shell: > + kubeadm init --ignore-preflight-errors all --v=5 > k8s_cluster_initialization.log && + touch .k8s_cluster_initialized + args: + chdir: "{{ home_directory }}" + creates: .k8s_cluster_initialized + register: output + - debug: var=output + - block: + - name: Cloning repository + become: true + become_user: "{{ username }}" \ No newline at end of file -- cgit v1.2.3