feat: update kube-vip ansible playbook for k0s and k3s - ipv6 config changes (#1234)

* feat: update kube-vip ansible playbook for k0s and k3s

Signed-off-by: Devin Buhl <devin@buhl.casa>

* fix: update renovate

Signed-off-by: Devin Buhl <devin@buhl.casa>

* fix: move ipv6 to advanced options

Signed-off-by: Devin Buhl <devin@buhl.casa>

* feat: kube-vip manifests to partials

Signed-off-by: Devin Buhl <devin@buhl.casa>

* feat: kube vip samesies

Signed-off-by: Devin Buhl <devin@buhl.casa>

* fix: update config sample

Signed-off-by: Devin Buhl <devin@buhl.casa>

---------

Signed-off-by: Devin Buhl <devin@buhl.casa>
This commit is contained in:
Devin Buhl authored and GitHub committed 2024-01-22 15:28:21 -05:00
1 parent 6557c255d6
commit afbf097dac
61 files changed
+244 -307

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
---
creation_rules:
#% if bootstrap_distribution == "talos" %#
#% if bootstrap_distribution in ['talos'] %#
- # IMPORTANT: This rule MUST be above the others
path_regex: talos/.*\.sops\.ya?ml
key_groups:
+1 -1
View File
@@ -1,4 +1,4 @@
#% if bootstrap_distribution in ['k3s', 'k0s'] %#
#% if bootstrap_distribution in ['k0s', 'k3s'] %#
skip_list:
- yaml[commas]
- yaml[line-length]
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
# https://github.com/PyratLabs/ansible-role-k3s
# renovate: datasource=github-releases depName=k3s-io/k3s
@@ -10,10 +10,7 @@ k3s_use_unsupported_config: true
k3s_registration_address: "#{ bootstrap_kube_api_addr }#"
# /var/lib/rancher/k3s/server/manifests
k3s_server_manifests_templates:
- custom-cilium-helmchart.yaml.j2
- kube-vip-ds.yaml.j2
# /var/lib/rancher/k3s/server/manifests
k3s_server_manifests_urls:
- url: https://kube-vip.io/manifests/rbac.yaml
filename: kube-vip-rbac.yaml
- custom-cilium-helmchart.yaml
- kube-vip-ds.yaml
- kube-vip-rbac.yaml
#% endif %#
@@ -1,10 +1,10 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
# https://rancher.com/docs/k3s/latest/en/installation/install-options/server-config/
# https://github.com/PyratLabs/ansible-role-k3s
k3s_control_node: true
k3s_server:
#% if bootstrap_ipv6_enabled %#
#% if bootstrap_advanced_flags.dual_stack_ipv4_first|default(false) %#
node-ip: "{{ ansible_host }},{{ ansible_default_ipv6.address }}"
#% else %#
node-ip: "{{ ansible_host }}"
@@ -23,7 +23,7 @@ k3s_server:
write-kubeconfig-mode: "644"
pause-image: registry.k8s.io/pause:3.9
secrets-encryption: true
#% if bootstrap_ipv6_enabled %#
#% if bootstrap_advanced_flags.dual_stack_ipv4_first|default(false) %#
cluster-cidr: "#{ bootstrap_cluster_cidr.split(',')[0] }#,#{ bootstrap_cluster_cidr.split(',')[1] }#"
service-cidr: "#{ bootstrap_service_cidr.split(',')[0] }#,#{ bootstrap_service_cidr.split(',')[1] }#"
#% else %#
@@ -1,10 +1,10 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
# https://rancher.com/docs/k3s/latest/en/installation/install-options/agent-config/
# https://github.com/PyratLabs/ansible-role-k3s
k3s_control_node: false
k3s_agent:
#% if bootstrap_ipv6_enabled %#
#% if bootstrap_advanced_flags.dual_stack_ipv4_first|default(false) %#
node-ip: "{{ ansible_host }},{{ ansible_default_ipv6.address }}"
#% else %#
node-ip: "{{ ansible_host }}"
@@ -1,4 +1,4 @@
#% if bootstrap_distribution in ['k3s', 'k0s'] %#
#% if bootstrap_distribution in ['k0s', 'k3s'] %#
---
kubernetes:
children:
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
- name: Cluster Installation
hosts: kubernetes
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k0s', 'k3s'] %#
---
- name: Cluster kube-vip
hosts: master
@@ -11,16 +11,21 @@
ansible.builtin.pause:
seconds: 5
tasks:
#% if bootstrap_distribution in ['k3s'] %#
- name: Ensure Kubernetes is running
ansible.builtin.include_role:
name: xanmanning.k3s
public: true
vars:
k3s_state: started
#% endif %#
- name: Upgrade kube-vip
ansible.builtin.template:
src: templates/kube-vip-static-pod.yaml.j2
dest: "{{ k3s_server_pod_manifests_dir }}/kube-vip-static-pod.yaml"
src: templates/kube-vip-ds.yaml.j2
#% if bootstrap_distribution in ['k3s'] %#
dest: "{{ k3s_server_manifests_dir }}/kube-vip-ds.yaml"
#% elif bootstrap_distribution in ['k0s'] %#
dest: "/var/lib/k0s/manifests/kube-vip/ds.yaml"
#% endif %#
mode: preserve
#% endif %#
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
- name: Cluster Nuke
hosts: kubernetes
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
- name: Prepare System
hosts: kubernetes
@@ -1,4 +1,4 @@
#% if bootstrap_distribution in ['k3s', 'k0s'] %#
#% if bootstrap_distribution in ['k0s', 'k3s'] %#
---
- name: Reboot
hosts: kubernetes
@@ -1,4 +1,4 @@
#% if bootstrap_distribution in ['k3s', 'k0s'] %#
#% if bootstrap_distribution in ['k0s', 'k3s'] %#
---
# https://github.com/kevincoakley/ansible-role-k8s-rolling-update
- name: Cluster rollout update
@@ -13,9 +13,9 @@
seconds: 5
tasks:
- name: Details
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
ansible.builtin.command: "k3s kubectl get node {{ inventory_hostname }} -o json"
#% elif bootstrap_distribution == 'k0s' %#
#% elif bootstrap_distribution in ['k0s'] %#
ansible.builtin.command: "k0s kubectl get node {{ inventory_hostname }} -o json"
#% endif %#
register: kubectl_get_node
@@ -33,9 +33,9 @@
- name: Cordon
kubernetes.core.k8s_drain:
name: "{{ inventory_hostname }}"
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
kubeconfig: /etc/rancher/k3s/k3s.yaml
#% elif bootstrap_distribution == 'k0s' %#
#% elif bootstrap_distribution in ['k0s'] %#
kubeconfig: /var/lib/k0s/pki/admin.conf
#% endif %#
state: cordon
@@ -44,9 +44,9 @@
- name: Drain
kubernetes.core.k8s_drain:
name: "{{ inventory_hostname }}"
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
kubeconfig: /etc/rancher/k3s/k3s.yaml
#% elif bootstrap_distribution == 'k0s' %#
#% elif bootstrap_distribution in ['k0s'] %#
kubeconfig: /var/lib/k0s/pki/admin.conf
#% endif %#
state: drain
@@ -80,9 +80,9 @@
- name: Uncordon
kubernetes.core.k8s_drain:
name: "{{ inventory_hostname }}"
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
kubeconfig: /etc/rancher/k3s/k3s.yaml
#% elif bootstrap_distribution == 'k0s' %#
#% elif bootstrap_distribution in ['k0s'] %#
kubeconfig: /var/lib/k0s/pki/admin.conf
#% endif %#
state: uncordon
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
- name: Cilium
block:
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
# https://github.com/k3s-io/k3s/issues/1971
- name: Cruft
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
- name: Get absolute path to this Git repository # noqa: command-instead-of-module
ansible.builtin.command: git rev-parse --show-toplevel
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
# https://docs.k3s.io/helm
apiVersion: helm.cattle.io/v1
@@ -9,7 +9,7 @@ metadata:
spec:
repo: https://helm.cilium.io/
chart: cilium
# renovate: datasource=github-releases depName=cilium/cilium
# renovate: datasource=helm depName=cilium repository=https://helm.cilium.io
version: "1.14.5"
targetNamespace: kube-system
bootstrap: true
@@ -1,77 +1,4 @@
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-vip
namespace: kube-system
labels:
app.kubernetes.io/name: kube-vip
spec:
selector:
matchLabels:
app.kubernetes.io/name: kube-vip
template:
metadata:
labels:
app.kubernetes.io/name: kube-vip
spec:
containers:
- name: kube-vip
image: ghcr.io/kube-vip/kube-vip:v0.6.4
imagePullPolicy: IfNotPresent
args: ["manager"]
env:
- name: address
value: "#{ bootstrap_kube_api_addr }#"
- name: vip_arp
value: "true"
- name: lb_enable
value: "true"
- name: port
value: "6443"
- name: vip_cidr
value: "32"
- name: cp_enable
value: "true"
- name: cp_namespace
value: kube-system
- name: vip_ddns
value: "false"
- name: svc_enable
value: "false"
- name: vip_leaderelection
value: "true"
- name: vip_leaseduration
value: "15"
- name: vip_renewdeadline
value: "10"
- name: vip_retryperiod
value: "2"
- name: prometheus_server
value: :2112
securityContext:
capabilities:
add: ["NET_ADMIN", "NET_RAW", "SYS_TIME"]
hostAliases:
- hostnames:
- kubernetes
ip: 127.0.0.1
hostNetwork: true
serviceAccountName: kube-vip
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/master
operator: Exists
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
tolerations:
- effect: NoSchedule
operator: Exists
- effect: NoExecute
operator: Exists
#% include 'partials/kube-vip-ds.partial.yaml.j2' %#
#% endif %#
@@ -0,0 +1,4 @@
#% if bootstrap_distribution in ['k3s'] %#
---
#% include 'partials/kube-vip-rbac.partial.yaml.j2' %#
#% endif %#
@@ -1,4 +1,4 @@
#% if bootstrap_distribution in ['k3s', 'k0s'] %#
#% if bootstrap_distribution in ['k0s', 'k3s'] %#
# Ansible
ansible-lint==6.22.2
ansible==9.1.0
@@ -1,4 +1,4 @@
#% if bootstrap_distribution in ['k3s', 'k0s'] %#
#% if bootstrap_distribution in ['k0s', 'k3s'] %#
---
collections:
- name: ansible.posix
@@ -9,7 +9,7 @@ collections:
version: 8.2.0
- name: kubernetes.core
version: 3.0.0
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
roles:
- name: xanmanning.k3s
src: https://github.com/PyratLabs/ansible-role-k3s
@@ -8,7 +8,7 @@ spec:
chart:
spec:
chart: cilium
version: 1.14.6
version: 1.14.5
sourceRef:
kind: HelmRepository
name: cilium
@@ -2,7 +2,7 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
#% if not bootstrap_ipv6_enabled %#
#% if not bootstrap_advanced_flags.dual_stack_ipv4_first|default(false) %#
- ./cilium-l2.yaml
#% endif %#
- ./helmrelease.yaml
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "talos" %#
#% if bootstrap_distribution in ['talos'] %#
---
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "talos" %#
#% if bootstrap_distribution in ['talos'] %#
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "talos" %#
#% if bootstrap_distribution in ['talos'] %#
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
@@ -4,7 +4,7 @@ kind: Kustomization
resources:
- ./namespace.yaml
- ./cilium/ks.yaml
#% if bootstrap_distribution == "talos" %#
#% if bootstrap_distribution in ['talos'] %#
- ./kubelet-csr-approver/ks.yaml
#% endif %#
- ./metrics-server/ks.yaml
@@ -25,7 +25,7 @@ spec:
keepHistory: false
values:
spegel:
#% if bootstrap_distribution == "k0s" %#
#% if bootstrap_distribution in ['k0s'] %#
containerdSock: /run/k0s/containerd.sock
containerdRegistryConfigPath: /var/lib/k0s/containerd/certs.d
#% endif %#
@@ -53,7 +53,7 @@ spec:
enabled: true
serviceMonitor:
metricRelabelings:
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
# Remove duplicate labels provided by k3s
- action: keep
sourceLabels: ["__name__"]
@@ -74,7 +74,7 @@ spec:
enabled: true
serviceMonitor:
metricRelabelings:
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
# Remove duplicate labels provided by k3s
- action: keep
sourceLabels: ["__name__"]
@@ -93,7 +93,7 @@ spec:
#% for item in bootstrap_nodes.master %#
- "#{ item.address }#"
#% endfor %#
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
serviceMonitor:
metricRelabelings:
# Remove duplicate labels provided by k3s
@@ -107,7 +107,7 @@ spec:
kubeScheduler:
enabled: true
endpoints: *endpoints
#% if bootstrap_distribution == 'k3s' %#
#% if bootstrap_distribution in ['k3s'] %#
serviceMonitor:
metricRelabelings:
# Remove duplicate labels provided by k3s
@@ -26,7 +26,7 @@ spec:
values:
externalSnapshotter:
enabled: false
#% if bootstrap_distribution == "k0s" %#
#% if bootstrap_distribution in ['k0s'] %#
kubeletDir: /var/lib/k0s/kubelet
#% endif %#
#% endif %#
@@ -25,7 +25,7 @@ spec:
keepHistory: false
values:
linux:
#% if bootstrap_distribution == "k0s" %#
#% if bootstrap_distribution in ['k0s'] %#
kubelet: /var/lib/k0s/kubelet
#% else %#
kubelet: /var/lib/kubelet
@@ -5,6 +5,6 @@ resources:
- ./namespace.yaml
- ./descheduler/ks.yaml
- ./reloader/ks.yaml
#% if bootstrap_distribution == "k3s" and addon_system_upgrade_controller.enabled %#
#% if bootstrap_distribution in ['k3s'] and addon_system_upgrade_controller.enabled %#
- ./system-upgrade-controller/ks.yaml
#% endif %#
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "k3s" and addon_system_upgrade_controller.enabled %#
#% if bootstrap_distribution in ['k3s'] and addon_system_upgrade_controller.enabled %#
---
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "k3s" and addon_system_upgrade_controller.enabled %#
#% if bootstrap_distribution in ['k3s'] and addon_system_upgrade_controller.enabled %#
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "k3s" and addon_system_upgrade_controller.enabled %#
#% if bootstrap_distribution in ['k3s'] and addon_system_upgrade_controller.enabled %#
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "k3s" and addon_system_upgrade_controller.enabled %#
#% if bootstrap_distribution in ['k3s'] and addon_system_upgrade_controller.enabled %#
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "k3s" and addon_system_upgrade_controller.enabled %#
#% if bootstrap_distribution in ['k3s'] and addon_system_upgrade_controller.enabled %#
---
apiVersion: upgrade.cattle.io/v1
kind: Plan
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "k3s" and addon_system_upgrade_controller.enabled %#
#% if bootstrap_distribution in ['k3s'] and addon_system_upgrade_controller.enabled %#
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == "k3s" and addon_system_upgrade_controller.enabled %#
#% if bootstrap_distribution in ['k3s'] and addon_system_upgrade_controller.enabled %#
---
apiVersion: upgrade.cattle.io/v1
kind: Plan
@@ -11,7 +11,7 @@ data:
CLUSTER_CIDR: "#{ bootstrap_cluster_cidr.split(',')[0] }#"
SERVICE_CIDR: "#{ bootstrap_service_cidr.split(',')[0] }#"
NODE_CIDR: "#{ bootstrap_node_cidr }#"
#% if bootstrap_ipv6_enabled %#
#% if bootstrap_advanced_flags.dual_stack_ipv4_first|default(false) %#
CLUSTER_CIDR_V6: "#{ bootstrap_cluster_cidr.split(',')[1] }#"
SERVICE_CIDR_V6: "#{ bootstrap_service_cidr.split(',')[1] }#"
#% endif %#
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k0s' %#
#% if bootstrap_distribution in ['k0s'] %#
---
apiVersion: k0sctl.k0sproject.io/v1beta1
kind: Cluster
@@ -91,7 +91,7 @@ spec:
charts:
- name: cilium
chartname: cilium/cilium
# renovate: datasource=github-releases depName=cilium/cilium
# renovate: datasource=helm depName=cilium repository=https://helm.cilium.io
version: "1.14.5"
namespace: kube-system
values: |2
@@ -1,131 +1,20 @@
#% if bootstrap_distribution in ['k0s'] %#
#!/usr/bin/env bash
set -e
set -o noglob
[ $(id -u) -eq 0 ] || exec sudo $0 $@
# Create directory
# Create kube-vip directory
mkdir -p /var/lib/k0s/manifests/kube-vip
# Create kube-vip rbac
cat <<EOF > /var/lib/k0s/manifests/kube-vip/rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: kube-vip
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
name: system:kube-vip-role
rules:
- apiGroups: [""]
resources: ["services/status"]
verbs: ["update"]
- apiGroups: [""]
resources: ["services", "endpoints"]
verbs: ["list","get","watch", "update"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list","get","watch", "update", "patch"]
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["list", "get", "watch", "update", "create"]
- apiGroups: ["discovery.k8s.io"]
resources: ["endpointslices"]
verbs: ["list","get","watch", "update"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: system:kube-vip-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:kube-vip-role
subjects:
- kind: ServiceAccount
name: kube-vip
namespace: kube-system
cat <<EOF > /var/lib/k0s/manifests/kube-vip/kube-vip-rbac.yaml
#% include 'partials/kube-vip-rbac.partial.yaml.j2' %#
EOF
cat <<EOF > /var/lib/k0s/manifests/kube-vip/ds.yaml
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-vip
namespace: kube-system
labels:
app.kubernetes.io/name: kube-vip
spec:
selector:
matchLabels:
app.kubernetes.io/name: kube-vip
template:
metadata:
labels:
app.kubernetes.io/name: kube-vip
spec:
containers:
- name: kube-vip
image: ghcr.io/kube-vip/kube-vip:v0.6.4
imagePullPolicy: IfNotPresent
args: ["manager"]
env:
- name: address
value: "#{ bootstrap_kube_api_addr }#"
- name: vip_arp
value: "true"
- name: lb_enable
value: "true"
- name: port
value: "6443"
- name: vip_cidr
value: "32"
- name: cp_enable
value: "true"
- name: cp_namespace
value: kube-system
- name: vip_ddns
value: "false"
- name: svc_enable
value: "false"
- name: vip_leaderelection
value: "true"
- name: vip_leaseduration
value: "15"
- name: vip_renewdeadline
value: "10"
- name: vip_retryperiod
value: "2"
- name: prometheus_server
value: :2112
securityContext:
capabilities:
add: ["NET_ADMIN", "NET_RAW", "SYS_TIME"]
hostAliases:
- hostnames:
- kubernetes
ip: 127.0.0.1
hostNetwork: true
serviceAccountName: kube-vip
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/master
operator: Exists
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
tolerations:
- effect: NoSchedule
operator: Exists
- effect: NoExecute
operator: Exists
# Create kube-vip daemonset
cat <<EOF > /var/lib/k0s/manifests/kube-vip/kube-vip-ds.yaml
#% include 'partials/kube-vip-ds.partial.yaml.j2' %#
EOF
#% endif %#
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k0s' %#
#% if bootstrap_distribution in ['k0s'] %#
#!/usr/bin/env bash
set -e
set -o noglob
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k0s' %#
#% if bootstrap_distribution in ['k0s'] %#
#!/usr/bin/env bash
set -e
set -o noglob
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'k0s' %#
#% if bootstrap_distribution in ['k0s'] %#
#!/usr/bin/env bash
set -e
set -o noglob
@@ -1,3 +1,3 @@
#% if bootstrap_distribution == 'talos' %#
#% if bootstrap_distribution in ['talos'] %#
charts/
#% endif %#
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'talos' %#
#% if bootstrap_distribution in ['talos'] %#
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'talos' %#
#% if bootstrap_distribution in ['talos'] %#
---
#% filter indent(width=0, first=True) %#
#% include 'partials/cilium-values-init.partial.yaml.j2' %#
@@ -1,3 +1,3 @@
#% if bootstrap_distribution == 'talos' %#
#% if bootstrap_distribution in ['talos'] %#
charts/
#% endif %#
@@ -1,4 +1,4 @@
#% if bootstrap_distribution == 'talos' %#
#% if bootstrap_distribution in ['talos'] %#
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -1,29 +1,24 @@
#% if bootstrap_distribution == 'talos' %#
#% if bootstrap_distribution in ['talos'] %#
# yaml-language-server: $schema=https://raw.githubusercontent.com/budimanjojo/talhelper/master/pkg/config/schemas/talconfig.json
---
# renovate: datasource=github-releases depName=siderolabs/talos
# renovate: depName=ghcr.io/siderolabs/installer datasource=docker extractVersion=^(?<version>.*)$
talosVersion: v1.6.1
# renovate: datasource=github-releases depName=kubernetes/kubernetes extractVersion=^v(?<version>.*)$
kubernetesVersion: 1.29.1
clusterName: &cluster home-kubernetes
endpoint: https://#{ bootstrap_kube_api_addr }#:6443
clusterPodNets:
- "#{ bootstrap_cluster_cidr.split(',')[0] }#"
clusterSvcNets:
- "#{ bootstrap_service_cidr.split(',')[0] }#"
additionalApiServerCertSans: &sans
- "#{ bootstrap_kube_api_addr }#"
- 127.0.0.1 # KubePrism
#% for item in bootstrap_kube_additional_tls_sans %#
- "#{ item }#"
#% endfor %#
additionalMachineCertSans: *sans
cniConfig:
name: none
@@ -8,9 +8,9 @@ cluster:
id: 1
containerRuntime:
integration: containerd
#% if bootstrap_distribution == "k3s" %#
#% if bootstrap_distribution in ['k3s'] %#
socketPath: /var/run/k3s/containerd/containerd.sock
#% elif bootstrap_distribution == "k0s" %#
#% elif bootstrap_distribution in ['k0s'] %#
socketPath: /var/run/k0s/containerd.sock
#% endif %#
endpointRoutes:
@@ -59,25 +59,26 @@ hubble:
ipam:
mode: kubernetes
ipv4NativeRoutingCIDR: "${CLUSTER_CIDR}"
#% if bootstrap_ipv6_enabled %#
#% if bootstrap_advanced_flags.dual_stack_ipv4_first|default(false) %#
ipv6NativeRoutingCIDR: "${CLUSTER_CIDR_V6}"
ipv6:
enabled: true
#% endif %#
#% if bootstrap_distribution == "k3s" %#
#% if bootstrap_distribution in ['k3s'] %#
k8sServiceHost: 127.0.0.1
k8sServicePort: 6444
#% elif bootstrap_distribution == "k0s" %#
#% elif bootstrap_distribution in ['k0s'] %#
k8sServiceHost: localhost
k8sServicePort: 7443
#% elif bootstrap_distribution == "talos" %#
#% elif bootstrap_distribution in ['talos'] %#
k8sServiceHost: localhost
k8sServicePort: 7445
#% endif %#
kubeProxyReplacement: true
kubeProxyReplacementHealthzBindAddr: 0.0.0.0:10256
l2announcements:
#% if bootstrap_ipv6_enabled %#
#% if bootstrap_advanced_flags.dual_stack_ipv4_first|default(false) %#
# https://github.com/cilium/cilium/issues/28985
enabled: false
#% else %#
enabled: true
@@ -8,9 +8,9 @@ cluster:
id: 1
containerRuntime:
integration: containerd
#% if bootstrap_distribution == "k3s" %#
#% if bootstrap_distribution in ['k3s'] %#
socketPath: /var/run/k3s/containerd/containerd.sock
#% elif bootstrap_distribution == "k0s" %#
#% elif bootstrap_distribution in ['k0s'] %#
socketPath: /var/run/k0s/containerd.sock
#% endif %#
endpointRoutes:
@@ -20,25 +20,26 @@ hubble:
ipam:
mode: kubernetes
ipv4NativeRoutingCIDR: "#{ bootstrap_cluster_cidr }#"
#% if bootstrap_ipv6_enabled %#
#% if bootstrap_advanced_flags.dual_stack_ipv4_first|default(false) %#
ipv6NativeRoutingCIDR: "#{ bootstrap_cluster_cidr_v6 }#"
ipv6:
enabled: true
#% endif %#
#% if bootstrap_distribution == "k3s" %#
#% if bootstrap_distribution in ['k3s'] %#
k8sServiceHost: 127.0.0.1
k8sServicePort: 6444
#% elif bootstrap_distribution == "k0s" %#
#% elif bootstrap_distribution in ['k0s'] %#
k8sServiceHost: localhost
k8sServicePort: 7443
#% elif bootstrap_distribution == "talos" %#
#% elif bootstrap_distribution in ['talos'] %#
k8sServiceHost: localhost
k8sServicePort: 7445
#% endif %#
kubeProxyReplacement: true
kubeProxyReplacementHealthzBindAddr: 0.0.0.0:10256
l2announcements:
#% if bootstrap_ipv6_enabled %#
#% if bootstrap_advanced_flags.dual_stack_ipv4_first|default(false) %#
# https://github.com/cilium/cilium/issues/28985
enabled: false
#% else %#
enabled: true
@@ -0,0 +1,74 @@
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: kube-vip
namespace: kube-system
labels:
app.kubernetes.io/name: kube-vip
spec:
selector:
matchLabels:
app.kubernetes.io/name: kube-vip
template:
metadata:
labels:
app.kubernetes.io/name: kube-vip
spec:
containers:
- name: kube-vip
image: ghcr.io/kube-vip/kube-vip:v0.6.4
imagePullPolicy: IfNotPresent
args: ["manager"]
env:
- name: address
value: "#{ bootstrap_kube_api_addr }#"
- name: vip_arp
value: "true"
- name: lb_enable
value: "true"
- name: port
value: "6443"
- name: vip_cidr
value: "32"
- name: cp_enable
value: "true"
- name: cp_namespace
value: kube-system
- name: vip_ddns
value: "false"
- name: svc_enable
value: "false"
- name: vip_leaderelection
value: "true"
- name: vip_leaseduration
value: "15"
- name: vip_renewdeadline
value: "10"
- name: vip_retryperiod
value: "2"
- name: prometheus_server
value: :2112
securityContext:
capabilities:
add: ["NET_ADMIN", "NET_RAW", "SYS_TIME"]
hostAliases:
- hostnames:
- kubernetes
ip: 127.0.0.1
hostNetwork: true
serviceAccountName: kube-vip
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/master
operator: Exists
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: Exists
tolerations:
- effect: NoSchedule
operator: Exists
- effect: NoExecute
operator: Exists
@@ -0,0 +1,41 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: kube-vip
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
name: system:kube-vip-role
rules:
- apiGroups: [""]
resources: ["services/status"]
verbs: ["update"]
- apiGroups: [""]
resources: ["services", "endpoints"]
verbs: ["list","get","watch", "update"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list","get","watch", "update", "patch"]
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["list", "get", "watch", "update", "create"]
- apiGroups: ["discovery.k8s.io"]
resources: ["endpointslices"]
verbs: ["list","get","watch", "update"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: system:kube-vip-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:kube-vip-role
subjects:
- kind: ServiceAccount
name: kube-vip
namespace: kube-system