Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Diese Seite ist eine Ergänzung zur Hauptseite über Umgebungen erstellen Es zeigt, wie ein Cloud Composer-Umgebung und ein nutzerverwaltetes Dienstkonto in einem vorhandenen Google Cloud-Projekt mit Terraform: Sie können diese Seite als Einstieg verwenden und dann weitere hinzufügen Konfigurationsparameter für Ihre Umgebung.
Hinweise
In diesem Leitfaden wird davon ausgegangen, dass Sie ein Google Cloud-Projekt mit konfigurierte Abrechnung:
- Sie können ein vorhandenes Projekt verwenden.
- Sie können ein neues Projekt erstellen mit der Google Cloud Console, der Google Cloud CLI, API oder einer Python-Clientbibliothek.
- Sie können Ihr Projekt mit Terraform erstellen und verwalten. Weitere Informationen
finden Sie in der Terraform-Dokumentation
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
Vorhandene Projekt-ID angeben und eine Standardregion für Ressourcen. Mein Cloud Composer Umgebung verwendet diese Region.
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 im Projekt erstellen
Standardmäßig verwenden Cloud Composer-Umgebungen die Standardeinstellung Compute Engine-Konto. In diesem Leitfaden wird ein weiterer Ansatz aufgezeigt: Erstellen eines neuen Dienstkontos, das alle erforderlichen Berechtigungen zum Ausführen eines Cloud Composer-Umgebung.
Definieren Sie ein benutzerdefiniertes Dienstkonto mit den folgenden Rollen und Berechtigungen. Für 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
Dem Dienstkonto der Umgebung eine neue Rollenbindung hinzufügen allow-Richtlinie
Sie fügen das Cloud Composer-Dienst-Agent-Konto als neues Hauptkonto hinzu im Dienstkonto Ihrer Umgebung und gewähren Sie die Cloud Composer v2 API Dienst-Agent-Erweiterung.
Wenn Sie die Zulassungsrichtlinie Ihres Projekts nicht mit Terraform definieren, nicht das folgende Beispiel verwenden. Fügen Sie diese Bindung stattdessen mit anderen .
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. Sie können weitere Parameter hinzufügen, um andere Konfigurationen Parameter Ihrer Umgebung, z. B. benutzerdefinierte Skalierung und Leistung 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.8.6-airflow-2.7.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.8.6-airflow-2.7.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.8.6-airflow-2.7.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Nächste Schritte
Weitere Informationen zum Konfigurieren des Terraform-Umgebung ausführen. Beispiel:
- Umgebungen erstellen
- Airflow-Konfigurationsoptionen überschreiben
- Umgebungsvariablen festlegen
- Python-Abhängigkeiten installieren
- Umgebungen skalieren