Google managed Airflow (Cloud Composer)
Cloud Composer is a managed Apache Airflow service that helps you create, schedule, monitor and manage workflows. Cloud Composer automation helps you create Airflow environments quickly and use Airflow-native tools, such as the powerful Airflow web interface and command line tools, so you can focus on your workflows and not your infrastructure.
Du finner den offisielle dokumentasjonen for Cloud Composer hos cloud.google.com.
Opprett ny Composer instans¶
For å sette opp en ny Cloud Composer instans gjennom Google Cloud Platform konsollen (GCP),
gå til Cloud Composer, trykk CREATE
og velg Composer 2
Følgende må spesifiseres
Name
- navn på Cloud Composer instansenLocation
- regionen hvor instansen settes opp (må velge Europa)- Trykk
CREATE
Når man setter opp Cloud Composer så opprettes det automatisk en bucket som er knyttet til Composer instansen. Før neste steg er det viktig å notere seg navnet på bucketen som blir opprettet. Det gjøres ved å gå til Cloud Storage i konsollen og finne bucketen som har goog-composer-environment
labels.
Github repo for DAGS¶
I bucketen som opprettes når man setter opp Cloud Composer i Opprett ny composer instans blir det automatisk laget en katalog som heter dags
.
Denne katalogen inneholder beskrivelsene av datapipelinene (DAGs) som man kan orkestrere med Cloud Composer og dette synkroniseres kontinuerlig med instansen.
Github synk mot Composer bucket¶
For å ha revisjonskontroll på disse pipelinebeskrivelsene lønner det seg å sette opp en synkronisering mot et Github repo.
Lag service account¶
- Gå til Google IAM
og trykk på
CREATE SERVICE ACCOUNT
- Fyll in
Service account name
og enService account description
- Gi service accounten følgende rettigheter til bucketen opprettet i Opprett ny composer instans:
Storage Legacy Bucket Writer
Storage Object Admin
Merk deg eposten som den nyopprettede service accounten får.
Last ned service account nøkkel¶
- Gå til Google IAM
- Trykk på service accounten opprettet i Lag service account
- Trykk på
KEYS
- Trykk
ADD KEY
->Create new key
->JSON
- Ta vare på nøkkelen som blir lastet ned
Lag et Github repo¶
- Opprett github repo under navikt-organisasjonen (eller bruk et du har fra før)
- Opprett følgende secret i Github repoet:
Name
satt til GCP_CREDENTIALS ogValue
til innholdet i JSON-nøkkelen lastet ned i Last ned service account nøkkel
Oppsett av Github repo¶
- Lag en katalog med navn
dags
i repoet - Lag filen .github/workflows/sync-gcs-bucket.yaml med innhold som følger
name: Sync DAG-bucket
on:
push:
branches:
- main
paths:
- '.github/workflows/sync-gcs-bucket.yaml'
- 'dags/**'
jobs:
sync-gcs-bucket:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: google-github-actions/auth@v2
with:
credentials_json: "${{ secrets.GCP_CREDENTIALS }}"
- name: "Set up Cloud SDK"
uses: google-github-actions/setup-gcloud@v2
- name: "Specify GCP project"
run: "gcloud config set project PROJECT"
- name: "Sync DAGs to GCS bucket"
run: gsutil cp -r dags gs://BUCKET
Erstatt BUCKET i workflowen over med navnet på bucketen som ble opprettet i Opprett ny composer instans og PROJECT med gcp prosjektet bucketen ligger i (finnes her)
Ved push til main branch vil denne workflowen laste opp innholdet i dags
katalogen i repoet til GCS bucketen
som igjen blir synkronisert med Cloud Composer instansen.