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.