From c07f1f89d3e1b59cb11d79e24ef72eb59858e472 Mon Sep 17 00:00:00 2001 From: kiemlicz Date: Sat, 10 Feb 2024 17:24:53 +0100 Subject: [PATCH] kubernetes uses helm state added csi --- salt/kubernetes/cni/cilium.sls | 25 ++++++++++++------ salt/kubernetes/cni/map.jinja | 12 ++++++--- salt/kubernetes/csi/init.sls | 5 ++++ salt/kubernetes/csi/iscsi.sls | 11 ++++++++ salt/kubernetes/csi/longhorn.sls | 17 +++++++++++++ salt/kubernetes/csi/map.jinja | 34 +++++++++++++++++++++++++ salt/kubernetes/csi/openebs.sls | 42 +++++++++++++++++++++++++++++++ salt/kubernetes/master/init.sls | 1 + salt/kubernetes/metallb/init.sls | 36 +++++++++++++++++++------- salt/kubernetes/metallb/map.jinja | 14 ++++++----- 10 files changed, 171 insertions(+), 26 deletions(-) create mode 100644 salt/kubernetes/csi/init.sls create mode 100644 salt/kubernetes/csi/iscsi.sls create mode 100644 salt/kubernetes/csi/longhorn.sls create mode 100644 salt/kubernetes/csi/map.jinja create mode 100644 salt/kubernetes/csi/openebs.sls diff --git a/salt/kubernetes/cni/cilium.sls b/salt/kubernetes/cni/cilium.sls index 86465da..466cbe0 100644 --- a/salt/kubernetes/cni/cilium.sls +++ b/salt/kubernetes/cni/cilium.sls @@ -5,12 +5,23 @@ include: - kubernetes.helm -kubernetes_cni: - cmd.run: - - name: | - helm upgrade --install {{ kubernetes.cni.config.release_name }} cilium/cilium -n {{ kubernetes.cni.config.release_namespace }} --create-namespace \ - --version {{ kubernetes.cni.config.version }} {{ kubernetes.cni.config.options }} - - env: - - KUBECONFIG: {{ kubernetes.config.locations|join(':') }} +kubernetes_cni_repo: + helm.repo_managed: + - present: + - name: {{ kubernetes.cni.config.helm.repo }} + url: https://helm.cilium.io/ +kubernetes_cni_release: + helm.release_present: + - name: {{ kubernetes.cni.config.helm.name }} + - namespace: {{ kubernetes.cni.config.helm.namespace }} + - chart: {{kubernetes.cni.config.helm.repo}}/{{kubernetes.cni.config.helm.chart}} + - version: {{ kubernetes.cni.config.helm.version }} + - set: {{ kubernetes.cni.config.helm.set|tojson }} + - flags: + - "create-namespace" + - "wait" + - kvflags: + kubeconfig: {{ kubernetes.config.locations|join(':') }} - require: + - helm: kubernetes_cni_repo - sls: kubernetes.helm diff --git a/salt/kubernetes/cni/map.jinja b/salt/kubernetes/cni/map.jinja index f17b04e..df073f9 100644 --- a/salt/kubernetes/cni/map.jinja +++ b/salt/kubernetes/cni/map.jinja @@ -4,10 +4,14 @@ {%- set default_network_provider = "cilium" %} {%- set network_provider = { 'cilium': { - 'release_name': "cilium", - 'release_namespace': "cilium", - 'version': "1.14.6", - 'options': "" + 'helm': { + 'name': "cilium", + 'namespace': "cilium", + 'version': "1.14.6", + 'repo': "cilium", + 'chart': "cilium", + 'set': [], + }, }, 'flannel' : { 'cidr': "10.244.0.0/16", diff --git a/salt/kubernetes/csi/init.sls b/salt/kubernetes/csi/init.sls new file mode 100644 index 0000000..99894ed --- /dev/null +++ b/salt/kubernetes/csi/init.sls @@ -0,0 +1,5 @@ +{% from "kubernetes/csi/map.jinja" import kubernetes with context %} + + +include: + - kubernetes.csi.{{ kubernetes.csi.provider }} diff --git a/salt/kubernetes/csi/iscsi.sls b/salt/kubernetes/csi/iscsi.sls new file mode 100644 index 0000000..f4055d0 --- /dev/null +++ b/salt/kubernetes/csi/iscsi.sls @@ -0,0 +1,11 @@ +{% from "kubernetes/csi/map.jinja" import kubernetes with context %} +# common for longhorn and openebs + +iscsi_setup: + pkg.latest: + - pkgs: {{ kubernetes.csi.config.pkgs|tojson }} + service.running: + - name: {{ kubernetes.csi.config.service_name }} + - enable: True + - require: + - pkg: iscsi_setup diff --git a/salt/kubernetes/csi/longhorn.sls b/salt/kubernetes/csi/longhorn.sls new file mode 100644 index 0000000..394b7ba --- /dev/null +++ b/salt/kubernetes/csi/longhorn.sls @@ -0,0 +1,17 @@ +{% from "kubernetes/csi/map.jinja" import kubernetes with context %} + + +helm_longhorn_repo: + helm.repo_managed: + - present: + - name: longhorn + url: https://charts.longhorn.io + +csi_longhorn_check_requisites: + cmd.script: + - name: {{ kubernetes.csi.config.check }} + +#csi_longhorn_install: +# helm.release_present: +# - name: {{ kubernetes.csi.config.release_name }} +# todo incomplete as giving up on longhorn, now using openebs for local PV diff --git a/salt/kubernetes/csi/map.jinja b/salt/kubernetes/csi/map.jinja new file mode 100644 index 0000000..5529b3b --- /dev/null +++ b/salt/kubernetes/csi/map.jinja @@ -0,0 +1,34 @@ +{%- from "kubernetes/map.jinja" import kubernetes as kubernetes_defaults with context %} + +{%- set default_csi_provider = "openebs" %} + +{%- set csi_provider = { + 'longhorn': { + 'check': "https://raw.githubusercontent.com/longhorn/longhorn/v1.6.0/scripts/environment_check.sh", + 'release_name': "longhorn", + 'release_namespace': "longhorn-system", + 'pkgs': [ "open-iscsi" ], + 'daemon': "iscsid" + }, + 'openebs': { + 'helm': { + 'name': "openebs", + 'namespace': "openebs", + 'version': "3.10.0", + 'repo': "openebs", + 'chart': "openebs", + 'url': "https://openebs.github.io/charts", + }, + 'pkgs': [ "open-iscsi", "lvm2" ], + 'service_name': "iscsid" + } +} %} + +{%- set kubernetes = salt['grains.filter_by']({ + 'default': { + 'csi': { + 'provider': default_csi_provider, + 'config': csi_provider[default_csi_provider] + }, + }, +}, merge=kubernetes_defaults) %} diff --git a/salt/kubernetes/csi/openebs.sls b/salt/kubernetes/csi/openebs.sls new file mode 100644 index 0000000..8b894ed --- /dev/null +++ b/salt/kubernetes/csi/openebs.sls @@ -0,0 +1,42 @@ +{% from "kubernetes/csi/map.jinja" import kubernetes with context %} + + +include: + - kubernetes.csi.iscsi + - os.lvm + +# openebs is an umbrella: +# LVM sub-chart: https://github.com/openebs/lvm-localpv/tree/develop/deploy/helm/charts +# LVM prereq: https://github.com/openebs/lvm-localpv +kubernetes_csi_openebs_prepare: + helm.repo_managed: + - present: + - name: {{ kubernetes.csi.config.helm.repo }} + url: {{ kubernetes.csi.config.helm.url }} +{% if 'values' in kubernetes.csi.config.helm %} + file.managed: + - name: /tmp/openebs.yaml + - contents: | + {{ kubernetes.csi.config.helm.values|indent(8) }} + - require_in: + - helm: helm_csi_openebs_release +{%- endif %} + +helm_csi_openebs_release: + helm.release_present: + - name: {{ kubernetes.csi.config.helm.name }} + - namespace: {{ kubernetes.csi.config.helm.namespace }} + - chart: {{kubernetes.csi.config.helm.repo}}/{{kubernetes.csi.config.helm.chart}} + - version: {{ kubernetes.csi.config.helm.version }} +{%- if 'values' in kubernetes.csi.config.helm %} + - values: /tmp/openebs.yaml +{%- endif %} + - flags: + - "create-namespace" + - "wait" + - kvflags: + kubeconfig: {{ kubernetes.config.locations|join(':') }} + - require: + - helm: kubernetes_csi_openebs_prepare + - sls: kubernetes.csi.iscsi + - sls: os.lvm diff --git a/salt/kubernetes/master/init.sls b/salt/kubernetes/master/init.sls index 922f157..305e7e9 100644 --- a/salt/kubernetes/master/init.sls +++ b/salt/kubernetes/master/init.sls @@ -13,3 +13,4 @@ include: - kubernetes.distro.k3s.master {% endif %} - kubernetes.cni + - kubernetes.csi diff --git a/salt/kubernetes/metallb/init.sls b/salt/kubernetes/metallb/init.sls index 9120d78..bafc6c1 100644 --- a/salt/kubernetes/metallb/init.sls +++ b/salt/kubernetes/metallb/init.sls @@ -5,27 +5,44 @@ include: - kubernetes.helm # For BGP remember to setup BGP session on router -kubernetes_metallb: +kubernetes_metallb_repo: + helm.repo_managed: + - present: + - name: {{ kubernetes.metallb.helm.repo }} + url: https://metallb.github.io/metallb + +kubernetes_metallb_release: + helm.release_present: + - name: {{ kubernetes.metallb.helm.name }} + - namespace: {{ kubernetes.metallb.helm.namespace }} + - chart: {{kubernetes.metallb.helm.repo}}/{{kubernetes.metallb.helm.chart}} + - version: {{ kubernetes.metallb.helm.version }} + - set: {{ kubernetes.metallb.helm.set|tojson }} + - flags: + - "--create-namespace" + - "--wait" + - kvflags: + kubeconfig: {{ kubernetes.config.locations|join(':') }} + - require: + - helm: kubernetes_metallb_repo cmd.run: - name: | - helm upgrade --install {{ kubernetes.metallb.release_name }} {{kubernetes.metallb.repo}}/{{kubernetes.metallb.chart}} -n {{ kubernetes.metallb.release_namespace }} --create-namespace \ - --version {{ kubernetes.metallb.version }} {{ kubernetes.metallb.options }} --wait cat <