prole/infrastructure/roles/k3s/templates/config.yaml.j2
chrisfu a43aed7134 k3s: eliminate localhost registry + dedupe common-core
- Ensure k3s mode uses the k3s registry endpoint and avoid localhost/k3d image prefixes.

- Make ArgoCD repo-server cmp symlink creation idempotent.

- Normalize common-core provisioning to knoe-system and add repair-time dedupe of stray default-namespace installs.

- Add k3s MariaDB datastore/refresh playbooks and regression tests.
2026-03-05 14:31:33 -08:00

116 lines
3.6 KiB
Django/Jinja

{% set _k3s_server_line_needed = (k3s_role != 'server') or ((k3s_role == 'server') and (not (k3s_cluster_init | bool)) and (k3s_server_url is defined) and k3s_server_url) %}
{% if k3s_role == 'server' and k3s_cluster_init | bool %}
cluster-init: true
{% endif %}
{% if _k3s_server_line_needed %}
server: "{{ k3s_server_url }}"
{% endif %}
{% set _k3s_effective_token = k3s_token %}
{% if k3s_role == 'server' and (k3s_server_token is defined) and k3s_server_token %}
{% set _k3s_effective_token = k3s_server_token %}
{% endif %}
{% if _k3s_effective_token %}
token: "{{ _k3s_effective_token }}"
{% endif %}
{% if k3s_role == 'server' and k3s_datastore_endpoint is defined and k3s_datastore_endpoint | length %}
datastore-endpoint: "{{ k3s_datastore_endpoint }}"
{% if k3s_datastore_cafile is defined and k3s_datastore_cafile | length %}
datastore-cafile: "{{ k3s_datastore_cafile }}"
{% endif %}
{% if k3s_datastore_certfile is defined and k3s_datastore_certfile | length %}
datastore-certfile: "{{ k3s_datastore_certfile }}"
{% endif %}
{% if k3s_datastore_keyfile is defined and k3s_datastore_keyfile | length %}
datastore-keyfile: "{{ k3s_datastore_keyfile }}"
{% endif %}
{% endif %}
{% if k3s_role == 'server' and k3s_write_kubeconfig_mode %}
write-kubeconfig-mode: "{{ k3s_write_kubeconfig_mode }}"
{% endif %}
{% if k3s_role == 'server' and k3s_kubeconfig_group %}
write-kubeconfig-group: "{{ k3s_kubeconfig_group }}"
{% endif %}
{% if k3s_tls_sans | length %}
tls-san:
{% for item in k3s_tls_sans %}
- "{{ item }}"
{% endfor %}
{% endif %}
{% if k3s_role == 'server' and k3s_disable | length %}
disable:
{% for item in k3s_disable %}
- "{{ item }}"
{% endfor %}
{% endif %}
{% if k3s_disable_agent | bool %}
disable-agent: true
{% endif %}
{% if k3s_data_dir is defined and k3s_data_dir %}
data-dir: "{{ k3s_data_dir }}"
{% endif %}
{% if k3s_node_labels | length %}
node-label:
{% for item in k3s_node_labels %}
- "{{ item }}"
{% endfor %}
{% endif %}
{% if k3s_node_taints | length %}
node-taint:
{% for item in k3s_node_taints %}
- "{{ item }}"
{% endfor %}
{% endif %}
{# --- kube-apiserver tuning (request/etcd timeouts) --- #}
{% if k3s_kube_apiserver_args is defined and k3s_kube_apiserver_args | length %}
kube-apiserver-arg:
{% for item in k3s_kube_apiserver_args %}
- "{{ item }}"
{% endfor %}
{% endif %}
{# --- Control-plane leader election tuning (forgiving leases) --- #}
{% if k3s_kube_controller_manager_args is defined and k3s_kube_controller_manager_args | length %}
kube-controller-manager-arg:
{% for item in k3s_kube_controller_manager_args %}
- "{{ item }}"
{% endfor %}
{% endif %}
{% if k3s_kube_scheduler_args is defined and k3s_kube_scheduler_args | length %}
kube-scheduler-arg:
{% for item in k3s_kube_scheduler_args %}
- "{{ item }}"
{% endfor %}
{% endif %}
{% if k3s_cloud_controller_manager_args is defined and k3s_cloud_controller_manager_args | length %}
kube-cloud-controller-manager-arg:
{% for item in k3s_cloud_controller_manager_args %}
- "{{ item }}"
{% endfor %}
{% endif %}
{# --- Embedded etcd tuning (optional) --- #}
{% if k3s_etcd_args is defined and k3s_etcd_args | length %}
etcd-arg:
{% for item in k3s_etcd_args %}
- "{{ item }}"
{% endfor %}
{% endif %}
{# --- kubelet tuning (node housekeeping/heartbeats) --- #}
{% if k3s_kubelet_args is defined and k3s_kubelet_args | length %}
kubelet-arg:
{% for item in k3s_kubelet_args %}
- "{{ item }}"
{% endfor %}
{% endif %}
{% if k3s_node_ip is defined and k3s_node_ip %}
node-ip: "{{ k3s_node_ip }}"
{% endif %}
{% if k3s_flannel_iface is defined and k3s_flannel_iface %}
flannel-iface: "{{ k3s_flannel_iface }}"
{% endif %}