Zum Dokumentationsinhalt
Cloud-DokumentationCloud-StatusPilot in Vorbereitung
Auf dieser Seite
Anwendungen bereitstellen

Erste Anwendung bereitstellen

Deployment und Service anpassen, Manifest validieren und Rollout ohne öffentliche Freigabe prüfen.

AnleitungTechnische Referenz · nicht für Cloud-UI erforderlichLesezeit · ca.12 MinutenAktualisiert
Gültigkeit dieser AnleitungEnterprise-Referenz

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
cloud-demo.yaml · YAML
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

Vor dem Anwenden prüfen · POSIX
(
: "${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.

Geprüften Workload anwenden
(
: "${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
)
Häufige Fehler beheben →

4. Lokal testen und Ergebnis festhalten

Temporärer lokaler Zugriff
(
: "${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.

Optionale Beispielbereinigung · entfernt diese zwei Ressourcen
(
: "${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
)
Domains, Ingress & TLS →

Technische Referenzen (Englisch)

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.