Zum Inhalt springen

Deine erste App deployen

Dieser Guide nimmt ein Container-Image und bringt es als Deployment auf Kubernetes zum Laufen – anschließend machst du es mit einem Service innerhalb des Clusters erreichbar. Die Schritte funktionieren auf jedem konformen Cluster; als Beispiel dient ein PaaSbox-Cluster.

Lade die kubeconfig deines Clusters herunter und prüfe, ob du ihn erreichst:

Terminal-Fenster
export KUBECONFIG=~/Downloads/paasbox-kubeconfig.yaml
kubectl get nodes

Deine Nodes sollten als Ready aufgelistet sein.

Halte die Objekte deiner App in einem eigenen Namespace zusammen:

Terminal-Fenster
kubectl create namespace demo

Ein Deployment startet und überwacht deinen Container und ersetzt Pods, die abstürzen oder neu eingeplant werden. Speichere das Folgende als deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: demo
spec:
replicas: 2
selector:
matchLabels: { app: web }
template:
metadata:
labels: { app: web }
spec:
containers:
- name: web
image: nginxdemos/hello:plain-text
ports:
- containerPort: 80
resources:
requests: { cpu: 50m, memory: 64Mi }
limits: { cpu: 250m, memory: 128Mi }

Wende es an und sieh zu, wie die Pods hochkommen:

Terminal-Fenster
kubectl apply -f deployment.yaml
kubectl -n demo get pods -w

Setze immer Resource-Requests. Sie sagen dem Scheduler, wie viel CPU und Speicher deine Pods brauchen – nur so kann der Cluster Workloads effizient packen. Und genau aus dieser Effizienz kommen bei PaaSbox deine Einsparungen.

Ein Service gibt deinen Pods eine stabile Adresse innerhalb des Clusters, mit Lastverteilung über alle Replicas:

apiVersion: v1
kind: Service
metadata:
name: web
namespace: demo
spec:
selector: { app: web }
ports:
- port: 80
targetPort: 80
Terminal-Fenster
kubectl apply -f service.yaml

Leite den Service per Port-Forward auf deinen Rechner weiter und ruf ihn auf:

Terminal-Fenster
kubectl -n demo port-forward service/web 8080:80
# in another terminal:
curl localhost:8080

Du solltest eine Antwort von der App bekommen. 🎉

Terminal-Fenster
kubectl delete namespace demo