Play im Google Cloud Kubernetes-Cluster
Kubernetes ist ein Container-Orchestrierungssystem. Es ermöglicht die einfache Bereitstellung, Verwaltung und Skalierung von containerisierten Anwendungen. Sein Hauptmerkmal ist die Fähigkeit, Cluster aus identischen Knoten einer einzigen Anwendung zu erstellen. Dies ermöglicht eine einfache Skalierbarkeit auch zwischen mehreren Hosts.
Konfigurieren von PlayFramework-Anwendungen
Um Ihren Play-Server in einem Kubernetes-Cluster laufen zu lassen, müssen Sie ihn containerisieren. Eine Anleitung zur Erstellung eines einfachen Docker-Images Ihrer Anwendung finden Sie in diesem Artikel.
Da wir Kubernetes Stateless Pods verwenden werden, sollte die gesamte Konfiguration für Ihre Anwendung in prod.conf
oder application.conf
im Image Ihres Servers (nicht im Volume) gespeichert werden.
Docker-Image in das Container-Repository verschieben
Um einen Kubernetes-Cluster in der Google Cloud zu erstellen, müssen Sie Ihr Image in ein Container-Repository auf Docker Hub, Google Container Registry oder etwas Ähnliches hochladen.
Nachdem Sie Ihren Container-Repository-Anbieter ausgewählt haben, müssen Sie Ihren Docker-Client mit dem Repository verbinden (die Authentifizierungsmethode kann variieren) und Ihr lokales Anwendungs-Image mit diesem Befehl dorthin übertragen:
docker push REPOSITORY_URL/IMAGE_NAME:TAG
Konfigurieren der Standardeinstellungen für gcloud
Es gibt zwei Möglichkeiten, wie Sie Google Cloud konfigurieren können. Die erste Möglichkeit ist die Verwendung von Cloud Shell, die mit Google Cloud CLI und kubectl
die über die Google-Konsole verfügbar sind, vorkonfiguriert ist. Die zweite Möglichkeit besteht in der Installation von Google Cloud CLI und kubectl
auf Ihrem lokalen Computer.
Das erste, was Sie konfigurieren müssen, ist Ihr Projekt. Sie müssen seinen Namen mit dem unten aufgeführten Befehl festlegen, wobei PROJECT_NAME
der Name Ihres Projekts ist.
gcloud config set project PROJECT_NAME
Als Nächstes müssen Sie die Berechnungszone und die Region mit den folgenden Befehlen festlegen. Der erste Befehl setzt die Zone auf COMPUTE_ZONE
. Der zweite Befehl setzt die Region auf COMPUTE_REGION
. Ersetzen Sie diese beiden Namen durch Ihre Zone und Region.
gcloud config set compute/zone COMPUTE_ZONE
gcloud config set compute/region COMPUTE_REGION
Kubernetes-Cluster erstellen
Nachdem Sie Ihr Projekt in gclound konfiguriert haben, ist der nächste Schritt die Erstellung eines Clusters. Für den Moment wird er aus 1 Knoten bestehen. Um dies a erreichen, müssen Sie den folgenden Befehl ausführen, wobei CLUSTER_NAME der Name Ihres Clusters ist.
gcloud container clusters create CLUSTER_NAME --num-nodes=1
Einsatz Ihrer Anwendung
Nachdem Sie nun Ihren Kubernetes-Cluster erstellt haben, müssen Sie kubectl
für einen zuvor vom Benutzer erstellten Cluster konfigurieren. Dazu führen Sie diesen Befehl aus:
gcloud container clusters get-credentials CLUSTER_NAME
Der nächste Schritt ist die Erstellung eines Deployments. Ein Deployment ist ein Kubernetes-Objekt, das eine zustandslose Anwendung darstellt, die aus mehreren identischen Pods besteht. Sie erstellen ein Deployment, indem Sie den folgenden Befehl ausführen, wobei DEPLOYMENT_NAME
ür den Namen Ihres Deployments steht (z. B. play-server) und IMAGE_URL
eine URL zum Repository mit Ihrem Bild und seinem angegebenen Tag ist.
kubectl create deployment DEPLOYMENT_NAME --image=IMAGE_URL
Der letzte Schritt besteht darin, Ihre Bereitstellung für andere Benutzer zugänglich zu machen. Um dies zu erreichen, müssen Sie Ihren Einsatz dem Internet zur Verfügung stellen, indem Sie ihn ausführen:
kubectl expose deployment DEPLOYMENT_NAME --type LoadBalancer --port 80 --target-port 9000
Mit diesem Befehl wird die Bereitstellung über Google Cloud Load Balancer an Port 80 – dem Standard-Http-Port – freigegeben. Wir müssen target-port
, festlegen, damit der an Port 80 eingehende Datenverkehr an Port 9000 der Anwendung weitergeleitet wird, der ein Standardport für Play-Anwendungen ist.
Validierung
Um zu überprüfen, ob Ihre Anwendung läuft, sollten Sie sie ausführen:
kubectl get pods
Sie sollten einen DEPLOYMENT_NAME
Pod laufen sehen.
Für den Zugriff auf Ihre Anwendung benötigen Sie die externe IP-Adresse. Sie sollten sie finden, indem Sie sie ausführen:
kubectl get service DEPLOYMENT_NAME
Jetzt können Sie sie kopieren und in die URL-Leiste in Ihrem Browser einfügen. Wenn alles richtig konfiguriert wurde, sollten Sie Ihre Play-App sehen.
Nebenbemerkung
Alle Befehle, diekubectl
verwenden, sind allgemeine Kubernetes-Befehle und sollten mit allen anderen Kubernetes-Anbietern wie AWS, Digital Ocean oder lokal gehosteten Anbietern wie Minikube funktionieren.
Befehle, die gcloud
verwenden, sind spezifisch für Google Cloud.