Auf dieser Seite
Erste Anwendung bereitstellen
Deployment und Service anpassen, Manifest validieren und Rollout ohne öffentliche Freigabe prüfen.
Für Enterprise Self-Hosted oder eine eigens vereinbarte technische Evaluation. Keine Cloud-Kundenanleitung.
Bevor Sie starten
Sie haben einen bereitgestellten Pilotcluster, eine vertrauenswürdige kubeconfig, kubectl und Zugriff auf einen vereinbarten Namespace. Setzen Sie KUBECONFIG, CP_CONTEXT und CP_NAMESPACE über die Zugangsanleitung, bevor Sie Befehle ausführen. Die Beispiele verwenden eine POSIX-Shell und eine einzelne Zugangsdatei. Gruppierte Blöcke stoppen bei fehlenden Einstellungen, ohne Ihr Terminal zu schließen; sie stellen keine Infrastruktur bereit und vergeben keine Rechte. Mit dem Cluster verbinden →
Sie benötigen Rechte für Deployments und Services, ein für diese Umgebung freigegebenes Image und einen HTTP-Readiness-Endpunkt. Private Images benötigen den vereinbarten Registry-Zugang. Führen Sie die Übung in einem zugewiesenen Test-Namespace ohne vorhandene cloud-demo-Ressourcen aus.
1. Anwendungsvorlage anpassen
Speichern Sie die Vorlage als cloud-demo.yaml. Ersetzen Sie REPLACE_WITH_APPROVED_IMAGE durch Ihr geprüftes Image, möglichst mit freigegebenem Digest. Prüfen Sie Nicht-Root-Benutzer, Port und Health-Endpunkt des Images; passen Sie 8080 und /readyz bei Bedarf an. Das schreibgeschützte Dateisystem setzt Schreibzugriffe auf vereinbarte Pfade wie /tmp voraus. Die Ressourcenwerte sind Beispiele und müssen zu Workload und Quote passen.
Die Startup-Probe lässt Initialisierung vor den Readiness-Prüfungen zu. Liveness ist hier nicht gesetzt: Definieren Sie für Ihre Anwendung erst eine sinnvolle Wiederherstellungsprüfung, bevor automatische Neustartentscheidungen aktiviert werden. Dies ist eine Workload-Vorlage, kein getestetes ClusterPilot-Cloud-Demo-Image und keine Hochverfügbarkeitskonfiguration.
Anwendungsvorlage herunterladen (.yaml) ↓Deployment- und Service-YAML anzeigen
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloud-demo
labels:
app: cloud-demo
spec:
replicas: 1
revisionHistoryLimit: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: cloud-demo
template:
metadata:
labels:
app: cloud-demo
spec:
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: REPLACE_WITH_APPROVED_IMAGE
ports:
- name: http
containerPort: 8080
resources:
requests:
cpu: 250m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
startupProbe:
httpGet:
path: /readyz
port: http
periodSeconds: 5
failureThreshold: 30
readinessProbe:
httpGet:
path: /readyz
port: http
periodSeconds: 5
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: [ALL]
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: cloud-demo
spec:
type: ClusterIP
selector:
app: cloud-demo
ports:
- name: http
port: 80
targetPort: http
2. Änderung validieren und prüfen
(
: "${KUBECONFIG:?Set KUBECONFIG from your handover}"
: "${CP_CONTEXT:?Set CP_CONTEXT from your handover}"
: "${CP_NAMESPACE:?Set CP_NAMESPACE from your handover}"
case "$CP_CONTEXT:$CP_NAMESPACE" in
YOUR_*|*:YOUR_*) printf '%s\n' 'Replace the YOUR_ context and namespace placeholders first.' >&2; exit 1 ;;
esac
kubectl --kubeconfig="$KUBECONFIG" --context="$CP_CONTEXT" --namespace="$CP_NAMESPACE" get deployment/cloud-demo service/cloud-demo
kubectl --kubeconfig="$KUBECONFIG" --context="$CP_CONTEXT" --namespace="$CP_NAMESPACE" apply --dry-run=server -f cloud-demo.yaml
kubectl --kubeconfig="$KUBECONFIG" --context="$CP_CONTEXT" --namespace="$CP_NAMESPACE" diff -f cloud-demo.yaml
)Beim ersten Prüfschritt ist NotFound für eine neue Übung erwartet. Existiert cloud-demo bereits, wählen Sie eine andere Testumgebung oder klären Sie die Zuständigkeit. Server-Dry-Run validiert über API und Admission, ohne Objekte zu speichern. diff zeigt die Änderungen; Exitcode 1 bedeutet Unterschiede, ein höherer Code einen Fehler. Zusätzliche API-Rechte können nötig sein. Beide Prüfungen belegen weder Image-Verfügbarkeit noch Anwendungsstart.
3. Anwenden und Readiness prüfen
Die nächsten Befehle erstellen oder aktualisieren den geprüften Workload und nutzen Ihre gebuchten Ressourcen. Führen Sie sie erst nach erfolgreicher Prüfung von Dry-Run und Diff aus.
(
: "${KUBECONFIG:?Set KUBECONFIG from your handover}"
: "${CP_CONTEXT:?Set CP_CONTEXT from your handover}"
: "${CP_NAMESPACE:?Set CP_NAMESPACE from your handover}"
case "$CP_CONTEXT:$CP_NAMESPACE" in
YOUR_*|*:YOUR_*) printf '%s\n' 'Replace the YOUR_ context and namespace placeholders first.' >&2; exit 1 ;;
esac
kubectl --kubeconfig="$KUBECONFIG" --context="$CP_CONTEXT" --namespace="$CP_NAMESPACE" apply -f cloud-demo.yaml
kubectl --kubeconfig="$KUBECONFIG" --context="$CP_CONTEXT" --namespace="$CP_NAMESPACE" rollout status deployment/cloud-demo --timeout=300s
kubectl --kubeconfig="$KUBECONFIG" --context="$CP_CONTEXT" --namespace="$CP_NAMESPACE" get pods -l app=cloud-demo
kubectl --kubeconfig="$KUBECONFIG" --context="$CP_CONTEXT" --namespace="$CP_NAMESPACE" get endpointslices -l kubernetes.io/service-name=cloud-demo
)4. Lokal testen und Ergebnis festhalten
(
: "${KUBECONFIG:?Set KUBECONFIG from your handover}"
: "${CP_CONTEXT:?Set CP_CONTEXT from your handover}"
: "${CP_NAMESPACE:?Set CP_NAMESPACE from your handover}"
case "$CP_CONTEXT:$CP_NAMESPACE" in
YOUR_*|*:YOUR_*) printf '%s\n' 'Replace the YOUR_ context and namespace placeholders first.' >&2; exit 1 ;;
esac
kubectl --kubeconfig="$KUBECONFIG" --context="$CP_CONTEXT" --namespace="$CP_NAMESPACE" port-forward service/cloud-demo 8080:80 --address=127.0.0.1
)Lassen Sie den Port-Forward laufen und öffnen Sie http://127.0.0.1:8080 im Browser oder prüfen Sie /readyz in einem zweiten Terminal. Der Zugriff ist an localhost gebunden. Beenden Sie ihn anschließend mit Strg+C. Dieser Test prüft den Anwendungsweg über den Service; öffentliche DNS-, Ingress- oder TLS-Konfiguration wird damit nicht geprüft.
Dokumentieren Sie Image-Digest, Manifestversion, Rollout-Ergebnis und Anwendungsantwort. Bei einer Wegwerfübung entfernen Sie nur das benannte Beispiel-Deployment und den Service, nachdem ihre Zugehörigkeit zur Übung bestätigt ist. Der folgende Befehl betrifft weder PVCs noch den Namespace.
(
: "${KUBECONFIG:?Set KUBECONFIG from your handover}"
: "${CP_CONTEXT:?Set CP_CONTEXT from your handover}"
: "${CP_NAMESPACE:?Set CP_NAMESPACE from your handover}"
case "$CP_CONTEXT:$CP_NAMESPACE" in
YOUR_*|*:YOUR_*) printf '%s\n' 'Replace the YOUR_ context and namespace placeholders first.' >&2; exit 1 ;;
esac
kubectl --kubeconfig="$KUBECONFIG" --context="$CP_CONTEXT" --namespace="$CP_NAMESPACE" delete deployment/cloud-demo service/cloud-demo
)Technische Referenzen (Englisch)
- Kubernetes: Deployments
- Kubernetes: Declarative configuration
- Kubernetes: Probes
- Kubernetes: Port forwarding
Kubernetes beschreibt hier das technische Verhalten. Der für Ihren Cluster bestätigte Funktionsumfang steht in Ihrer Pilotvereinbarung.
Diese Anleitung gilt für Ihren vereinbarten Pilotumfang. Technische Kubernetes-Beispiele sind kein Nachweis einer allgemein verfügbaren Cloud-Funktion.