Cloud Composer 1 Cloud Composer 2
Diese Seite ist eine Ergänzung zur Hauptseite zum Erstellen von Umgebungen. Es wird gezeigt, wie Sie eine Cloud Composer-Umgebung und ein vom Nutzer verwaltetes Dienstkonto für diese Umgebung in einem vorhandenen Google Cloud-Projekt mit Terraform einrichten. Sie können diese Seite als Ausgangspunkt verwenden und bei Bedarf weitere Konfigurationsparameter für Ihre Umgebung hinzufügen.
Hinweise
In diesem Leitfaden wird davon ausgegangen, dass Sie ein Google Cloud-Projekt mit konfigurierter Abrechnung haben:
- Sie können ein vorhandenes Projekt verwenden.
- Sie können mit der Google Cloud Console, der Google Cloud CLI, der API oder einer Python-Clientbibliothek ein neues Projekt erstellen.
- Sie können Ihr Projekt mit Terraform erstellen und verwalten. Weitere Informationen finden Sie in der Terraform-Dokumentation für die Ressource
google_project
.
Mit Google Cloud authentifizieren
Führen Sie folgenden Befehl aus, um sich bei Google Cloud zu authentifizieren:
gcloud auth application-default login
Weitere Informationen zu diesem Befehl finden Sie unter gcloud auth application-default
.
Google-Anbieter in Terraform konfigurieren
Geben Sie Ihre vorhandene Projekt-ID und eine Standardregion für Ressourcen an. Diese Region wird von der Cloud Composer-Umgebung verwendet.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Cloud Composer API aktivieren
Aktivieren Sie die Cloud Composer API in Ihrem Projekt:
resource "google_project_service" "composer_api" {
provider = google-beta
project = "example-project"
service = "composer.googleapis.com"
// Disabling Cloud Composer API might irreversibly break all other
// environments in your project.
// This parameter prevents automatic disabling
// of the API when the resource is destroyed.
// We recommend to disable the API only after all environments are deleted.
disable_on_destroy = false
}
Benutzerdefiniertes Dienstkonto in Ihrem Projekt erstellen
Standardmäßig verwenden Cloud Composer-Umgebungen das Compute Engine-Standardkonto. In dieser Anleitung wird ein anderer Ansatz veranschaulicht. Dabei wird ein neues Dienstkonto erstellt, das alle erforderlichen Berechtigungen zum Ausführen einer Cloud Composer-Umgebung hat.
Definieren Sie ein benutzerdefiniertes Dienstkonto mit den folgenden Rollen und Berechtigungen. Weitere Informationen zu Berechtigungen für die Dienstkonten der Umgebung finden Sie unter Zugriffssteuerung mit IAM.
resource "google_service_account" "custom_service_account" {
provider = google-beta
account_id = "custom-service-account"
display_name = "Example Custom Service Account"
}
resource "google_project_iam_member" "custom_service_account" {
provider = google-beta
project = "example-project"
member = format("serviceAccount:%s", google_service_account.custom_service_account.email)
// Role for Public IP environments
role = "roles/composer.worker"
}
Erforderliche Berechtigungen für das Cloud Composer-Dienstkonto gewähren
Fügen Sie der Zulassungsrichtlinie des Dienstkontos Ihrer Umgebung eine neue Rollenbindung hinzu.
Sie fügen dem Dienstkonto Ihrer Umgebung das Konto des Cloud Composer-Dienst-Agents als neues Hauptkonto hinzu und weisen ihm die Rolle Dienst-Agent-Erweiterung für die Cloud Composer v2 API zu.
Verwenden Sie das folgende Beispiel nicht, wenn Sie die Zulassungsrichtlinie Ihres Projekts nicht mit Terraform definieren. Fügen Sie diese Bindung stattdessen mit anderen Methoden hinzu.
resource "google_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = google_service_account.custom_service_account.name
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}
Umgebung erstellen
Erstellen Sie Ihre Umgebung mit Terraform.
Das Beispiel zeigt, wie Sie eine Umgebung erstellen, in der das benutzerdefinierte Dienstkonto verwendet wird. Sie können weitere Parameter hinzufügen, die andere Konfigurationsparameter Ihrer Umgebung definieren, z. B. benutzerdefinierte Skalierungs- und Leistungsparameter, oder zusätzliche PyPI-Pakete.
Weitere Informationen zu anderen Parametern finden Sie unter Umgebungen erstellen.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.5.1-airflow-2.6.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Vollständiges Terraform-Skript (Standardparameter)
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
resource "google_project_service" "composer_api" {
provider = google-beta
project = "example-project"
service = "composer.googleapis.com"
// Disabling Cloud Composer API might irreversibly break all other
// environments in your project.
disable_on_destroy = false
}
resource "google_project_iam_member" "service_agent_role" {
provider = google-beta
project = "example-project"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
role = "roles/composer.ServiceAgentV2Ext"
}
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
// Add your environment configuration here
software_config {
image_version = "composer-2.5.1-airflow-2.6.3"
}
}
}
Vollständiges Terraform-Skript (benutzerdefiniertes Dienstkonto)
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
resource "google_project_service" "composer_api" {
provider = google-beta
project = "example-project"
service = "composer.googleapis.com"
// Disabling Cloud Composer API might irreversibly break all other
// environments in your project.
disable_on_destroy = false
}
resource "google_service_account" "custom_service_account" {
provider = google-beta
account_id = "custom-service-account"
display_name = "Example Custom Service Account"
}
resource "google_project_iam_member" "custom_service_account" {
provider = google-beta
project = "example-project"
member = format("serviceAccount:%s", google_service_account.custom_service_account.email)
// Role for Public IP environments
role = "roles/composer.worker"
}
resource "google_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = google_service_account.custom_service_account.name
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.5.1-airflow-2.6.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Nächste Schritte
Informationen zum Konfigurieren Ihrer Umgebung mit Terraform finden Sie auf anderen Dokumentationsseiten. Beispiel:
- Umgebungen erstellen
- Airflow-Konfigurationsoptionen überschreiben
- Umgebungsvariablen festlegen
- Python-Abhängigkeiten installieren
- Umgebungen skalieren
- Autorisierte Netzwerke konfigurieren