Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Auf dieser Seite wird erläutert, wie Sie eine Cloud Composer-Umgebung erstellen.
- Weitere Informationen zu Umgebungen finden Sie unter Umgebungsarchitektur.
- Weitere Informationen zum Erstellen einer Umgebung mit Terraform finden Sie unter Umgebungen erstellen (Terraform).
Hinweis
Aktivieren Sie die Cloud Composer API. Eine vollständige Liste der von Cloud Composer verwendeten Dienste finden Sie unter Von Cloud Composer erforderliche Dienste.
Die Erstellung einer Umgebung dauert ungefähr 25 Minuten.
Wenn Sie eine Umgebung mit Terraform erstellen, muss das von Terraform verwendete Dienstkonto eine Rolle mit aktivierter
composer.environments.create
-Berechtigung haben.Weitere Informationen zum Dienstkonto für Terraform finden Sie in der Referenz zur Google-Anbieterkonfiguration.
Weitere Informationen zum Erstellen einer Cloud Composer-Umgebung mit Terraform finden Sie in der Terraform-Dokumentation.
Weitere Informationen zu zusätzlichen Parametern finden Sie in der Referenz zu Terraform-Argumenten.
Private IP-Adressen: Für das Erstellen einer Umgebung mit privaten IP-Adressen gelten bestimmte Netzwerk- und Peering-Anforderungen. Weitere Informationen finden Sie unter Private IP-Adresse konfigurieren.
Freigegebene VPC: Für die Verwendung der freigegebenen VPC mit Cloud Composer gelten bestimmte Netzwerkanforderungen. Informationen dazu finden Sie unter Freigegebene VPC konfigurieren.
VPC-SC: Informationen zum Bereitstellen von Cloud Composer-Umgebungen in einem Sicherheitsperimeter finden Sie unter VPC-SC konfigurieren. Bei der Verwendung mit Cloud Composer gelten für VPC Service Controls mehrere bekannte Einschränkungen.
Schritt 1: Dienstkonto einer Umgebung erstellen oder auswählen
Wenn Sie eine Umgebung erstellen, geben Sie ein Dienstkonto an. Dieses Dienstkonto wird als Dienstkonto der Umgebung bezeichnet. In Ihrer Umgebung wird dieses Dienstkonto für die meisten Vorgänge verwendet.
Das Dienstkonto für Ihre Umgebung ist kein Nutzerkonto. Ein Dienstkonto ist ein spezieller Kontotyp, der nicht von einer Person, sondern von einer Anwendung oder einer VM-Instanz verwendet wird.
Sie können das Dienstkonto Ihrer Umgebung später nicht mehr ändern.
Wenn Sie in Ihrem Projekt noch kein Dienstkonto für Cloud Composer-Umgebungen haben, erstellen Sie eines.
Unter Umgebungen erstellen (Terraform) finden Sie ein erweitertes Beispiel zum Erstellen eines Dienstkontos für Ihre Umgebung in Terraform.
So erstellen Sie ein neues Dienstkonto für Ihre Umgebung:
Erstellen Sie ein neues Dienstkonto, wie in der Dokumentation zur Identitäts- und Zugriffsverwaltung beschrieben.
Weisen Sie ihm eine Rolle zu, wie in der Identity and Access Management-Dokumentation beschrieben. Die erforderliche Rolle ist Composer-Worker (
composer.worker
).Wenn in Ihrer Umgebung Einschränkungen für den Ressourcenspeicherort verwendet werden oder PyPI-Pakete aus einem Artifact Registry-Repository oder aus einem privaten Repository installiert werden, weisen Sie dem nutzerverwalteten Dienstkonto, in dem Ihre Umgebung ausgeführt wird, die Rolle Nutzer des Dienstkontos (
iam.serviceAccountUser
) zu. Sowohl das Prinzipal als auch die Ressource sind dasselbe Dienstkonto.Wenn Sie auf andere Ressourcen in Ihrem Google Cloud Projekt zugreifen möchten, gewähren Sie diesem Dienstkonto zusätzliche Berechtigungen für den Zugriff auf diese Ressourcen. Die Rolle Composer-Worker (
composer.worker
) bietet in den meisten Fällen diese erforderlichen Berechtigungen. Fügen Sie diesem Dienstkonto nur dann zusätzliche Berechtigungen hinzu, wenn dies für den Betrieb Ihrer DAGs erforderlich ist.
Schritt 2: Grundlegende Einstellungen
In diesem Schritt wird eine Cloud Composer-Umgebung mit Standardparametern am angegebenen Speicherort erstellt.
Console
Rufen Sie in der Google Cloud Console die Seite Umgebung erstellen auf.
Geben Sie im Feld Name einen Namen für die Umgebung ein.
Der Name muss mit einem Kleinbuchstaben beginnen, gefolgt von bis zu 62 Kleinbuchstaben, Ziffern oder Bindestrichen. Das letzte Zeichen darf kein Bindestrich sein. Anhand des Umgebungsnamens werden Unterkomponenten für die Umgebung erstellt. Daher müssen Sie einen Namen angeben, der auch als Cloud Storage-Bucket-Name gültig ist. Eine Liste der Einschränkungen finden Sie in den Benennungsrichtlinien für Buckets.
Wählen Sie in der Drop-down-Liste Speicherort einen Speicherort für Ihre Umgebung aus.
Ein Standort ist die Region, in der sich die Umgebung befindet.
Wählen Sie in der Drop-down-Liste Image-Version ein Cloud Composer-Image mit der erforderlichen Version von Airflow aus.
Wählen Sie im Abschnitt Knotenkonfiguration in der Drop-down-Liste Dienstkonto ein Dienstkonto für Ihre Umgebung aus.
Wenn Sie noch kein Dienstkonto für Ihre Umgebung haben, lesen Sie den Hilfeartikel Dienstkonto einer Umgebung erstellen oder auswählen.
gcloud
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--service-account "SERVICE_ACCOUNT"
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.Der Name muss mit einem Kleinbuchstaben beginnen, gefolgt von bis zu 62 Kleinbuchstaben, Ziffern oder Bindestrichen. Das letzte Zeichen darf kein Bindestrich sein. Anhand des Umgebungsnamens werden Unterkomponenten für die Umgebung erstellt. Daher müssen Sie einen Namen angeben, der auch als Cloud Storage-Bucket-Name gültig ist. Eine Liste der Einschränkungen finden Sie in den Benennungsrichtlinien für Buckets.
LOCATION
durch die Region für die Umgebung.Ein Standort ist die Region, in der sich die Umgebung befindet.
SERVICE_ACCOUNT
durch das Dienstkonto für Ihre Umgebung.IMAGE_VERSION
durch den Namen eines Cloud Composer-Images.
Beispiel:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
"
API
Erstellen Sie eine API-Anfrage environments.create
. Geben Sie die Konfiguration in der Ressource Environment
an.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"imageVersion": "IMAGE_VERSION"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
PROJECT_ID
durch die Projekt-ID.LOCATION
durch die Region für die Umgebung.Ein Standort ist die Region, in der sich die Umgebung befindet.
ENVIRONMENT_NAME
durch den Namen der Umgebung.Der Name muss mit einem Kleinbuchstaben beginnen, gefolgt von bis zu 62 Kleinbuchstaben, Ziffern oder Bindestrichen. Das letzte Zeichen darf kein Bindestrich sein. Anhand des Umgebungsnamens werden Unterkomponenten für die Umgebung erstellt. Daher müssen Sie einen Namen angeben, der auch als Cloud Storage-Bucket-Name gültig ist. Eine Liste der Einschränkungen finden Sie in den Benennungsrichtlinien für Buckets.
IMAGE_VERSION
durch den Namen eines Cloud Composer-Images.SERVICE_ACCOUNT
durch das Dienstkonto für Ihre Umgebung.
Beispiel:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"softwareConfig": {
"imageVersion": "composer-1.20.12-airflow-1.10.15"
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Wenn Sie eine Umgebung mit Standardparametern an einem bestimmten Speicherort erstellen möchten, fügen Sie der Terraform-Konfiguration den folgenden Ressourcenblock hinzu und führen Sie terraform apply
aus.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
image_version = "IMAGE_VERSION"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.Der Name muss mit einem Kleinbuchstaben beginnen, gefolgt von bis zu 62 Kleinbuchstaben, Ziffern oder Bindestrichen. Das letzte Zeichen darf kein Bindestrich sein. Anhand des Umgebungsnamens werden Unterkomponenten für die Umgebung erstellt. Daher müssen Sie einen Namen angeben, der auch als Cloud Storage-Bucket-Name gültig ist. Eine Liste der Einschränkungen finden Sie in den Benennungsrichtlinien für Buckets.
LOCATION
durch die Region für die Umgebung.Ein Standort ist die Region, in der sich die Umgebung befindet.
IMAGE_VERSION
durch den Namen eines Cloud Composer-Images.SERVICE_ACCOUNT
durch das Dienstkonto für Ihre Umgebung.
Beispiel:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
image_version = "composer-1.20.12-airflow-1.10.15"
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Schritt 3: Optional: Parameter für die Umgebungsskalierung und Leistung konfigurieren
Um die Skalierungs- und Leistungskonfiguration für Ihre Umgebung festzulegen, geben Sie die Anzahl der Knoten im GKE-Cluster Ihrer Umgebung an und wählen Sie Maschinentypen für die Umgebungskomponenten aus.
Console
Auf der Seite Umgebung erstellen:
Im Abschnitt Knotenkonfiguration:
Geben Sie die Knotenzahl ein.
Die Knotenzahl ist die Anzahl der Google Kubernetes Engine-Knoten im Cluster der Umgebung. Standardmäßig haben Umgebungen drei Knoten.
Sie können diesen Wert ändern, nachdem Sie Ihre Umgebung erstellt haben.
Wählen Sie den Maschinentyp für die Knoten aus.
Der Maschinentyp für die Knoten ist der Compute Engine-Maschinentyp, der für Clusterinstanzen verwendet wird. Dieser Parameter bestimmt die Anzahl der CPUs und die Arbeitsspeicherkapazität für Ihre Umgebung. Der Standardmaschinentyp ist
n1-standard-1
.Wenn Sie diesen Wert ändern möchten, nachdem Sie Ihre Umgebung erstellt haben, müssen Sie den Umgebungscluster manuell neu konfigurieren.
Geben Sie die Laufwerksgröße ein.
Die Laufwerksgröße in GB für Umgebungsknoten. Jeder Knoten in Ihrer Umgebung verfügt über diesen Speicherplatz. Wählen Sie eine höhere Laufwerksgröße aus, wenn Sie eine große Datenmenge in Ordnern speichern möchten, die mit Umgebungs-VMs synchronisiert sind. Beispielsweise im Ordner
/data
des Buckets Ihrer Umgebung.Die Mindestgröße beträgt 30 GB. Die Standardgröße beträgt 100 GB. Sie können diesen Parameter nach dem Erstellen einer Umgebung nicht mehr ändern.
Wählen Sie die Anzahl der Planer aus.
In Ihrer Umgebung können mehrere Airflow-Planer gleichzeitig ausgeführt werden. Mit mehreren Planern lässt sich die Last auf verschiedene Planerinstanzen verteilen, um die Leistung und Zuverlässigkeit zu verbessern.
Durch die Erhöhung der Anzahl der Planer wird die Airflow-Leistung nicht immer verbessert. Wenn Sie beispielsweise nur einen Planer haben, ist die Leistung möglicherweise besser als zwei. Dies kann passieren, wenn der zusätzliche Planer nicht verwendet wird und somit Ressourcen Ihrer Umgebung verbraucht, ohne dass dies Auswirkungen auf die Gesamtleistung hat. Die tatsächliche Leistung des Planers hängt von der Anzahl der Airflow-Worker, der Anzahl der in der Umgebung ausgeführten DAGs und Aufgaben sowie der Konfiguration von Airflow und der Umgebung ab.
Wir empfehlen, mit zwei Planern zu beginnen und dann die Leistung Ihrer Umgebung zu überwachen. Wenn Sie die Anzahl der Planer ändern, können Sie Ihre Umgebung jederzeit wieder auf die ursprüngliche Anzahl von Planern skalieren.
Weitere Informationen zur Konfiguration mehrerer Planer finden Sie in der Airflow-Dokumentation.
Maximieren Sie das Element Netzwerk, Airflow-Konfigurationsüberschreibungen und zusätzliche Features.
Wählen Sie im Bereich Cloud SQL-Konfiguration die Option Cloud SQL-Maschinentyp aus.
Dieser Parameter bestimmt den Maschinentyp für die Cloud SQL-Instanz, auf der die Airflow-Datenbank ausgeführt wird. Der Standardmaschinentyp von Cloud SQL ist
db-n1-standard-2
.Wählen Sie im Bereich Webserverkonfiguration die Option Maschinentyp des Webservers aus.
Dieser Parameter bestimmt den Maschinentyp für die Compute Engine-Instanz, auf der der Airflow-Webserver ausgeführt wird.
Der Standardmaschinentyp des Webservers ist
composer-n1-webserver-2
.
gcloud
Beim Erstellen einer Umgebung steuern die folgenden Argumente die Skalierungs- und die Leistungsparameter der Umgebung:
--node-count
gibt die Anzahl der Knoten in der Umgebung an.Die Knotenzahl ist die Anzahl der Google Kubernetes Engine-Knoten im Cluster der Umgebung. Standardmäßig haben Umgebungen drei Knoten.
Sie können diesen Wert ändern, nachdem Sie Ihre Umgebung erstellt haben.
--scheduler-count
gibt die Anzahl der Planer in der Umgebung an.In Ihrer Umgebung können mehrere Airflow-Planer gleichzeitig ausgeführt werden. Mit mehreren Planern lässt sich die Last auf verschiedene Planerinstanzen verteilen, um die Leistung und Zuverlässigkeit zu verbessern.
Durch die Erhöhung der Anzahl der Planer wird die Airflow-Leistung nicht immer verbessert. Wenn Sie beispielsweise nur einen Planer haben, ist die Leistung möglicherweise besser als zwei. Dies kann passieren, wenn der zusätzliche Planer nicht verwendet wird und somit Ressourcen Ihrer Umgebung verbraucht, ohne dass dies Auswirkungen auf die Gesamtleistung hat. Die tatsächliche Leistung des Planers hängt von der Anzahl der Airflow-Worker, der Anzahl der in der Umgebung ausgeführten DAGs und Aufgaben sowie der Konfiguration von Airflow und der Umgebung ab.
Wir empfehlen, mit zwei Planern zu beginnen und dann die Leistung Ihrer Umgebung zu überwachen. Wenn Sie die Anzahl der Planer ändern, können Sie Ihre Umgebung jederzeit wieder auf die ursprüngliche Anzahl von Planern skalieren.
Weitere Informationen zur Konfiguration mehrerer Planer finden Sie in der Airflow-Dokumentation.
--disk-size
gibt die Laufwerksgröße für Umgebungs-VMs an.Die Laufwerksgröße in GB für Umgebungsknoten. Jeder Knoten in Ihrer Umgebung verfügt über diesen Speicherplatz. Wählen Sie eine höhere Laufwerksgröße aus, wenn Sie eine große Datenmenge in Ordnern speichern möchten, die mit Umgebungs-VMs synchronisiert sind. Beispielsweise im Ordner
/data
des Buckets Ihrer Umgebung.Die Mindestgröße beträgt 30 GB. Die Standardgröße beträgt 100 GB. Sie können diesen Parameter nach dem Erstellen einer Umgebung nicht mehr ändern.
--machine-type
gibt den Maschinentyp für Knoten-VMs an.Der Maschinentyp für die Knoten ist der Compute Engine-Maschinentyp, der für Clusterinstanzen verwendet wird. Dieser Parameter bestimmt die Anzahl der CPUs und die Arbeitsspeicherkapazität für Ihre Umgebung. Der Standardmaschinentyp ist
n1-standard-1
.Wenn Sie diesen Wert ändern möchten, nachdem Sie Ihre Umgebung erstellt haben, müssen Sie den Umgebungscluster manuell neu konfigurieren.
--cloud-sql-machine-type
gibt den Maschinentyp für die Cloud SQL-Instanz an.Dieser Parameter bestimmt den Maschinentyp für die Cloud SQL-Instanz, auf der die Airflow-Datenbank ausgeführt wird. Der Standardmaschinentyp von Cloud SQL ist
db-n1-standard-2
.--web-server-machine-type
gibt den Maschinentyp für die Airflow-Webserverinstanz an.Dieser Parameter bestimmt den Maschinentyp für die Compute Engine-Instanz, auf der der Airflow-Webserver ausgeführt wird.
Der Standardmaschinentyp des Webservers ist
composer-n1-webserver-2
.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--zone NODE_ZONE \
--node-count NODE_COUNT \
--scheduler-count SCHEDULER_COUNT \
--disk-size DISK_SIZE \
--machine-type NODE_MACHINE_TYPE \
--cloud-sql-machine-type SQL_MACHINE_TYPE \
--web-server-machine-type WS_MACHINE_TYPE
Ersetzen Sie:
NODE_COUNT
durch die Anzahl der Knoten.NODE_ZONE
durch die Compute Engine-Zone für Ihre Umgebungs-VMs.SCHEDULER_COUNT
durch die Anzahl der Planer.DISK_SIZE
durch die Laufwerksgröße für Umgebungs-VMs in GB.NODE_MACHINE_TYPE
durch den Maschinentyp für Knoten-VMs.SQL_MACHINE_TYPE
durch den Maschinentyp der Cloud SQL-Instanz.WS_MACHINE_TYPE
durch den Maschinentyp der Airflow-Webserverinstanz.
Beispiel:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--zone us-central1-a \
--node-count 6 \
--scheduler-count 1 \
--disk-size 50 \
--machine-type n1-standard-2 \
--cloud-sql-machine-type db-n1-standard-2 \
--web-server-machine-type composer-n1-webserver-2
API
Geben Sie beim Erstellen einer Umgebung in der Ressource Umgebung > Umgebungskonfiguration die Skalierungs- und Leistungsparameter der Umgebung an.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeCount": NODE_COUNT,
"nodeConfig": {
"machineType": "NODE_MACHINE_TYPE",
"diskSizeGb": DISK_SIZE,
"serviceAccount": "SERVICE_ACCOUNT"
},
"softwareConfig": {
"schedulerCount": SCHEDULER_COUNT
},
"databaseConfig": {
"machineType": "SQL_MACHINE_TYPE"
},
"webServerConfig": {
"machineType": "WS_MACHINE_TYPE"
}
}
}
Ersetzen Sie:
NODE_COUNT
durch die Anzahl der Knoten.DISK_SIZE
durch die Laufwerksgröße für Umgebungs-VMs in GB.NODE_MACHINE_TYPE
durch den Maschinentyp für Knoten-VMs Dieser Wert muss eine Zone für Ihre Umgebungs-VMs enthalten.SCHEDULER_COUNT
durch die Anzahl der Planer.SQL_MACHINE_TYPE
durch den Maschinentyp für die Cloud SQL-Instanz.WS_MACHINE_TYPE
durch den Maschinentyp für die Airflow-Webserverinstanz.
Beispiel:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeCount": 6,
"nodeConfig": {
"machineType": "projects/example-project/zones/us-central1-a/machineTypes/n1-standard-2",
"diskSizeGb": 50,
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
},
"softwareConfig": {
"schedulerCount": 1
},
"databaseConfig": {
"machineType": "db-n1-standard-2"
},
"webServerConfig": {
"machineType": "composer-n1-webserver-2"
}
}
}
Terraform
Beim Erstellen einer Umgebung steuern die folgenden Felder die Skalierungs- und die Leistungsparameter der Umgebung:
node_count
im Blocknode_config
gibt die Anzahl der Knoten in der Umgebung an.Die Knotenzahl ist die Anzahl der Google Kubernetes Engine-Knoten im Cluster der Umgebung. Standardmäßig haben Umgebungen drei Knoten.
Sie können diesen Wert ändern, nachdem Sie Ihre Umgebung erstellt haben.
disk_size_gb
im Blocknode_config
gibt die Laufwerksgröße für Umgebungs-VMs an.Die Laufwerksgröße in GB für Umgebungsknoten. Jeder Knoten in Ihrer Umgebung verfügt über diesen Speicherplatz. Wählen Sie eine höhere Laufwerksgröße aus, wenn Sie eine große Datenmenge in Ordnern speichern möchten, die mit Umgebungs-VMs synchronisiert sind. Beispielsweise im Ordner
/data
des Buckets Ihrer Umgebung.Die Mindestgröße beträgt 30 GB. Die Standardgröße beträgt 100 GB. Sie können diesen Parameter nach dem Erstellen einer Umgebung nicht mehr ändern.
machine_type
im Blocknode_config
gibt den Maschinentyp für Knoten-VMs an. Wenn Sie dieses Feld angeben, geben Sie auch im Feldzone
eine Compute Engine-Zone für Ihre Umgebungs-VMs an.Der Maschinentyp für die Knoten ist der Compute Engine-Maschinentyp, der für Clusterinstanzen verwendet wird. Dieser Parameter bestimmt die Anzahl der CPUs und die Arbeitsspeicherkapazität für Ihre Umgebung. Der Standardmaschinentyp ist
n1-standard-1
.Wenn Sie diesen Wert ändern möchten, nachdem Sie Ihre Umgebung erstellt haben, müssen Sie den Umgebungscluster manuell neu konfigurieren.
machine_type
im Blockdatabase_config
gibt den Maschinentyp für die Cloud SQL-Instanz an.Dieser Parameter bestimmt den Maschinentyp für die Cloud SQL-Instanz, auf der die Airflow-Datenbank ausgeführt wird. Der Standardmaschinentyp von Cloud SQL ist
db-n1-standard-2
.machine_type
im Blockweb_server_config
gibt den Maschinentyp für die Airflow-Webserverinstanz an.Dieser Parameter bestimmt den Maschinentyp für die Compute Engine-Instanz, auf der der Airflow-Webserver ausgeführt wird.
Der Standardmaschinentyp des Webservers ist
composer-n1-webserver-2
.Das Feld
scheduler_count
im Blocksoftware_config
gibt die Anzahl der Planer in Ihrer Umgebung an. Ihre Umgebung muss Airflow 2 verwenden.
resource "google_composer_environment" "example" {
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
node_count = NODE_COUNT
disk_size_gb = DISK_SIZE
machine_type = "NODE_MACHINE_TYPE"
zone = "NODE_ZONE"
service_account = "SERVICE_ACCOUNT"
}
software_config {
scheduler_count = SCHEDULER_COUNT
}
database_config {
machine_type = "SQL_MACHINE_TYPE"
}
web_server_config {
machine_type = "WS_MACHINE_TYPE"
}
}
}
Ersetzen Sie:
NODE_COUNT
durch die Anzahl der Knoten.DISK_SIZE
durch die Laufwerksgröße für Umgebungs-VMs in GB.NODE_MACHINE_TYPE
durch den Maschinentyp für Knoten-VMs.NODE_ZONE
durch die Compute Engine-Zone für Ihre Umgebungs-VMs.SCHEDULER_COUNT
durch die Anzahl der Planer.SQL_MACHINE_TYPE
durch den Maschinentyp für die Cloud SQL-Instanz.WS_MACHINE_TYPE
durch den Maschinentyp für die Airflow-Webserverinstanz.
Beispiel:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
node_count = 4
disk_size_gb = 100
zone = "us-central1-a"
machine_type = "n1-standard-2"
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
software_config {
scheduler_count = 2
}
database_config {
machine_type = "db-n1-standard-2"
}
web_server_config {
machine_type = "composer-n1-webserver-2"
}
}
}
Schritt 4: Optional: Netzwerk der Umgebung konfigurieren
Netzwerkparameter hängen vom Typ der Umgebung ab, die Sie erstellen möchten:
Öffentliche IP-Umgebung Verwenden Sie die Standardnetzwerkparameter.
Private IP-Umgebung (VPC-Peering) In dieser Konfiguration verwendet Ihre Umgebung VPC-Peerings für die Konnektivität.
Konfigurieren Sie Ihre Private IP-Umgebung:
- Konfigurieren Sie das Netzwerk Ihres Projekts für private IP-Umgebungen.
- Geben Sie weitere Parameter für Ihre private IP-Umgebung an, wie weiter unten in diesem Abschnitt beschrieben.
Für eine Umgebung mit privater IP-Adresse mit VPC-Peering müssen Sie Folgendes kennen:
- Ihre VPC-Netzwerk-ID
- Ihre VPC-Subnetzwerk-ID
Zwei sekundäre IP-Bereiche in Ihrem VPC-Subnetzwerk:
- Sekundärer IP-Bereich für Pods
- Sekundärer IP-Bereich für Dienste
IP-Bereiche für die Komponenten der Umgebung:
- IP-Bereich für die GKE-Steuerungsebene.
- Webserver-IP-Bereich.
- IP-Bereich für die Cloud SQL-Instanz.
Für eine freigegebene VPC-Umgebung müssen Sie das Netzwerk für das Hostprojekt zusätzlich einrichten und dann eine öffentliche oder private IP-Umgebung in einem Dienstprojekt erstellen. Folgen Sie der Anleitung auf der Seite Freigegebene VPC konfigurieren.
Für eine freigegebene VPC-Umgebung müssen Sie Folgendes kennen:
- Die VPC-Netzwerk-ID des Hostprojekts
Die VPC-Subnetzwerk-ID des Hostprojekts
Zwei sekundäre IP-Bereiche im VPC-Subnetzwerk Ihres Hostprojekts:
- Sekundärer IP-Bereich für Pods
- Sekundärer IP-Bereich für Dienste
Wenn Sie eine freigegebene VPC-Umgebung mit öffentlicher IP erstellen, müssen Sie dennoch das VPC-Netzwerk, das Subnetzwerk und die sekundären IP-Bereiche des Hostprojekts für Pods und Dienste angeben.
Zum Erstellen einer VPC-SC-Umgebung müssen Sie einen Dienstperimeter erstellen und dann Umgebungen mit privater IP innerhalb dieses Perimeters erstellen. Folgen Sie der unter VPC Service Controls konfigurieren beschriebenen Anleitung.
Zusätzliche Netzwerkoptionen für Umgebungen:
- Privat verwendete öffentliche IP-Adressen. Wenn Sie mehr IP-Adressen verwenden möchten, kann Ihre Umgebung bestimmte öffentliche IP-Adressbereiche privat als interne Subnetz-IP-Adressbereiche für Pods und Dienste verwenden.
- Autorisierte Netzwerke Wenn Sie über HTTPS auf die Steuerungsebene Ihrer privaten IP-Umgebung zugreifen möchten, können Sie mit autorisierten Netzwerken CIDR-Bereiche angeben, die dies tun dürfen.
- IP-Masquerade-Agent Wenn Sie Umgebungen mit dem IP Masquerade-Agent verwenden, können Sie n:1-IP-Adressübersetzungen in den Netzwerkkonfigurationen Ihrer Umgebung verwenden. Weitere Informationen zum Erstellen von Umgebungen mit dem IP-Masquerade-Agent finden Sie unter IP-Masquerade-Agent aktivieren.
Console
So erstellen Sie eine Umgebung mit privater IP:
Achten Sie darauf, dass Ihr Netzwerk für den Umgebungstyp konfiguriert ist, den Sie erstellen möchten.
Maximieren Sie das Element Netzwerk, Airflow-Konfigurationsüberschreibungen und zusätzliche Features.
Aktivieren Sie im Bereich Netzwerkkonfiguration das Kästchen VPC-nativ aktivieren (mit Alias-IP).
Wählen Sie in der Drop-down-Liste Netzwerk Ihre VPC-Netzwerk-ID aus.
Wählen Sie in der Drop-down-Liste Subnetzwerk Ihre VPC-Subnetzwerk-ID aus.
Geben Sie im Abschnitt Pod-IP-Adresszuweisung den sekundären IP-Bereich für Pods an. Sie können einen vorhandenen sekundären Bereich in Ihrem VPC-Netzwerk verwenden oder einen neuen Bereich in der CIDR-Notation angeben.
Geben Sie im Abschnitt Zuweisung von Dienst-IP-Adressen den sekundären IP-Bereich für Dienste an. Sie können einen vorhandenen sekundären Bereich in Ihrem VPC-Netzwerk verwenden oder einen neuen Bereich in der CIDR-Notation angeben.
Aktivieren Sie im Bereich Private IP das Kästchen Private IP aktivieren.
Geben Sie im Bereich Private IP des GKE-Clustermasters einen IP-Bereich für die GKE-Steuerungsebene an:
Wählen Sie Standard-IP-Bereich aus, um den Standard-IP-Bereich für die Region zu verwenden, in der sich Ihre Umgebung befindet.
Wenn Sie einen benutzerdefinierten IP-Bereich angeben möchten, wählen Sie Benutzerdefinierter IP-Bereich aus und geben Sie in das Feld Private IP des GKE-Clustermasters einen Bereich in der CIDR-Notation ein.
Wählen Sie den Zugriff auf die Ebene der GKE-Steuerungsebene aus. Die Steuerungsebene hat zwei Endpunkte. Ein Endpunkt ist privat und wird von Clusterknoten und VMs verwendet. Ein weiterer Endpunkt ist öffentlich. Sie können die Zugriffsebene für den öffentlichen Endpunkt angeben:
Aktivieren Sie auf das Kästchen Mit externer IP-Adresse auf Masterendpunkt zugreifen, um den Zugriff auf den öffentlichen Endpunkt über autorisierte Netzwerke zu ermöglichen.
Diese Option legt die Zugriffsebene für die Steuerungsebene auf "Zugriff auf öffentliche Endpunkte aktiviert, autorisierte Netzwerke aktiviert" fest. Dies bietet eingeschränkten Zugriff auf die Steuerungsebene über autorisierte Netzwerke. Standardmäßig werden keine Quell-IP-Adressen angegeben. Sie können dem Cluster autorisierte Netzwerke hinzufügen.
Entfernen Sie das Häkchen beim Kästchen Mit externer IP-Adresse auf Masterendpunkt zugreifen, um den Zugriff auf den öffentlichen Endpunkt über autorisierte Netzwerke zu deaktivieren.
Diese Option legt die Zugriffsebene für die Steuerungsebene auf "Zugriff auf öffentlichen Endpunkt deaktiviert" fest. Dies verhindert den gesamten Internetzugriff auf die Steuerungsebene.
Geben Sie im Bereich Private IP des Webservers einen IP-Bereich für die Airflow-Webserverinstanz an.
Geben Sie im Bereich Private IP von Cloud SQL einen IP-Bereich für die Cloud SQL-Instanz an.
gcloud
Achten Sie darauf, dass Ihr Netzwerk für den Umgebungstyp konfiguriert ist, den Sie erstellen möchten.
Wenn Sie eine Umgebung erstellen, steuern die folgenden Argumente die Netzwerkparameter. Wenn Sie einen Parameter weglassen, wird der Standardwert verwendet.
--enable-private-environment
ermöglicht eine Umgebung mit privater IP.--enable-ip-alias
aktiviert „VPC-nativ (mithilfe der Alias-IP)“.Dieser Parameter ist erforderlich, wenn
--enable-private-environment
verwendet wird oder sekundäre Bereiche für Pods und Dienste konfiguriert werden:--network
gibt Ihre VPC-Netzwerk-ID an.--subnetwork
gibt Ihre VPC-Subnetzwerk-ID an.--cluster-secondary-range-name
oder--cluster-ipv4-cidr
konfiguriert den sekundären Bereichs für Pods.--services-secondary-range-name
oder--services-ipv4-cidr
dient dem Konfigurieren des sekundären Bereichs für Dienste.--master-ipv4-cidr
gibt einen Bereich für die GKE-Steuerungsebene an.
--web-server-ipv4-cidr
gibt einen Bereich für die Airflow-Webserverinstanz an.--cloud-sql-ipv4-cidr
gibt einen Bereich für die Cloud SQL-Instanz an.
--enable-private-endpoint
steuert den Zugriff auf die Ebene für die GKE-Steuerungsebene. Die Steuerungsebene hat zwei Endpunkte. Ein Endpunkt ist privat und wird von Clusterknoten und VMs verwendet. Ein weiterer Endpunkt ist öffentlich. Sie können die Zugriffsebene für den öffentlichen Endpunkt angeben:Lassen Sie das Argument
--enable-private-endpoint
weg, wenn Sie den Zugriff auf den öffentlichen Endpunkt über autorisierte Netzwerke aktivieren möchten.Diese Option legt die Zugriffsebene für die Steuerungsebene auf "Zugriff auf öffentliche Endpunkte aktiviert, autorisierte Netzwerke aktiviert" fest. Dies bietet eingeschränkten Zugriff auf die Steuerungsebene über autorisierte Netzwerke. Standardmäßig werden keine Quell-IP-Adressen angegeben. Sie können dem Cluster autorisierte Netzwerke hinzufügen.
Geben Sie das Argument
--enable-private-endpoint
an, um den Zugriff auf den öffentlichen Endpunkt über autorisierte Netzwerke zu deaktivieren.Diese Option legt die Zugriffsebene für die Steuerungsebene auf "Zugriff auf öffentlichen Endpunkt deaktiviert" fest. Dies verhindert den gesamten Internetzugriff auf die Steuerungsebene.
Mit den Argumenten
--enable-master-authorized-networks
und--master-authorized-networks
werden autorisierte Netzwerke für Ihre Umgebung konfiguriert.--enable-privately-used-public-ips
konfiguriert privat verwendete öffentliche IP-Adressen für Ihre Umgebung.--enable-ip-masq-agent
aktiviert den IP-Masquerade-Agent.
Beispiel (private IP-Umgebung)
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--enable-private-environment \
--enable-ip-alias \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID \
--cluster-ipv4-cidr PODS_RANGE \
--services-ipv4-cidr SERVICES_RANGE \
--master-ipv4-cidr CONTROL_PLANE_RANGE \
--web-server-ipv4-cidr WEB_SERVER_RANGE \
--cloud-sql-ipv4-cidr SQL_RANGE
Ersetzen Sie:
NETWORK_ID
durch Ihre VPC-Netzwerk-ID.SUBNETWORK_ID
durch Ihre VPC-Subnetzwerk-ID.PODS_RANGE
durch den sekundären Bereich für Pods.SERVICES_RANGE
durch den sekundären Bereich für Dienste.CONTROL_PLANE_RANGE
durch den sekundären Bereich für die GKE-Steuerungsebene.WEB_SERVER_RANGE
durch den sekundären Bereich für die Airflow-Webserverinstanz.SQL_RANGE
durch den Bereich für die Cloud SQL-Instanz.
Schritt 5: Optional: Netzwerk-Tags hinzufügen
Netzwerk-Tags werden auf alle Knoten-VMs im Cluster Ihrer Umgebung angewendet. Mit Tags werden gültige Quellen oder Ziele für Netzwerkfirewalls identifiziert. Jedes Tag in der Liste muss RFC 1035 entsprechen.
Sie können beispielsweise Netzwerk-Tags hinzufügen, wenn Sie den Traffic für eine private IP-Umgebung mit Firewallregeln einschränken möchten.
Console
Auf der Seite Umgebung erstellen:
- Suchen Sie den Abschnitt Knotenkonfiguration.
- Geben Sie im Feld Tags Instanz-Tags für Knoten-VMs an.
gcloud
Beim Erstellen einer Umgebung steuern die folgenden Argumente die Netzwerk-Tags:
--tags
gibt eine durch Kommas getrennte Liste von Netzwerk-Tags an, die auf alle Knoten-VMs angewendet werden.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--tags TAGS
Ersetzen Sie:
TAGS
durch eine durch Kommas getrennte Liste von Netzwerk-Tags ersetzen.
Beispiel:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--tags group1,production
API
Geben Sie beim Erstellen einer Umgebung in der Ressource Umgebung > Umgebungskonfiguration Netzwerk-Tags für Ihre Umgebung an.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"tags": [
"TAG"
],
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
TAG
mit einem Netzwerk-Tag.
Beispiel:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeConfig": {
"tags": [
"group1",
"production"
],
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Beim Erstellen einer Umgebung definieren die folgenden Felder Netzwerk-Tags für Ihre Umgebung:
- Das Feld
tags
im Blocknode_config
gibt eine durch Kommas getrennte Liste von Netzwerk-Tags an, die auf alle Knoten-VMs angewendet werden.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
tags = ["TAGS"]
service_account = "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
TAGS
durch eine durch Kommas getrennte Liste von Netzwerk-Tags ersetzen.
Beispiel:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
node_config {
tags = ["group1","production"]
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Schritt 6: Optional: Netzwerkzugriff für Webserver konfigurieren
Die Zugriffsparameter für den Airflow-Webserver hängen nicht vom Typ Ihrer Umgebung ab. Stattdessen können Sie den Webserverzugriff separat konfigurieren. Beispiel: In einer privaten IP-Umgebung kann die Airflow-UI weiterhin über das Internet zugänglich sein.
Sie können die zulässigen IP-Bereiche nicht mithilfe privater IP-Adressen konfigurieren.
Console
Gehen Sie auf der Seite Umgebung erstellen im Bereich Webserverkonfiguration so vor:
Wenn Sie den Zugriff auf den Airflow-Webserver von allen IP-Adressen aus ermöglichen möchten, wählen Sie Zugriff von allen IP-Adressen zulassen aus.
Wenn Sie den Zugriff auf bestimmte IP-Bereiche beschränken möchten, wählen Sie Zugriff nur von bestimmten IP-Adressen zulassen aus. Geben Sie im Feld IP-Bereich einen IP-Bereich in der CIDR-Notation an. Geben Sie im Feld Beschreibung eine optionale Beschreibung für diesen Bereich an. Wenn Sie mehrere Bereiche angeben möchten, klicken Sie auf IP-Bereich hinzufügen.
Wenn Sie den Zugriff für alle IP-Adressen verweigern möchten, wählen Sie Zugriff nur von bestimmten IP-Adressen zulassen aus und klicken Sie neben dem leeren Bereichseintrag auf Element löschen.
gcloud
Beim Erstellen einer Umgebung steuern die folgenden Argumenten die Zugriffsebene des Webservers:
--web-server-allow-all
bietet Zugriff auf Airflow von allen IP-Adressen aus. Dies ist die Standardoption.--web-server-allow-ip
beschränkt den Zugriff auf bestimmte Quell-IP-Bereiche. Wenn Sie mehrere IP-Bereiche angeben möchten, verwenden Sie dieses Argument mehrmals.--web-server-deny-all
verbietet den Zugriff für alle IP-Adressen.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
Ersetzen Sie:
WS_IP_RANGE
durch den IP-Bereich (in CIDR-Notation), der auf die Airflow-UI zugreifen darf.WS_RANGE_DESCRIPTION
durch die Beschreibung des IP-Bereichs.
Beispiel:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--web-server-allow-ip ip_range=192.0.2.0/24,description="office net 1" \
--web-server-allow-ip ip_range=192.0.4.0/24,description="office net 3"
API
Geben Sie beim Erstellen einer Umgebung in der Ressource Umgebung > Umgebungskonfiguration die Webserverzugriffsparameter an.
Wenn Sie den Zugriff auf den Airflow-Webserver von allen IP-Adressen aus ermöglichen möchten, lassen Sie
webServerNetworkAccessControl
weg.Wenn Sie den Zugriff auf bestimmte IP-Bereiche beschränken möchten, geben Sie einen oder mehrere Bereiche in
allowedIpRanges
an.Wenn Sie den Zugriff für alle IP-Adressen verweigern möchten, fügen Sie
allowedIpRanges
hinzu und machen Sie daraus eine leere Liste. Geben Sie darin keine IP-Bereiche an.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
WS_IP_RANGE
durch den IP-Bereich (in CIDR-Notation), der auf die Airflow-UI zugreifen darf.WS_RANGE_DESCRIPTION
durch die Beschreibung des IP-Bereichs.
Beispiel:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "192.0.2.0/24",
"description": "office net 1"
},
{
"value": "192.0.4.0/24",
"description": "office net 3"
}
]
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Beim Erstellen einer Umgebung enthält der Block allowed_ip_range
im Block web_server_network_access_control
IP-Bereiche, die auf den Webserver zugreifen können.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
web_server_network_access_control {
allowed_ip_range {
value = "WS_IP_RANGE"
description = "WS_RANGE_DESCRIPTION"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
WS_IP_RANGE
durch den IP-Bereich (in CIDR-Notation), der auf die Airflow-UI zugreifen darf.WS_RANGE_DESCRIPTION
durch die Beschreibung des IP-Bereichs.
Beispiel:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
web_server_network_access_control {
allowed_ip_range {
value = "192.0.2.0/24"
description = "office net 1"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "office net 3"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
Schritt 7: Optional: Airflow-Konfigurationsüberschreibungen und Umgebungsvariablen angeben
Sie können beim Erstellen einer Umgebung Airflow-Konfigurationsüberschreibungen und Umgebungsvariablen einrichten. Alternativ können Sie dies später tun, nachdem Ihre Umgebung erstellt wurde.
Einige Airflow-Konfigurationsoptionen sind gesperrt und können nicht überschrieben werden.
Eine Liste der verfügbaren Airflow-Konfigurationsoptionen finden Sie unter Konfigurationsreferenz für Airflow 2 und Airflow 1.10.*.
So geben Sie Airflow-Konfigurationsüberschreibungen und Umgebungsvariablen an:
Console
Auf der Seite Umgebung erstellen:
Maximieren Sie das Element Netzwerk, Airflow-Konfigurationsüberschreibungen und zusätzliche Features.
Klicken Sie im Bereich Umgebungsvariablen auf Umgebungsvariable hinzufügen.
Geben Sie den Namen und den Wert der Umgebungsvariablen ein.
Klicken Sie im Bereich Airflow-Konfigurationsüberschreibungen auf Airflow Konfigurationsüberschreibung hinzufügen.
Geben Sie den Bereich, den Schlüssel und den Wert für die Überschreibung der Konfigurationsoption ein.
Beispiel:
Bereich Schlüssel Wert webserver
dag_orientation
TB
gcloud
Beim Erstellen einer Umgebung steuern die folgenden Argumente die Umgebungsvariablen und die Airflow-Konfigurationsüberschreibungen:
--env-variables
gibt eine durch Kommas getrennte Liste von Umgebungsvariablen an.Variablennamen können Groß- und Kleinbuchstaben, Ziffern und Unterstriche enthalten, dürfen jedoch nicht mit einer Ziffer beginnen.
--airflow-configs
gibt eine durch Kommas getrennte Liste von Schlüsseln und Werten für Airflow-Konfigurationsüberschreibungen an.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--env-variables ENV_VARS \
--airflow-configs CONFIG_OVERRIDES
Ersetzen Sie:
ENV_VARS
durch eine Liste kommagetrennterNAME=VALUE
-Paare für Umgebungsvariablen.CONFIG_OVERRIDES
durch eine Liste kommagetrennterSECTION-KEY=VALUE
-Paare für Konfigurationsüberschreibungen. Trennen Sie den Namen des Konfigurationsbereichs durch ein-
-Symbol, gefolgt vom Schlüsselnamen. Beispiel:core-dags_are_paused_at_creation
.
Beispiel:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--env-variables SENDGRID_MAIL_FROM=user@example.com,SENDGRID_API_KEY=example-key \
--airflow-configs core-dags_are_paused_at_creation=True,webserver-dag_orientation=TB
API
Geben Sie beim Erstellen einer Umgebung in der Ressource Umgebung > Umgebungskonfiguration Umgebungsvariablen und Airflow-Konfigurationsüberschreibungen an.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"softwareConfig": {
"airflowConfigOverrides": {
"SECTION-KEY": "OVERRIDE_VALUE"
},
"envVariables": {
"VAR_NAME": "VAR_VALUE",
}
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
SECTION
durch den Bereich in der Konfigurationsdatei, in dem sich die Airflow-Konfigurationsoption befindet.KEY
durch den Namen der Airflow-Konfigurationsoption.OVERRIDE_VALUE
durch einen Wert der Airflow-Konfigurationsoption.VAR_NAME
durch den Namen der Umgebungsvariablen.VAR_VALUE
durch den Wert der Umgebungsvariablen.
Beispiel:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"softwareConfig": {
"airflowConfigOverrides": {
"core-dags_are_paused_at_creation": "True",
"webserver-dag_orientation": "TB"
},
"envVariables": {
"SENDGRID_MAIL_FROM": "user@example.com",
"SENDGRID_API_KEY": "example-key"
}
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Terraform
Beim Erstellen einer Umgebung steuern die folgenden Blöcke Umgebungsvariablen und Airflow-Konfigurationsüberschreibungen:
Der Block
env_variables
im Blocksoftware_config
gibt Umgebungsvariablen an.Variablennamen können Groß- und Kleinbuchstaben, Ziffern und Unterstriche enthalten, dürfen jedoch nicht mit einer Ziffer beginnen.
Der Block
airflow_config_overrides
im Blocksoftware_config
gibt Airflow-Konfigurationsüberschreibungen an.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
software_config {
airflow_config_overrides = {
SECTION-KEY = "OVERRIDE_VALUE"
}
env_variables = {
VAR_NAME = "VAR_VALUE"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
SECTION
durch den Bereich in der Konfigurationsdatei, in dem sich die Airflow-Konfigurationsoption befindet.KEY
durch den Namen der Airflow-Konfigurationsoption.OVERRIDE_VALUE
durch einen Wert der Airflow-Konfigurationsoption.VAR_NAME
durch den Namen der Umgebungsvariablen.VAR_VALUE
durch den Wert der Umgebungsvariablen.
Beispiel:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
software_config {
airflow_config_overrides = {
core-dags_are_paused_at_creation = "True"
webserver-dag_orientation = "TB"
}
env_variables = {
SENDGRID_MAIL_FROM = "user@example.com"
SENDGRID_API_KEY = "example-key"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Schritt 8: Optional: Wartungsfenster angeben
Standardmäßig sind für Cloud Composer 1-Umgebungen keine Wartungsfenster definiert, wenn Sie sie mit der Google Cloud Console, der API oder Terraform erstellen. Wir empfehlen, Wartungsfenster für neue und vorhandene Umgebungen anzugeben.
Wenn Sie Ihre Umgebung mit der gcloud CLI erstellen, gelten für sie standardmäßig Wartungsfenster von Freitag, Samstag und Sonntag von 00:00:00 bis 04:00:00 Uhr (GMT).
So legen Sie benutzerdefinierte Wartungsfenster für Ihre Umgebung fest:
Console
Auf der Seite Umgebung erstellen:
Maximieren Sie das Element Netzwerk, Airflow-Konfigurationsüberschreibungen und zusätzliche Features.
Klicken Sie im Bereich Wartungsfenster das Kästchen Benutzerdefinierte Zeit für Wartungsfenster festlegen an.
Wählen Sie in der Drop-down-Liste Zeitzone eine Zeitzone für Wartungsfenster aus.
Legen Sie Startzeit, Tage und Länge fest, sodass die kombinierte Zeit für den angegebenen Zeitplan mindestens 12 Stunden in einem 7-tägigen rollierenden Zeitfenster beträgt. Zum Beispiel bietet ein Zeitraum von vier Stunden jeden Montag, Mittwoch und Freitag die erforderliche Zeitmenge.
gcloud
Mit den folgenden Argumenten werden die Wartungsfensterparameter definiert:
--maintenance-window-start
legt den Beginn eines Wartungsfensters fest.--maintenance-window-end
legt das Ende eines Wartungsfensters fest.--maintenance-window-recurrence
legt die Wiederholung des Wartungsfensters fest.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
Ersetzen Sie:
ENVIRONMENT_NAME
durch den Namen der Umgebung.DATETIME_START
durch das Startdatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert.DATETIME_END
durch das Enddatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert. Das angegebene Datum und die angegebene Uhrzeit müssen nach dem Startdatum liegen.MAINTENANCE_RECURRENCE
mit einer RFC 5545 RRULE für Wiederholungsversuche von Wartungsfenstern. Cloud Composer unterstützt zwei Formate:Das Format
FREQ=DAILY
gibt eine tägliche Wiederholung an.Das Format
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
gibt eine Wiederholung an ausgewählten Wochentagen an.
Im folgenden Beispiel wird ein Wartungsfenster von 6 Stunden zwischen 01:00 und 07:00 Uhr (UTC) an Mittwochen, Samstagen und Sonntagen angegeben. Das Datum 1. Januar 2023 wird ignoriert.
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--maintenance-window-start '2023-01-01T01:00:00Z' \
--maintenance-window-end '2023-01-01T07:00:00Z' \
--maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'
API
Geben Sie beim Erstellen einer Umgebung in der Ressource Umgebung > Umgebungskonfiguration Wartungsfensterparameter an:
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"maintenanceWindow": {
"startTime": "DATETIME_START",
"endTime": "DATETIME_END",
"recurrence": "MAINTENANCE_RECURRENCE"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
DATETIME_START
durch das Startdatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert.DATETIME_END
durch das Enddatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert. Das angegebene Datum und die angegebene Uhrzeit müssen nach dem Startdatum liegen.MAINTENANCE_RECURRENCE
mit einer RFC 5545 RRULE für Wiederholungsversuche von Wartungsfenstern. Cloud Composer unterstützt zwei Formate:Das Format
FREQ=DAILY
gibt eine tägliche Wiederholung an.Das Format
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
gibt eine Wiederholung an ausgewählten Wochentagen an.
Im folgenden Beispiel wird ein Wartungsfenster von 6 Stunden zwischen 01:00 und 07:00 Uhr (UTC) an Mittwochen, Samstagen und Sonntagen angegeben. Das Datum 1. Januar 2023 wird ignoriert.
Beispiel:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"maintenanceWindow": {
"startTime": "2023-01-01T01:00:00Z",
"endTime": "2023-01-01T07:00:00Z",
"recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Terraform
Im Block maintenance_window
werden die Wartungsfenster für Ihre Umgebung angegeben:
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
maintenance_window {
start_time = "DATETIME_START"
end_time = "DATETIME_END"
recurrence = "MAINTENANCE_RECURRENCE"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Ersetzen Sie:
DATETIME_START
durch das Startdatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert.DATETIME_END
durch das Enddatum und die Uhrzeit im Eingabeformat Datum/Uhrzeit. Es wird nur die angegebene Uhrzeit verwendet. Das angegebene Datum wird ignoriert. Das angegebene Datum und die angegebene Uhrzeit müssen nach dem Startdatum liegen.MAINTENANCE_RECURRENCE
mit einer RFC 5545 RRULE für Wiederholungsversuche von Wartungsfenstern. Cloud Composer unterstützt zwei Formate:- Das Format
FREQ=DAILY
gibt eine tägliche Wiederholung an. - Das Format
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
gibt eine Wiederholung an ausgewählten Wochentagen an.
- Das Format
Im folgenden Beispiel wird ein Wartungsfenster von 6 Stunden zwischen 01:00 und 07:00 Uhr (UTC) an Mittwochen, Samstagen und Sonntagen angegeben. Das Datum 1. Januar 2023 wird ignoriert.
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
maintenance_window {
start_time = "2023-01-01T01:00:00Z"
end_time = "2023-01-01T07:00:00Z"
recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
}
}
}
Schritt 9: (Optional) Datenverschlüsselung (CMEK) konfigurieren
Standardmäßig werden Daten in Ihrer Umgebung mit einem von Google bereitgestellten Schlüssel verschlüsselt.
Folgen Sie der unter Vom Kunden verwaltete Verschlüsselungsschlüssel verwenden beschriebenen Anleitung, um vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) zum Verschlüsseln von Daten in Ihrer Umgebung zu verwenden.
Schritt 10: Optional: Umgebungslabels angeben
Sie können Ihren Umgebungen Labels zuweisen, um die Abrechnungskosten basierend auf diesen Labels aufzuschlüsseln.
Console
Auf der Seite Umgebung erstellen:
Maximieren Sie das Element Netzwerk, Airflow-Konfigurationsüberschreibungen und zusätzliche Features.
Klicken Sie im Bereich Labels auf Label hinzufügen.
Geben Sie in den Feldern Schlüssel und Wert Schlüssel/Wert-Paare für die Umgebungslabels an.
gcloud
Beim Erstellen einer Umgebung gibt das Argument --labels
eine durch Kommas getrennte Liste von Schlüsseln und Werten mit Umgebungslabels an.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--labels LABELS
Ersetzen Sie:
LABELS
durch eine Liste kommagetrennterKEY=VALUE
-Paare für Umgebungslabels.
Beispiel:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--labels owner=engineering-team,env=production
API
Geben Sie beim Erstellen einer Umgebung in der Ressource Umgebung Labels für Ihre Umgebung an.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"labels": {
"LABEL_KEY": "LABEL_VALUE"
}
}
Ersetzen Sie:
LABEL_KEY
durch einen Schlüssel des Umgebungslabels.LABEL_VALUE
durch einen Wert des Umgebungslabels.
Beispiel:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"labels": {
"owner": "engineering-team",
"env": "production"
}
}
Terraform
Geben Sie beim Erstellen einer Umgebung Labels im Block labels
(außerhalb des Blocks config
) an.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
labels = {
LABEL_KEY = "LABEL_VALUE"
}
}
Ersetzen Sie:
LABEL_KEY
durch einen Schlüssel des Umgebungslabels.LABEL_VALUE
durch einen Wert des Umgebungslabels.
Beispiel:
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
labels = {
owner = "engineering-team"
env = "production"
}
}
Schritt 11: Optional: Andere Parameter konfigurieren
Zu den weiteren Parametern gehören:
Zone für Ihre Umgebungsknoten
Compute Engine-Zone, in der Clusterknoten bereitgestellt werden sollen. Bei diesem Parameter können Sie eine bestimmte Zone am Speicherort Ihrer Umgebung auswählen.
Standardmäßig wird automatisch eine zufällige Zone ausgewählt.
OAuth-Bereiche
OAuth-Bereiche sind eine Reihe von Google API-Bereichen, die auf allen Knoten-VMs verfügbar gemacht werden sollen. Falls leer, ist der Standardwert
https://www.googleapis.com/auth/cloud-platform
.Wenn Sie benutzerdefinierte OAuth-Bereiche angeben, fügen Sie
https://www.googleapis.com/auth/cloud-platform
in die Liste der angegebenen Bereiche ein.Python-Version
Wenn Ihre Umgebung Airflow 1.10.* und frühere Airflow-Versionen verwendet, können Sie Ihre Umgebung auf Python 2 umstellen. Die Standard-Python-Version ist Python 3. Weitere Informationen zur Unterstützung von Python 2 in Cloud Composer finden Sie unter Unterstützte Python-Versionen.
Console
Auf der Seite Umgebung erstellen:
Im Abschnitt Knotenkonfiguration:
Wählen Sie in der Drop-down-Liste Zone eine Zone für Ihre Umgebungsknoten aus.
Sie können die Zone später nicht mehr ändern.
Geben Sie im Feld OAuth-Bereiche die OAuth-Bereiche für Knoten-VMs an.
Sie können OAuth-Bereiche später nicht mehr ändern.
Wenn Sie mehrere OAuth-Bereiche angeben möchten, geben Sie eine durch Kommas getrennte Liste von Werten an. Fügen Sie
https://www.googleapis.com/auth/cloud-platform
in die Liste der angegebenen Bereiche ein.Wählen Sie im Feld Python-Version die Version von Python aus.
Sie können die Python-Version später nicht mehr ändern.
gcloud
Beim Erstellen einer Umgebung steuern die folgenden Argumente verschiedene Parameter Ihrer Umgebung:
--zone
gibt eine Compute Engine-Zone für Ihre Umgebungs-VMs an.--oauth-scopes
gibt eine durch Kommas getrennte Liste von OAuth-Bereichen an. Fügen Siehttps://www.googleapis.com/auth/cloud-platform
in die Liste der angegebenen Bereiche ein.--python-version
gibt die Version von Python an.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--zone ZONE \
--oauth-scopes OAUTH_SCOPES \
--python-version PYTHON_VERSION
Ersetzen Sie:
ZONE
durch den Namen der Compute Engine-Zone.OAUTH_SCOPES
durch eine durch Kommas getrennte Liste von OAuth-Bereichen.PYTHON_VERSION
durch die Python-Version (3
oder2
).
Beispiel:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--zone us-central1-a \
--oauth-scopes https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery \
--python-version 3
API
Geben Sie beim Erstellen einer Umgebung in der Ressource Umgebung > Umgebungskonfiguration verschiedene Parameter Ihrer Umgebung an.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"location": "projects/PROJECT_ID/zones/ZONE",
"oauthScopes": [
"OAUTH_SCOPE"
],
"serviceAccount": "SERVICE_ACCOUNT"
},
"softwareConfig": {
"pythonVersion": "PYTHON_VERSION"
}
}
}
Ersetzen Sie:
ZONE
durch den Namen der Compute Engine-Zone.OAUTH_SCOPE
durch einen OAuth-Bereich. Fügen Sie denhttps://www.googleapis.com/auth/cloud-platform
-Bereich gefolgt von den zusätzlichen Bereichselementen hinzu, um weitere Bereiche anzugeben.PYTHON_VERSION
durch die Python-Version (3
oder2
).
Beispiel:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeConfig": {
"location": "projects/example-project/zones/us-central1-a",
"oauthScopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/bigquery"
],
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
},
"softwareConfig": {
"pythonVersion": "3"
}
}
}
Terraform
Beim Erstellen einer Umgebung steuern die folgenden Felder verschiedene Parameter Ihrer Umgebung:
Das Feld
zone
im Blocknode_config
gibt eine Compute Engine-Zone für Ihre Umgebungs-VMs an.Das Feld
oauth_scopes
im Blocknode_config
gibt eine durch Kommas getrennte Liste von OAuth-Bereichen an.Das Feld
python_version
im Blocksoftware_config
gibt die Version von Python an.
resource "google_composer_environment" "example" {
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
zone = "ZONE"
oauth_scopes = "[OAUTH_SCOPES]"
service_account = "SERVICE_ACCOUNT"
}
software_config {
python_version = "PYTHON_VERSION"
}
}
}
Ersetzen Sie:
ZONE
durch den Namen der Compute Engine-Zone.OAUTH_SCOPES
durch eine durch Kommas getrennte Liste von OAuth-Bereichen.PYTHON_VERSION
durch die Python-Version (3
oder2
).
Beispiel:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
zone = "us-central1-a"
oauth_scopes = "[https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery]"
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
software_config {
python_version = "3"
}
}
}
Schritt 12: Optional: Beta API-Nutzung erzwingen
Sie können Ihre Umgebung explizit als Cloud Composer API verwenden, auch wenn Ihre Umgebung keine Vorschaufunktionen enthält. In diesem Fall wird Ihre Umgebung mit dem Dienstendpunkt v1beta1
erstellt.
Console
Auf der Seite Umgebung erstellen:
Maximieren Sie das Element Netzwerk, Airflow-Konfigurationsüberschreibungen und zusätzliche Features.
Aktivieren Sie im Bereich Beta API das Kästchen Nutzung der Beta API erzwingen.
gcloud
Erstellen Sie Ihre Umgebung mit dem Befehl gcloud beta composer
.
API
Erstellen Sie Ihre Umgebung mit dem Dienstendpunkt v1beta1
.
Terraform
Der Terraform-Anbieter für Cloud Composer verwendet standardmäßig die Betaversion der API.
Nächste Schritte
- Fehlerbehebung beim Erstellen der Umgebung
- Freigegebene VPC konfigurieren
- VPC Service Controls konfigurieren
- DAGs hinzufügen und aktualisieren
- Auf die Airflow-UI zugreifen
- Umgebungen aktualisieren und löschen
- Informationen zu Cloud Composer-Versionen