working on configuring a k3s cluster
This commit is contained in:
10
ansible-5/roles/k0s/defaults/main.yml
Normal file
10
ansible-5/roles/k0s/defaults/main.yml
Normal 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"
|
||||
40
ansible-5/roles/k0s/tasks/dir_config.yml
Normal file
40
ansible-5/roles/k0s/tasks/dir_config.yml
Normal 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
|
||||
22
ansible-5/roles/k0s/tasks/download.yml
Normal file
22
ansible-5/roles/k0s/tasks/download.yml
Normal 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")
|
||||
90
ansible-5/roles/k0s/tasks/initial_controller.yml
Normal file
90
ansible-5/roles/k0s/tasks/initial_controller.yml
Normal 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"
|
||||
6
ansible-5/roles/k0s/tasks/main.yml
Normal file
6
ansible-5/roles/k0s/tasks/main.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
#main install of k0s
|
||||
|
||||
- include_tasks: download.yml
|
||||
- include_tasks: dir_config.yml
|
||||
|
||||
76
ansible-5/roles/k0s/templates/k0s.yaml.j2
Normal file
76
ansible-5/roles/k0s/templates/k0s.yaml.j2
Normal 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
|
||||
Reference in New Issue
Block a user