Entwurf erstellen und hochladen

Ein Blueprint ist eine Terraform-Konfiguration, die als OCI-Image (Open Container Initiative) verpackt ist. Die Terraform-Konfiguration gibt die Infrastruktur und Anwendung an, die von App Lifecycle Manager bereitgestellt werden Google Cloud.

Auf dieser Seite wird beschrieben, wie Sie aus vorhandenen Terraform-Konfigurationen ein OCI-Image erstellen und diese in App Lifecycle Manager hochladen.

Weitere Informationen zu diesen Terraform-Konfigurationen finden Sie unter Blueprints in App Lifecycle Manager.

Hinweis

  1. Achten Sie darauf, dass Sie App Lifecycle Manager aktiviert haben.
  2. Achten Sie darauf, dass Sie in dem Projekt, das Sie für App Lifecycle Manager verwenden, ein Artifact Registry-Repository haben, das auf das Docker-Format festgelegt ist. Weitere Informationen finden Sie unter Repository für App Lifecycle Manager erstellen.
  3. Identifizieren Sie die Terraform-Konfigurationen, die Sie mit App Lifecycle Manager bereitstellen möchten.

Blueprint erstellen und hochladen

Wenn Sie die Terraform-Konfigurationen Google Cloud mit App Lifecycle Manager bereitstellen möchten, müssen Sie Folgendes tun:

  • Verpacken Sie die Terraform-Konfigurationen in OCI-Images. Diese OCI-Images werden als Blueprints bezeichnet.
  • Fügen Sie diese OCI-Images in das Artifact Registry-Repository ein, das Sie identifiziert oder eingerichtet haben.

Je nachdem, wie Sie den Blueprint erstellen und hochladen möchten, können Sie alle Schritte manuell ausführen oder einige Schritte von App Lifecycle Manager ausführen lassen.

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 erstellt mit dem ZIP-Archiv das OCI-Image.

    Weitere Informationen finden Sie im folgenden Abschnitt: ZIP-Archiv hochladen.

  • Verbinden Sie ein Git-Repository mit den Terraform-Dateien. App Lifecycle Manager erstellt mit den Dateien das OCI-Image. 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: Mit einem Git-Repository verbinden.

  • Erstellen Sie das OCI-Image lokal und übertragen Sie es in das Repository in Artifact Registry.

    Weitere Informationen finden Sie im folgenden Abschnitt: Image manuell erstellen und übertragen.

  • Automatisieren Sie das Erstellen und Übertragen des OCI-Images in ein Repository in Artifact Registry. Wenn Sie diesen Prozess automatisieren, 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 einen Release oder eine Einheit erstellen. App Lifecycle Manager erstellt mit dem ZIP-Archiv das erforderliche OCI-Image.

So stellen Sie einen Blueprint mit einem ZIP-Archiv bereit:

  1. Wechseln Sie zum Terraform-Projektverzeichnis.
  2. Erstellen Sie ein ZIP-Archiv mit der Terraform-Konfiguration.
    • Achten Sie darauf, dass:
      • Das ZIP-Archiv enthält nur Ihre Terraform-Dateien. Beispiele: main.tf, variables.tf, outputs.tf, versions.tf und Module.
      • Das ZIP-Archiv enthält keine unnötigen Dateien, z. B. .git-Verzeichnisse oder ein Dockerfile.
    • Der Befehl zum Erstellen eines ZIP-Archivs kann so aussehen: zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
  3. Laden Sie das ZIP-Archiv hoch, wenn Sie einen Release oder eine Einheit erstellen.

App Lifecycle Manager erstellt mit dem ZIP-Archiv das erforderliche OCI-Image 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 erstellt mit den Dateien das erforderliche OCI-Image, wenn Sie eine Einheit oder einen Release erstellen.

So stellen Sie einen Blueprint mit einem Git-Repository bereit:

  1. Achten Sie darauf, dass sich Ihre Terraform-Dateien im Stammverzeichnis Ihres Git-Repositorys befinden.
  2. Verbinden Sie Ihr Git-Repository mit App Lifecycle Manager, wenn Sie einen Release 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 erstellt mit den Terraform-Dateien aus dem Git-Repository das erforderliche OCI-Image und überträgt es in das Artifact Registry-Repository.

Durch diese Integration wird die Blueprint-Erstellung automatisiert, wenn Sie Ihren Terraform-Code in Ihrem Repository aktualisieren. Wenn es Änderungen im verknüpften Git-Repository gibt, erstellt App Lifecycle Manager mit den geänderten Dateien automatisch ein neues OCI-Image und überträgt es dann in das Artifact Registry-Repository.

Image manuell erstellen und übertragen

Mit dieser Methode haben Sie detaillierte Kontrolle über die Blueprint-Erstellung.

So erstellen Sie einen Blueprint manuell:

  1. Erstellen Sie im Stammverzeichnis Ihrer Terraform-Dateien eine Datei mit dem Namen Dockerfile und dem folgenden Inhalt:

    # syntax=docker/dockerfile:1-labs
    FROM scratch
    COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /
    

    Dieses Dockerfile verwendet ein minimales Basis-Image (scratch). Fügen Sie dem Befehl dockerignore hinzu, um irrelevante Dateien auszuschließen, z. B.:

    • das Dockerfile selbst
    • das .git-Verzeichnis
    • die Datei .gitignore
  2. Wenn Sie keinen Docker-Builder haben, erstellen Sie mit docker buildx einen docker-container-Builder mit dem folgenden Befehl:

    docker buildx create --name container --driver=docker-container
    
  3. Führen Sie den folgenden Befehl docker buildx build in Ihrem Terraform-Verzeichnis aus, um den Blueprint zu erstellen und in 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. latest oder v1.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 kann 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 aus, wenn Sie einen Release oder wenn Sie eine Einheit erstellen.

Blueprint-Erstellung automatisieren

Sie können die Erstellung des OCI-Images und die Übertragung in Artifact Registry mit Cloud Build automatisieren. Sie können einen Trigger einrichten, sodass das OCI-Image automatisch erstellt und in Artifact Registry übertragen wird, wenn der Terraform-Code geändert wird.

So richten Sie diese Automatisierung ein:

  1. 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_ONLY
    

    Ersetzen 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 Dienstkonten für App Lifecycle Manager
    • 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. latest oder v1.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.
  2. Starten Sie den Cloud Build-Job mit dem Befehl gcloud builds submit im Verzeichnis mit der Datei cloudbuild.yaml:

    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-Image.
    • TAG: Ein Tag für Ihre Image-Version (z. B. latest oder v1.0.0). Wenn Sie ein aussagekräftiges Tag auswählen, können Sie Versionen des Blueprints effektiv verwalten.
  3. Sie können einen Trigger einrichten, sodass das OCI-Image automatisch erstellt und in 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 aus, wenn Sie einen Release oder wenn Sie eine Einheit erstellen.

Nächste Schritte