Helm

19. Mai 2023 - Lesezeit: 4 Minuten

Wie installiert man Software in einem Kubernetes Cluster? Am einfachsten mit Helm!
Es gibt schon viele fertige Helm Charts die man mit einem Befehl installieren kann (z.B. auf https://artifacthub.io/ ).

Ok man braucht zwei Befehle. Zuerst muss man das Helm Repository einbinden und dann kann man das Helm Chart installieren.

Hier mal ein paar Helm Charts wie ich sie bei mir installiert habe

Prometheus

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/prometheus --create-namespace --namespace monitoring --version 22.5.0 --set server.service.type=NodePort --set server.service.nodePort=30001

Grafana

helm repo add grafana https://grafana.github.io/helm-charts
helm install grafana grafana/grafana --create-namespace --namespace monitoring --version 6.56.2 --set service.type=NodePort --set service.nodePort=30002

# Passwort für Benutzer admin
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 -d ; echo

Cert-Manager

helm repo add jetstack https://charts.jetstack.io
helm install cert-manager jetstack/cert-manager --create-namespace --namespace cert-manager --version v1.11.2 --set installCRDs=true

# issuer-letsencrypt.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
namespace: cert-manager
spec:
acme:
  server: https://acme-staging-v02.api.letsencrypt.org/directory
  email: john.doe@inter.net
  privateKeySecretRef:
    name: letsencrypt-staging
  solvers:
    - http01:
        ingress:
          class: nginx
--- apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod namespace: cert-manager spec: acme: server: https://acme-v02.api.letsencrypt.org/directory email: john.doe@inter.net privateKeySecretRef: name: letsencrypt-prod solvers: - http01: ingress: class: nginx

kubectl apply -f issuer-letsencrypt.yaml

Ingress-Nginx

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx --create-namespace --namespace ingress-nginx --version 4.6.1 --set controller.service.type=NodePort --set controller.service.nodePorts.http=30080 --set controller.service.nodePorts.https=30443

Wordpress

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install wordpress bitnami/wordpress --create-namespace --namespace wordpress --version 16.1.2 --set service.type=NodePort --set service.nodePorts.http=30000 --set mariadb.auth.rootPassword="strenggeheim" --set mariadb.auth.password="geheim" --set ingress.enabled="true" --set ingress.hostname="blog.jamba.cloud" --set ingress.ingressClassName="nginx" --set ingress.tls="true" --set ingress.annotations."cert-manager\.io/cluster-issuer"="letsencrypt-staging"

# Passwort für Benutzer user
kubectl get secret --namespace wordpress wordpress -o jsonpath="{.data.wordpress-password}" | base64 -d ; echo

Minecraft

helm repo add itzg https://itzg.github.io/minecraft-server-charts
helm install minecraft itzg/minecraft --create-namespace --namespace minecraft --version 4.7.4 --set persistence.dataDir.enabled=true --set minecraftServer.gameMode=creative --set minecraftServer.eula=true --set minecraftServer.serviceType=NodePort --set minecraftServer.nodePort=30003