Ein Blueprint ist eine Terraform-Konfiguration, die als Open Container Initiative-Image (OCI) verpackt ist. Die Terraform-Konfiguration gibt die Infrastruktur und Anwendung an, die App Lifecycle Manager auf Google Cloudbereitstellt.
Auf dieser Seite wird beschrieben, wie Sie ein OCI-Image aus vorhandenen Terraform-Konfigurationen erstellen und in App Lifecycle Manager hochladen.
Weitere Informationen zu diesen Terraform-Konfigurationen finden Sie unter Blueprints in App Lifecycle Manager.
Hinweis
- Aktivieren Sie App Lifecycle Manager.
- Prüfen Sie, ob Sie in dem Projekt, das Sie für App Lifecycle Manager verwenden, ein Artifact Registry-Repository haben, das auf das Docker-Format eingestellt ist. Weitere Informationen finden Sie unter Repository für App Lifecycle Manager erstellen.
- Geben Sie die Terraform-Konfigurationen an, die Sie mit App Lifecycle Manager bereitstellen möchten.
- Weitere Informationen dazu, wie Sie das SaaS-Angebot mithilfe von Blueprints modellieren, finden Sie unter Modell des SaaS-Angebots festlegen.
- Details zu den Anforderungen an die Terraform-Konfiguration finden Sie unter Blueprint-Anforderungen.
Entwurf erstellen und hochladen
Wenn Sie die Terraform-Konfigurationen mit App Lifecycle Manager auf Google Cloud bereitstellen möchten, müssen Sie Folgendes tun:
- Verpacken Sie die Terraform-Konfigurationen in OCI-Images. Diese OCI-Images werden als Blueprints bezeichnet.
- Speichern Sie diese OCI-Images im Artifact Registry-Repository, das Sie ermittelt oder eingerichtet haben.
Je nachdem, wie Sie den Blueprint erstellen und hochladen, können Sie alle Schritte manuell ausführen oder App Lifecycle Manager kann einige der Schritte für Sie übernehmen.
Sie können das OCI-Image mit einer der folgenden Methoden erstellen und in das Repository hochladen:
Laden Sie ein ZIP-Archiv hoch, das die Terraform-Konfiguration enthält. App Lifecycle Manager verwendet das ZIP-Archiv, um das OCI-Image zu erstellen.
Weitere Informationen finden Sie im folgenden Abschnitt: ZIP-Archiv hochladen.
Verbinden Sie ein Git-Repository, das die Terraform-Dateien enthält. App Lifecycle Manager verwendet die Dateien zum Erstellen des OCI-Images. App Lifecycle Manager verwendet dann Cloud Build, um den Blueprint zu erstellen und hochzuladen, wenn Sie Ihr Repository aktualisieren.
Weitere Informationen finden Sie im folgenden Abschnitt: Verbindung zu einem Git-Repository herstellen.
Erstellen Sie das OCI-Image lokal und übertragen Sie es per Push in das Repository in Artifact Registry.
Weitere Informationen finden Sie im folgenden Abschnitt: Image manuell erstellen und per Push übertragen.
Erstellung und Push des OCI-Images in ein Repository in Artifact Registry automatisieren Durch die Automatisierung dieses Prozesses können Sie App Lifecycle Manager in eine CI/CD-Pipeline einbinden.
Weitere Informationen finden Sie im folgenden Abschnitt: Blueprint-Erstellung automatisieren.
ZIP-Archiv hochladen
Sie können ein ZIP-Archiv der Terraform-Dateien erstellen. Sie laden dieses Archiv in App Lifecycle Manager hoch, wenn Sie ein Release oder einen Einheitentyp erstellen. App Lifecycle Manager verwendet das ZIP-Archiv, um das erforderliche OCI-Image zu erstellen.
So stellen Sie einen Blueprint über ein ZIP-Archiv bereit:
- Wechseln Sie zum Terraform-Projektverzeichnis.
- Erstellen Sie ein ZIP-Archiv mit der Terraform-Konfiguration.
- Achten Sie auf Folgendes:
- Das ZIP-Archiv enthält nur Ihre Terraform-Dateien. Beispiele:
main.tf,variables.tf,outputs.tf,versions.tfund Module. - Das ZIP-Archiv enthält keine unnötigen Dateien, z. B.
.git-Verzeichnisse oder ein Dockerfile.
- Das ZIP-Archiv enthält nur Ihre Terraform-Dateien. Beispiele:
- Der Befehl zum Erstellen eines ZIP-Archivs kann so aussehen:
zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
- Achten Sie auf Folgendes:
- Laden Sie das ZIP-Archiv hoch, wenn Sie einen Release erstellen oder eine Art von Einheit erstellen.
App Lifecycle Manager verwendet das ZIP-Archiv, um das erforderliche OCI-Image zu erstellen, und überträgt es in das Artifact Registry-Repository.
Mit einem Git-Repository verbinden
Wenn Sie Ihre Terraform-Konfiguration in einem Git-Repository speichern, können Sie App Lifecycle Manager mit diesem Repository verbinden. App Lifecycle Manager verwendet die Dateien, um das erforderliche OCI-Image zu erstellen, wenn Sie einen Einheitentyp oder ein Release erstellen.
So stellen Sie einen Blueprint über ein Git-Repository bereit:
- Achten Sie darauf, dass sich Ihre Terraform-Dateien im Stammverzeichnis Ihres Git-Repositorys befinden.
- Stellen Sie eine Verbindung zu Ihrem Git-Repository her, wenn Sie ein Release erstellen oder wenn Sie eine Einheit erstellen.
App Lifecycle Manager verwendet Developer Connect, um eine Verbindung zum Git-Repository herzustellen. Weitere Informationen zu Developer Connect finden Sie in der Developer Connect-Dokumentation.
App Lifecycle Manager verwendet die Terraform-Dateien aus dem Git-Repository, um das erforderliche OCI-Image zu erstellen und in das Artifact Registry-Repository zu übertragen.
Diese Integration automatisiert die Erstellung von Blueprints, wenn Sie Ihren Terraform-Code in Ihrem Repository aktualisieren. Wenn es Änderungen im verknüpften Git-Repository gibt, verwendet App Lifecycle Manager die geänderten Dateien, um automatisch ein neues OCI-Image zu erstellen, und überträgt es dann in das Artifact Registry-Repository.
Image manuell erstellen und übertragen
Mit dieser Methode haben Sie die Möglichkeit, den Prozess der Blueprint-Erstellung genau zu steuern.
So erstellen Sie einen Blueprint manuell:
Erstellen Sie im Stammverzeichnis Ihrer Terraform-Dateien eine Datei namens
Dockerfilemit folgendem Inhalt:# syntax=docker/dockerfile:1-labs FROM scratch COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /In diesem
Dockerfilewird ein minimales Basis-Image (scratch) verwendet. Erwägen Sie,dockerignorein den Befehl aufzunehmen, um irrelevante Dateien auszuschließen, z. B.:- die
Dockerfileselbst - das Verzeichnis
.git - die Datei
.gitignore
- die
Wenn Sie keinen Docker-Builder haben, erstellen Sie einen
docker-container-Builder mitdocker buildxmit dem folgenden Befehl:docker buildx create --name container --driver=docker-containerFühren Sie den folgenden
docker buildx build-Befehl in Ihrem Terraform-Verzeichnis aus, um den Blueprint zu erstellen und per Push in die Artifact Registry zu übertragen:IMAGE_NAME=us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG ENGINE_TYPE=inframanager ENGINE_VERSION=TERRAFORM_VERSION docker buildx build -t $IMAGE_NAME \ --builder=container \ --push \ --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \ --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \ --provenance=false .Ersetzen Sie Folgendes:
PROJECT_ID: Ihre Projekt-ID.REPOSITORY_NAME: Der Name Ihres Artifact Registry-Repositorys.IMAGE_NAME: Ein Name für Ihr Blueprint-Image.TAG: Ein Tag für Ihre Image-Version (z. B.latestoderv1.0.0). Wenn Sie ein aussagekräftiges Tag auswählen, können Sie Versionen des Blueprints effektiv verwalten.TERRAFORM_VERSION: Die unterstützte Version von Terraform, die verwendet werden soll. Eine Liste der von Infrastructure Manager unterstützten Versionen finden Sie unter Unterstützte Terraform-Versionen.
Ein Befehl könnte so aussehen:
IMAGE_NAME=us-docker.pkg.dev/saas-docs-testing/blueprints-repo/my-terraform-blueprint:v1.0.0 ENGINE_TYPE=inframanager ENGINE_VERSION=1.5.7 docker buildx build -t $IMAGE_NAME \ --builder=container \ --push \ --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \ --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \ --provenance=false .
Das OCI-Image befindet sich im Artifact Registry-Repository.
Wenn Sie dieses Image mit App Lifecycle Manager verwenden möchten, wählen Sie es beim Erstellen einer Version oder beim Erstellen eines Gerätetyps aus.
Blueprint-Erstellung automatisieren
Sie können das Erstellen des OCI-Images und das Hochladen in Artifact Registry mit Cloud Build automatisieren. Sie können einen Trigger einrichten, damit das OCI-Image automatisch erstellt und per Push an Artifact Registry übertragen wird, wenn sich der Terraform-Code ändert.
So richten Sie diese Automatisierung ein:
Erstellen Sie im Stammverzeichnis Ihres Terraform-Repositorys eine
cloudbuild.yaml-Datei mit der folgenden Konfiguration:steps: - id: 'Create Dockerfile' name: 'bash' args: ['-c', 'echo -e "# syntax=docker/dockerfile:1-labs\nFROM scratch\nCOPY --exclude=Dockerfile.Blueprint --exclude=.git --exclude=.gitignore . /" > Dockerfile.Blueprint'] - id: 'Create docker-container driver' name: 'docker' args: ['buildx', 'create', '--name', 'container', '--driver=docker-container'] - id: 'Build and Push docker image' name: 'docker' args: ['buildx', 'build', '-t', '${_IMAGE_NAME}', '--builder=container', '--push', '--annotation', 'com.easysaas.engine.type=${_ENGINE_TYPE}','--annotation', 'com.easysaas.engine.version=${_ENGINE_VERSION}', '--provenance=false','-f', 'Dockerfile.Blueprint', '.'] serviceAccount: '${_SERVICE_ACCOUNT}' substitutions: _SERVICE_ACCOUNT: 'projects/PROJECT_ID/serviceAccounts/CLOUD_BUILD_SERVICE_ACCOUNT' _IMAGE_NAME: 'us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest' _ENGINE_TYPE: 'inframanager' _ENGINE_VERSION: 'TERRAFORM_VERSION' options: logging: CLOUD_LOGGING_ONLYErsetzen Sie Folgendes:
PROJECT_ID: Ihre Projekt-ID.CLOUD_BUILD_SERVICE_ACCOUNT: Der vollständige Name Ihres Cloud Build-Dienstkontos. Weitere Informationen zu App Lifecycle Manager und Dienstkonten finden Sie unter App Lifecycle Manager-Dienstkonten.REPOSITORY_NAME: Der Name Ihres Artifact Registry-Repositorys.IMAGE_NAME: Ein Name für Ihr Blueprint-Image.TAG: Ein Tag für Ihre Image-Version (z. B.latestoderv1.0.0). Wenn Sie ein aussagekräftiges Tag auswählen, können Sie Versionen des Blueprints effektiv verwalten.TERRAFORM_VERSION: Die unterstützte Version von Terraform, die verwendet werden soll. Eine Liste der von Infrastructure Manager unterstützten Versionen finden Sie unter Unterstützte Terraform-Versionen.
Starten Sie den Cloud Build-Job mit dem Befehl
gcloud builds submitaus dem Verzeichnis, das Ihrecloudbuild.yaml-Datei enthält:gcloud builds submit --config=cloudbuild.yaml --substitutions=_IMAGE_NAME='us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG'Ersetzen Sie Folgendes:
PROJECT_ID: Ihre Projekt-ID.REPOSITORY_NAME: Der Name Ihres Artifact Registry-Repositorys.IMAGE_NAME: Ein Name für Ihr Blueprint-ImageTAG: Ein Tag für Ihre Image-Version (z. B.latestoderv1.0.0). Wenn Sie ein aussagekräftiges Tag auswählen, können Sie Versionen des Blueprints effektiv verwalten.
Sie können einen Trigger so einrichten, dass das OCI-Image automatisch erstellt und per Push an Artifact Registry übertragen wird, wenn der Terraform-Code geändert wird. Weitere Informationen finden Sie unter Build-Trigger erstellen und verwalten.
Das OCI-Image befindet sich jetzt im Artifact Registry-Repository.
Wenn Sie dieses Image mit App Lifecycle Manager verwenden möchten, wählen Sie es beim Erstellen einer Version oder beim Erstellen eines Gerätetyps aus.
Nächste Schritte
- Weitere Informationen zu App Lifecycle Manager finden Sie im Überblick über App Lifecycle Manager.
- Weitere Informationen zu Blueprints finden Sie unter Blueprints in App Lifecycle Manager.
- Wenn Sie mit App Lifecycle Manager beginnen möchten, erstellen Sie zuerst ein SaaS-Angebot.