Installing applications
There are two ways to add applications to your cluster: using your own manifests or via Helm charts. Manifests are suitable for your own applications, whilst Helm is suitable for ready-made software packages with a wide range of configuration options.
Prerequisites
- A cluster with the status Running
- A verified connection via
kubectl; see Connecting to the cluster
Installation via manifest
You describe your own applications in YAML files and apply them as follows:
# Einzelne Datei
kubectl apply -f deployment.yaml
# Alle Dateien eines Verzeichnisses
kubectl apply -f ./manifeste/
You can find a complete example under Deploying the first image.
Installation via Helm
Helm is the package manager for Kubernetes. A chart bundles all of an application’s manifests; you can customise the installation using configuration values without having to edit the manifests themselves.
Installing the helmet
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
helm version
Add a repository
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
Browse available charts:
helm search repo wordpress
Install the chart
helm install meine-app bitnami/wordpress \
--namespace web \
--create-namespace
meine-app is the name you can choose for the installation (Release). You will manage the application under this name later on.
Customise the installation
You can list the configurable values for a chart using:
helm show values bitnami/wordpress
You can set individual values directly:
helm install meine-app bitnami/wordpress \
--namespace web \
--create-namespace \
--set service.type=ClusterIP \
--set persistence.enabled=false
For more extensive adjustments, create a separate values file:
# werte.yaml
service:
type: ClusterIP
persistence:
enabled: false
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: 1000m
memory: 1Gi
helm install meine-app bitnami/wordpress \
--namespace web \
--create-namespace \
--values werte.yaml
Keep your values file under version control. This ensures that it is clear which configuration was used to install an application – and that the installation can be reproduced.
Manage installations
# Installationen auflisten
helm list --all-namespaces
# Verwendete Werte einer Installation anzeigen
helm get values meine-app -n web
# Status einer Installation
helm status meine-app -n web
Refresh
helm repo update
helm upgrade meine-app bitnami/wordpress \
--namespace web \
--values werte.yaml
helm upgrade (without --values) resets previously set values to the chart’s default values. Specify your value file again with every upgrade – or use --reuse-values.
Rewind
# Verlauf der Installation
helm history meine-app -n web
# Auf die vorherige Version zurückrollen
helm rollback meine-app -n web
# Auf eine bestimmte Revision zurückrollen
helm rollback meine-app 3 -n web
Remove
helm uninstall meine-app -n web
Data stored by an application outside the cluster – for example, in S3 Object Storage or on a database VM – remains in place when the installation is removed and must be cleaned up separately.
Check before installation
With --dry-run, you can view the manifests that have been generated without making any changes to the cluster:
helm install meine-app bitnami/wordpress \
--namespace web \
--values werte.yaml \
--dry-run --debug
Guidelines for production use
- Set resources: Set
requestsandlimitsto ensure that an application does not fully utilise a node. - Check persistence: Many charts request a persistent volume by default. This works in the cluster – just check that the storage class and the requested size match your needs.
- Consider the service type: Charts often set
service.type=LoadBalancerby default. A service of this type does not receive an external address; switch toNodePortorClusterIPwith Ingress. - Separate namespaces: Install applications in their own namespaces to clearly demarcate permissions and resources.
- Specify the chart version: Use
--versionto pin the chart version and avoid unintended version jumps.