Zum Hauptinhalt springen

Tutorial - Bereitstellen Ihrer ersten Anwendung

Ziele

Dieses Tutorial führt Sie Schritt für Schritt durch Ihre erste Bereitstellung auf einem Managed Kubernetes-Cluster. Nach Abschluss dieses Leitfadens haben Sie:

  • Eine einfache Webanwendung bereitgestellt.
  • Diese Anwendung innerhalb des Clusters über einen Service verfügbar gemacht.
  • Die Anwendung über einen Ingress aus dem Internet zugänglich gemacht.

Voraussetzungen

  • Sie haben Ihren Cluster-Zugriff wie im Schnellstartleitfaden beschrieben konfiguriert.
  • Sie verfügen über einen Namespace, für den Sie Berechtigungen zum Bereitstellen haben. In diesem Tutorial verwenden wir einen Namespace mit dem Namen hello-world.

Schritt 1: Namespace erstellen

Falls noch nicht geschehen, erstellen Sie einen Namespace, um Ihre Anwendung zu isolieren.

kubectl create namespace hello-world

Schritt 2: Bereitstellen einer "Hello World"-Anwendung

Wir werden eine Beispielanwendung bereitstellen, die eine einfache Webseite anzeigt.

  1. Erstellen Sie eine Datei mit dem Namen deployment.yaml mit folgendem Inhalt:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: hello-world-deployment
    namespace: hello-world
    labels:
    app: hello-world
    spec:
    replicas: 2
    selector:
    matchLabels:
    app: hello-world
    template:
    metadata:
    labels:
    app: hello-world
    spec:
    containers:
    - name: hello-world
    image: nginxdemos/hello:plain-text
    ports:
    - containerPort: 80
  2. Wenden Sie dieses Manifest auf Ihren Cluster an:

    kubectl apply -f deployment.yaml
  3. Überprüfen Sie, ob die Bereitstellung erstellt wurde und die Pods ausgeführt werden:

    kubectl get deployment -n hello-world
    # Vous devriez voir votre déploiement avec 2/2 replicas prêts.
    NAME READY UP-TO-DATE AVAILABLE AGE
    hello-world-deployment 2/2 2 2 102s

    kubectl get pods -n hello-world
    # Vous devriez voir deux pods avec le statut "Running".
    NAME READY STATUS RESTARTS AGE
    hello-world-deployment-669dfbd799-294zz 1/1 Running 0 2m21s
    hello-world-deployment-669dfbd799-plcbg 1/1 Running 0 2m21s

Schritt 3: Anwendung im Cluster verfügbar machen (Service)

Um es den verschiedenen Komponenten des Clusters zu ermöglichen, mit unserer Anwendung zu kommunizieren, müssen wir einen Service erstellen.

  1. Erstellen Sie eine Datei mit dem Namen service.yaml :

    apiVersion: v1
    kind: Service
    metadata:
    name: hello-world-service
    namespace: hello-world
    spec:
    selector:
    app: hello-world
    ports:
    - protocol: TCP
    port: 80
    targetPort: 80
    type: ClusterIP
  2. Wenden Sie das Manifest an :

    kubectl apply -f service.yaml

    Ihre Anwendung ist jetzt über den Namen hello-world-service.hello-world von jedem anderen Pod im Cluster aus erreichbar.

Schritt 4: Die Anwendung im Internet verfügbar machen (Ingress)

Um unseren Dienst im Internet verfügbar zu machen, verwenden wir eine Ingress-Ressource. Das Managed-Kubernetes-Angebot stellt mehrere vorkonfigurierte ingressClassName-Werte bereit. Wir verwenden nginx-external für eine öffentliche Erreichbarkeit.

  1. Erstellen Sie eine Datei ingress.yaml. Denken Sie daran, votre-cluster-id durch die ID Ihres Clusters zu ersetzen (z. B. ctodev).

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: hello-world-ingress
    namespace: hello-world
    spec:
    ingressClassName: nginx-external
    rules:
    - host: "hello-world.external.votre-cluster-id.mk.ms-cloud-temple.com" # changez moi
    http:
    paths:
    - path: /
    pathType: Prefix
    backend:
    service:
    name: hello-world-service
    port:
    number: 80
  2. Wenden Sie das Manifest an:

    kubectl apply -f ingress.yaml

Schritt 5: Zugriff überprüfen

Ein DNS-Eintrag "*" leitet bereits alle URLs, die auf ".external.votre-cluster-id.mk.ms-cloud-temple.com" enden, an die IP des "external"-Ingress weiter. Anwendungen, die unter diesem DNS-Suffix veröffentlicht werden, sind somit direkt erreichbar.

curl http://hello-world.external.votre-cluster-id.mk.ms-cloud-temple.com

Sie sollten eine Antwort vom Demo-NGINX-Server erhalten.

StatusCode : 200
StatusDescription : OK
Content : Server address: 10.247.1.223:80
Server name: hello-world-deployment-669dfbd799-plcbg
Date: 29/Oct/2025:15:40:04 +0000
URI: /
Request ID: 2df985e0630c3a123b5cde23b687a033

RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 170
Cache-Control: no-cache
Content-Type: text/plain
Date: Wed, 29 Oct 2025 15:40:04 GMT
Expires: Wed, 29 Oct 2025 15:40:03 GMT
Server: ng...

⚠[Pour aller plus loin : la sécurité en production] Dieses Tutorial hat Ihnen die Grundlagen der Bereitstellung gezeigt. Für eine Produktionsumgebung ist es entscheidend, zusätzliche Sicherheitsmaßnahmen zu ergreifen:

  • Verwenden Sie sichere Images: Bevorzugen Sie Images aus Ihrem sicheren Unternehmens-Registry wie Harbor gegenüber öffentlichen Images.
  • Kontrollieren Sie den Netzwerkverkehr: Implementieren Sie NetworkPolicies, um die Kommunikation auf die für Ihre Anwendungen notwendigen Datenströme zu beschränken.
  • Wenden Sie Governance-Richtlinien an: Verwenden Sie Tools wie Kyverno, um Sicherheitsregeln durchzusetzen (z. B. "root"-Container verbieten, requests und limits für Ressourcen vorschreiben usw.).
  • Wenden Sie Pod Disruption Budgets an: Ein PDB stellt sicher, dass Ihre Anwendungen jederzeit verfügbar bleiben.

Bereinigung

Um alle während dieses Tutorials erstellten Ressourcen zu löschen, können Sie einfach den Namespace löschen:

kubectl delete namespace hello-world

Herzlichen Glückwunsch, Sie haben Ihre erste Anwendung auf Managed Kubernetes bereitgestellt und freigegeben!