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.
-
Erstellen Sie eine Datei mit dem Namen
deployment.yamlmit folgendem Inhalt:apiVersion: apps/v1kind: Deploymentmetadata:name: hello-world-deploymentnamespace: hello-worldlabels:app: hello-worldspec:replicas: 2selector:matchLabels:app: hello-worldtemplate:metadata:labels:app: hello-worldspec:containers:- name: hello-worldimage: nginxdemos/hello:plain-textports:- containerPort: 80 -
Wenden Sie dieses Manifest auf Ihren Cluster an:
kubectl apply -f deployment.yaml -
Ü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 AGEhello-world-deployment 2/2 2 2 102skubectl get pods -n hello-world# Vous devriez voir deux pods avec le statut "Running".NAME READY STATUS RESTARTS AGEhello-world-deployment-669dfbd799-294zz 1/1 Running 0 2m21shello-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.
-
Erstellen Sie eine Datei mit dem Namen
service.yaml:apiVersion: v1kind: Servicemetadata:name: hello-world-servicenamespace: hello-worldspec:selector:app: hello-worldports:- protocol: TCPport: 80targetPort: 80type: ClusterIP -
Wenden Sie das Manifest an :
kubectl apply -f service.yamlIhre Anwendung ist jetzt über den Namen
hello-world-service.hello-worldvon 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.
-
Erstellen Sie eine Datei
ingress.yaml. Denken Sie daran,votre-cluster-iddurch die ID Ihres Clusters zu ersetzen (z. B.ctodev).apiVersion: networking.k8s.io/v1kind: Ingressmetadata:name: hello-world-ingressnamespace: hello-worldspec:ingressClassName: nginx-externalrules:- host: "hello-world.external.votre-cluster-id.mk.ms-cloud-temple.com" # changez moihttp:paths:- path: /pathType: Prefixbackend:service:name: hello-world-serviceport:number: 80 -
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,
requestsundlimitsfü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!