Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Diese Seite ergänzt die Hauptseite zum Erstellen von Umgebungen. Hier wird gezeigt, wie Sie in einem vorhandenen Google Cloud Projekt mit Terraformeine Managed Airflow-Umgebung und ein nutzerverwaltetes Dienstkonto für diese Umgebung einrichten. Sie können diese Seite als Ausgangspunkt verwenden und bei Bedarf weitere Konfigurationsparameter für Ihre Umgebung hinzufügen.
Terraform-Module für Managed Airflow
Google verwaltet den Terraform-Anbieter für Google Cloud, der die google_composer_environment-Ressource enthält. Dies ist das offiziell unterstützte Modul für Terraform.
Es gibt weitere Terraform-Module, die von der Open-Source-Community verwaltet werden. Wenn Sie Probleme mit solchen Modulen haben, können Sie in den entsprechenden GitHub-Repositories Probleme erstellen. Ein Beispiel für ein Open-Source-Projekt, das auf GitHub verwaltet wird, ist das Modul terraform-google-composer, das Teil der Terraform-Blaupausen und ‑Module für Google Cloud ist. Google trägt zu diesem Projekt bei, verwaltet das Modul aber nicht und es steht in keiner Beziehung zum Terraform-Anbieter für Google Cloud.
Hinweis
In dieser Anleitung wird davon ausgegangen, dass Sie ein Google Cloud Projekt mit konfigurierter Abrechnung haben:
- Sie können ein vorhandenes Projekt verwenden.
- Sie können ein neues Projekt erstellen über die Google Cloud Console, die Google Cloud CLI, die API oder eine Python-Clientbibliothek.
- Sie können Ihr Projekt mit Terraform erstellen und verwalten. Weitere Informationen finden Sie in der Terraform-Dokumentation zur
google_projectRessource.
Authentifizieren mit Google Cloud
Führen Sie Folgendes aus, um sich mit Google Cloudzu 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. Ihre Managed Airflow-Umgebung verwendet diese Region.
Der Anbieter google-beta unterstützt Managed Airflow-Funktionen, die sich in der Vorschauphase befinden. Wenn Sie nur GA-Funktionen von Managed Airflow verwenden möchten, verwenden Sie den google Anbieter anstelle von google-beta.
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
// this flag is introduced in 5.39.0 version of Terraform. If set to true it will
//prevent you from disabling composer_api through Terraform if any environment was
//there in the last 30 days
check_if_service_has_usage_on_destroy = true
}
Dienstkonto für eine Umgebung in Ihrem Projekt erstellen
In dieser Anleitung wird gezeigt, wie Sie ein Dienstkonto für eine Umgebung erstellen, das alle erforderlichen Berechtigungen zum Ausführen einer Managed Airflow-Umgebung hat.
Wir empfehlen dringend, ein nutzerverwaltetes Dienstkonto für Ihre Managed Airflow-Umgebungen einzurichten, das nur die Berechtigungen hat, die zum Ausführen Ihrer Umgebung und von Vorgängen in Ihren DAGs erforderlich sind, wie in dieser Anleitung beschrieben.
Das Dienstkonto Ihrer Umgebung benötigt möglicherweise zusätzliche Berechtigungen, um auf andere Ressourcen in Ihrem Projekt zuzugreifen. Wenn Ihre DAGs beispielsweise Daten in BigQuery übertragen, benötigt dieses Konto möglicherweise Berechtigungen oder Rollen, die speziell für BigQuery gelten.
Definieren Sie ein benutzerdefiniertes Dienstkonto mit den folgenden Rollen und Berechtigungen:
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 Managed Airflow-Dienstkonto gewähren
Fügen Sie der Zulassungsrichtlinie für das Dienstkonto Ihrer Umgebung eine neue Rollenbindung hinzu .
Fügen Sie das Managed Airflow-Dienst-Agent-Konto als neuen Prinzipal zum Dienstkonto Ihrer Umgebung hinzu und gewähren Sie ihm die Rolle Dienst-Agent-Erweiterung für die Cloud Composer v2 API.
Verwenden Sie das folgende Beispiel nur, wenn Sie Terraform zum Definieren der Zulassungsrichtlinie Ihres Projekts verwenden. Fügen Sie ansonsten diese Bindung mithilfe anderer 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, die ein benutzerdefiniertes Dienstkonto verwendet. 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.17.0-airflow-2.11.1"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Vollständiges Terraform-Skript
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
// this flag is introduced in 5.39.0 version of Terraform. If set to true it will
//prevent you from disabling composer_api through Terraform if any environment was
//there in the last 30 days
check_if_service_has_usage_on_destroy = true
}
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.17.0-airflow-2.11.1"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Nächste Schritte
Auf anderen Dokumentationsseiten finden Sie Informationen zum Konfigurieren Ihrer Umgebung mit Terraform. Beispiel:
- Umgebungen erstellen
- Airflow-Konfigurationsoptionen überschreiben
- Umgebungsvariablen festlegen
- Python-Abhängigkeiten installieren
- Umgebungen skalieren