working on configuring a k3s cluster

This commit is contained in:
2022-08-02 09:42:08 -04:00
parent 31ed336880
commit 3a0f4a84b1
23 changed files with 562 additions and 37 deletions

View File

@@ -0,0 +1,10 @@
---
k0s_version: v1.22.4+k0s.1
k0s_binary_dest: /usr/local/bin/k0s
k0s_config_dir: /etc/k0s
k0s_data_dir: /var/lib/k0s
k0s_libexec_dir: /usr/libexec/k0s/
k0s_use_custom_config: false
artifacts_dir: "{{ inventory_dir }}/artifacts"

View File

@@ -0,0 +1,40 @@
---
- name: Create k0s Directories
become: true
file:
path: "{{ item }}"
state: directory
mode: 0755
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
loop:
- "{{ k0s_config_dir }}"
- "{{ k0s_data_dir }}"
- "{{ k0s_libexec_dir }}"
- name: Write the custom k0s config file
template:
src: k0s.yaml.j2
dest: "{{ k0s_config_dir }}/k0s.yaml"
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
mode: 0600
when: k0s_use_custom_config
- name: Generate default k0s config file
become: true
block:
- name: Create default k0s config
register: default_k0s_config
command: k0s default-config > {{ k0s_config_dir }}/k0s.yaml
- name: Store default k0f config
copy:
dest: "{{ k0s_config_dir }}/k0s.yaml"
content: "{{ default_k0s_config.stdout }}"
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
mode: 0600
when: not k0s_use_custom_config

View File

@@ -0,0 +1,22 @@
---
- name: Download k0s binary k0s-{{ k0s_version }}-amd64
get_url:
url: https://github.com/k0sproject/k0s/releases/download/{{ k0s_version }}/k0s-{{ k0s_version }}-amd64
dest: "{{ k0s_binary_dest }}"
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
mode: 0755
when: ansible_facts.architecture == "x86_64"
- name: Download k0s binary k0s-{{ k0s_version }}-arm64
get_url:
url: https://github.com/k0sproject/k0s/releases/download/{{ k0s_version }}/k0s-{{ k0s_version }}-arm64
dest: "{{ k0s_binary_dest }}"
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
mode: 0755
when:
- ( ansible_facts.architecture is search("arm") and
ansible_facts.userspace_bits == "64" ) or
ansible_facts.architecture is search("aarch64")

View File

@@ -0,0 +1,90 @@
---
- name: Create k0s initial controller service with install command
register: install_initial_controller_cmd
command: k0s install controller --config {{ k0s_config_dir }}/k0s.yaml {{ extra_args | default(omit) }}
changed_when: install_initial_controller_cmd | length > 0
- name: Setup custom environment variables for systemd unit
include_role:
name: env_setup
- name: Enable and check k0s service
systemd:
name: k0scontroller
daemon_reload: yes
state: restarted
enabled: yes
- name: Wait for k8s apiserver
wait_for:
host: localhost
port: 6443
delay: 15
timeout: 180
- name: Create worker join token
register: worker_join_token
command: k0s token create --role worker --config {{ k0s_config_dir }}/k0s.yaml
changed_when: worker_join_token | length > 0
- name: Store worker join token
set_fact:
join_token_worker: "{{ worker_join_token.stdout }}"
cacheable: yes
- name: Add k0s worker token to dummy host
add_host:
name: "worker_token_holder"
token: "{{ worker_join_token.stdout }}"
- name: Print worker token
debug:
msg: "k0s worker join token is: {{ worker_join_token.stdout }}"
- name: Create controller join token
register: controller_join_token
command: k0s token create --role controller --config {{ k0s_config_dir }}/k0s.yaml
changed_when: controller_join_token | length > 0
- name: Store controller join token
set_fact:
join_token_controller: "{{ controller_join_token.stdout }}"
cacheable: yes
- name: Add k0s controller token to dummy host
add_host:
name: "controller_token_holder"
token: "{{ controller_join_token.stdout }}"
- name: Print controller token
debug:
msg: "k0s controller join token is: {{ controller_join_token.stdout }}"
- name: Copy config file to user home directory
copy:
src: "{{ k0s_data_dir }}/pki/admin.conf"
dest: ~{{ ansible_user }}/k0s-kubeconfig.yml
remote_src: yes
owner: "{{ ansible_user }}"
mode: 0644
- name: Set controller IP in kubeconfig
replace:
path: ~{{ ansible_user }}/k0s-kubeconfig.yml
regexp: 'localhost'
replace: "{{ ansible_host }}"
- name: Copy kubeconfig
fetch:
src: "~{{ ansible_user }}/k0s-kubeconfig.yml"
dest: "{{ artifacts_dir }}/k0s-kubeconfig.yml"
flat: yes
validate_checksum: no
become: no
- name: "print kubeconfig command"
debug:
msg: "To use Cluster: export KUBECONFIG={{ artifacts_dir }}/k0s-kubeconfig.yml"

View File

@@ -0,0 +1,6 @@
---
#main install of k0s
- include_tasks: download.yml
- include_tasks: dir_config.yml

View File

@@ -0,0 +1,76 @@
apiVersion: k0s.k0sproject.io/v1beta1
kind: ClusterConfig
metadata:
creationTimestamp: null
name: k0s
spec:
api:
address: 192.168.4.15
k0sApiPort: 9443
port: 6443
sans:
- 192.168.4.15
controllerManager: {}
images:
calico:
cni:
image: docker.io/calico/cni
version: v3.18.1
kubecontrollers:
image: docker.io/calico/kube-controllers
version: v3.18.1
node:
image: docker.io/calico/node
version: v3.18.1
coredns:
image: k8s.gcr.io/coredns/coredns
version: v1.7.0
default_pull_policy: IfNotPresent
konnectivity:
image: k8s.gcr.io/kas-network-proxy/proxy-agent
version: v0.0.25
kubeproxy:
image: k8s.gcr.io/kube-proxy
version: v1.22.4
kuberouter:
cni:
image: docker.io/cloudnativelabs/kube-router
version: v1.3.2
cniInstaller:
image: quay.io/k0sproject/cni-node
version: 0.1.0
metricsserver:
image: k8s.gcr.io/metrics-server/metrics-server
version: v0.5.0
installConfig:
users:
etcdUser: etcd
kineUser: kube-apiserver
konnectivityUser: konnectivity-server
kubeAPIserverUser: kube-apiserver
kubeSchedulerUser: kube-scheduler
konnectivity:
adminPort: 8133
agentPort: 8132
network:
calico: null
dualStack: {}
kubeProxy:
mode: iptables
kuberouter:
autoMTU: true
mtu: 0
peerRouterASNs: ""
peerRouterIPs: ""
podCIDR: 10.244.0.0/16
provider: kuberouter
serviceCIDR: 10.96.0.0/12
podSecurityPolicy:
defaultPolicy: 00-k0s-privileged
scheduler: {}
storage:
etcd:
peerAddress: 192.168.4.15
type: etcd
telemetry:
enabled: true