Einleitung

In diesem Artikel wird erklärt, wie man eine Phalcon PHP-Anwendung mithilfe von Gitlab CI/CD auf Google Cloud Run bereitstellen kann.

Innerhalb der Google Cloud Run-Umgebung können skalierbare Containeranwendungen online gebracht werden. Es stehen 2 Millionen kostenlose Anfragen pro Monat zur Verfügung, und man kann zusätzlich ein Guthaben von 300 USD von Google erhalten. Google Cloud Run integriert sich nahtlos in Gitlab CI/CD, sodass Entwickler Anwendungen in Docker-Containern einfach und schnell erstellen können.

Weitere Informationen finden Sie unter Google Cloud Run

Erstellen der Anwendung

In diesem Beispiel verwenden wir eine einfache REST-Anwendung auf Basis von Phalcon, nämlich die RSS Feed Aggregator API.

Um diese Anwendung zu nutzen, können Sie sie in ein neues Repository forken.

Das Repository enthält nicht nur den Quellcode, sondern auch die Gitlab-CI/CD Datei für die Build- und Deploy-Pipeline sowie einen vorkonfigurierten Docker Container.

Einstellungen in Gitlab

Service Account

Unter Operate -> Google Cloud -> Configuration haben Sie nun die Möglichkeit, einen neuen Service Account zu verknüpfen:

screen-1-service-account

Nach erfolgreichem Login in unser Google Cloud-Konto werden wir von Gitlab aufgefordert, unser Projekt anzugeben und festzulegen, für welche Referenzen (Branches/Tags) der Service Account gültig ist.

screen-2-service-account

Region

Anschließend legen wir unter Operate -> Google Cloud -> Configuration eine Region fest:

screen-3-region

Datenbank

Google Cloud SQL ist ein gemanagter, cloudbasierter Datenbankdienst von Google. Er ermöglicht die Verwaltung relationaler Datenbanken wie MySQL und PostgreSQL ohne die Notwendigkeit, sich um die zugrunde liegende Infrastruktur kümmern zu müssen. Google übernimmt die Verwaltung von Sicherheit, Skalierung und Hochverfügbarkeit, während Entwickler sich auf die Anwendungsentwicklung konzentrieren können.

Jetzt können wir unter Operate -> Google Cloud -> Databases eine Cloud SQL for MySQL-Datenbank erstellen.

screen-4-sql

Nun müssen wir einige weitere Fragen beantworten: das Google Cloud-Projekt, in dem die SQL-Datenbank erstellt werden soll, die gewünschten Referenzen, den Maschinentyp und die Datenbankversion.

Der gewählte Maschinentyp ist entscheidend für die entstehenden Kosten.

screen-5-sql

Umgebungsvariablen

Danach gehen wir zu Settings -> CI/CD -> Variables um die Variablen für die CI/CD-Umgebung zu definieren.

GOOGLE_IMAGE

Die Google Artifact Registry ist ein verwalteter Dienst von Google Cloud, der es Entwicklern ermöglicht, Container-Images und Pakete sicher zu speichern, zu verwalten und freizugeben. Dieser Dienst unterstützt verschiedene Paketmanager und Containerregistrar und bietet eine zuverlässige und skalierbare Lösung für die Verwaltung von Artefakten während des Entwicklungsprozesses.

Die Umgebungsvariable GOOGLE_IMAGE enthält die URL zu dem Artifact Repository innerhalb der Google Cloud. Um dies zu konfigurieren, wechseln wir zur Google Artifact Registry und erstellen ein neues Repository.

screen-6-artifact

Nach der Erstellung erhalten wir die URL, indem wir das Kopieren-Symbol verwenden. Die URL sieht dann folgendermaßen aus:

europe-west4-docker.pkg.dev/pazdzewicz-cloud/cloud-run-tutorial

screen-7-artifact

GOOGLE_ACCOUNT

Um Docker-Images in das Google Artifact Repository hochladen zu können, benötigen wir erneut ein Dienstkonto. Befolgen Sie dazu einfach diese Anleitung: Authentifizierung für Docker mittels Dienstkontoschlüssel einrichten

Den Inhalt der Datei schreiben Sie nun in die Umgebungsvariable GOOGLE_ACCOUNT

screen-8-google-account

GCP_ENV_MYSQL_DATABASE

Dort tragen wir den Datenbank Namen für die Anwendung ein. Wenn wir die Datenbank via Gitlab erstellt haben, geht dies relativ einfach. Dafür müssen wir gar nichts machen.

GCP_ENV_MYSQL_HOST

Dort tragen wir den Datenbank Server für die Anwendung ein. Wenn wir die Datenbank via Gitlab erstellt haben, geht dies relativ einfach. Dafür müssen wir gar nichts machen.

GCP_ENV_MYSQL_USER

Dort tragen wir den Datenbank Nutzer für die Anwendung ein. Wenn wir die Datenbank via Gitlab erstellt haben, geht dies relativ einfach. Dafür müssen wir gar nichts machen.

GCP_ENV_MYSQL_PASSWORD

Dort tragen wir das Passwort für den Datenbank Nutzer für die Anwendung ein. Wenn wir die Datenbank via Gitlab erstellt haben, geht dies relativ einfach. Dafür müssen wir gar nichts machen.

GCP_ENV_APPLICATION_PUBLIC_URL

Dort tragen wir die Public URL für die Anwendung ein.

GCP_CONTAINER_PORT

Dort tragen wir den Port für unsere Anwendung ein. Wenn nicht angegegeben wird 8080 genutzt.

Deployment

Nun haben wir alle Vorbereitungen für eine erfolgreiche Bereitstellung (Deployment) abgeschlossen und können die CI/CD-Pipeline auf dem master Branch ausführen.

screen-9-deployment

Und damit ist das Deployment abgeschlossen.

borat-success

Sie können das Ergebnis auch in Gitlab unter Operate -> Environments einsehen.

screen-10-environments

Durch einen Klick auf Open wird die Seite direkt in einem neuen Tab geöffnet.