Skip to content

Commit

Permalink
kubernetes uses helm state
Browse files Browse the repository at this point in the history
added csi
  • Loading branch information
kiemlicz committed Feb 10, 2024
1 parent ab9b662 commit c07f1f8
Show file tree
Hide file tree
Showing 10 changed files with 171 additions and 26 deletions.
25 changes: 18 additions & 7 deletions salt/kubernetes/cni/cilium.sls
Original file line number Diff line number Diff line change
Expand Up @@ -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
12 changes: 8 additions & 4 deletions salt/kubernetes/cni/map.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
5 changes: 5 additions & 0 deletions salt/kubernetes/csi/init.sls
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% from "kubernetes/csi/map.jinja" import kubernetes with context %}
include:
- kubernetes.csi.{{ kubernetes.csi.provider }}
11 changes: 11 additions & 0 deletions salt/kubernetes/csi/iscsi.sls
Original file line number Diff line number Diff line change
@@ -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
17 changes: 17 additions & 0 deletions salt/kubernetes/csi/longhorn.sls
Original file line number Diff line number Diff line change
@@ -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
34 changes: 34 additions & 0 deletions salt/kubernetes/csi/map.jinja
Original file line number Diff line number Diff line change
@@ -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) %}
42 changes: 42 additions & 0 deletions salt/kubernetes/csi/openebs.sls
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions salt/kubernetes/master/init.sls
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ include:
- kubernetes.distro.k3s.master
{% endif %}
- kubernetes.cni
- kubernetes.csi
36 changes: 27 additions & 9 deletions salt/kubernetes/metallb/init.sls
Original file line number Diff line number Diff line change
Expand Up @@ -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 <<EOF | kubectl apply -f -
# common to L2 and BGP
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: {{ kubernetes.metallb.pool_name }}
namespace: {{ kubernetes.metallb.release_namespace }}
name: {{ kubernetes.metallb.config.pool_name }}
namespace: {{ kubernetes.metallb.helm.namespace }}
spec:
addresses: {{ kubernetes.metallb.addresses | tojson }}
addresses: {{ kubernetes.metallb.config.addresses | tojson }}
{%- if 'bgp' in kubernetes.metallb.config %}
---
apiVersion: metallb.io/v1beta2
kind: BGPPeer
metadata:
name: {{ kubernetes.metallb.config.bgp.peer_name }}
namespace: {{ kubernetes.metallb.release_namespace }}
namespace: {{ kubernetes.metallb.helm.namespace }}
spec:
myASN: {{ kubernetes.metallb.config.bgp.my_asn }}
peerASN: {{ kubernetes.metallb.config.bgp.peer_asn }}
Expand All @@ -35,15 +52,16 @@ kubernetes_metallb:
kind: BGPAdvertisement
metadata:
name: {{ kubernetes.metallb.config.bgp.peer_name }}-advertisement
namespace: {{ kubernetes.metallb.release_namespace }}
namespace: {{ kubernetes.metallb.helm.namespace }}
spec:
ipAddressPools:
- {{ kubernetes.metallb.pool_name }}
- {{ kubernetes.metallb.config.pool_name }}
{%- endif %}
EOF
- env:
- KUBECONFIG: {{ kubernetes.config.locations|join(':') }}
- require:
- sls: kubernetes.helm
- helm: kubernetes_metallb_release
# todo bgp update interval?
14 changes: 8 additions & 6 deletions salt/kubernetes/metallb/map.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
{% set kubernetes = salt['grains.filter_by']({
'default': {
'metallb': {
'release_name': "metallb",
'release_namespace': "metallb-system",
'version': "0.14.3",
'repo': "metallb",
'chart': "metallb",
'options': "",
'helm': {
'name': "metallb",
'namespace': "metallb-system",
'version': "0.14.3",
'repo': "metallb",
'chart': "metallb",
'set': [],
},
'config': {
'addresses': [],
}
Expand Down

0 comments on commit c07f1f8

Please sign in to comment.