Apache Airflow Deployment
In diesem Abschnitt werden die Aufgaben beschrieben, die Sie zur Implementierung von Airflow in Ihrem Kubernetes-Cluster ausführen müssen.
Es ist möglich, Airflow auf anderen Plattformen als Kubernetes bereitzustellen. Die Implementierung von Airflow auf anderen Plattformen als Kubernetes ist nicht im Umfang dieser Lösung enthalten. |
Voraussetzungen
Bevor Sie die in diesem Abschnitt beschriebenen Bereitstellungsaufgaben ausführen, gehen wir davon aus, dass Sie bereits die folgenden Aufgaben ausgeführt haben:
-
Sie verfügen bereits über einen funktionierenden Kubernetes-Cluster.
-
Sie haben NetApp Astra Trident bereits in Ihrem Kubernetes-Cluster installiert und konfiguriert. Weitere Informationen zu Astra Trident finden Sie im "Astra Trident-Dokumentation".
Installieren Sie Helm
Der Luftstrom wird über Helm, einen beliebten Paketmanager für Kubernetes, implementiert. Bevor Sie Airflow bereitstellen, müssen Sie Helm auf dem Bereitstellungs-Jump-Host installieren. Um Helm auf dem Sprunghost für die Bereitstellung zu installieren, folgen Sie dem "Installationsanweisungen" In der offiziellen Helm-Dokumentation.
Standard-Kubernetes StorageClass festlegen
Bevor Sie Airflow bereitstellen, müssen Sie eine Standard-StorageClass in Ihrem Kubernetes-Cluster zuweisen. Der Airflow-Implementierungsprozess versucht, mithilfe der Standard-StorageClass neue persistente Volumes bereitzustellen. Wenn keine StorageClass als Standard-StorageClass festgelegt ist, schlägt die Bereitstellung fehl. Befolgen Sie die Anweisungen in, um eine Standard-StorageClass innerhalb Ihres Clusters festzulegen "Kubeflow Deployment" Abschnitt. Wenn Sie bereits eine Standard-StorageClass innerhalb Ihres Clusters festgelegt haben, können Sie diesen Schritt überspringen.
Verwenden Sie Helm zum Bereitstellen des Luftstroms
Um Airflow mithilfe von Helm in Ihren Kubernetes-Cluster zu implementieren, führen Sie die folgenden Aufgaben vom Bereitstellungs-Jump-Host aus:
-
Setzen Sie den Luftstrom mithilfe von Helm ein, indem Sie den folgen "Implementierungsanleitungen" Für das offizielle Airflow-Diagramm auf dem Artefakt-Hub. Die folgenden Beispielbefehle zeigen die Bereitstellung von Airflow mit Helm. Ändern, Hinzufügen und/oder Entfernen von Werten im
custom- values.yaml
Datei nach Bedarf, abhängig von Ihrer Umgebung und der gewünschten Konfiguration.$ cat << EOF > custom-values.yaml ################################### # Airflow - Common Configs ################################### airflow: ## the airflow executor type to use ## executor: "CeleryExecutor" ## environment variables for the web/scheduler/worker Pods (for airflow configs) ## # ################################### # Airflow - WebUI Configs ################################### web: ## configs for the Service of the web Pods ## service: type: NodePort ################################### # Airflow - Logs Configs ################################### logs: persistence: enabled: true ################################### # Airflow - DAGs Configs ################################### dags: ## configs for the DAG git repository & sync container ## gitSync: enabled: true ## url of the git repository ## repo: "git@github.com:mboglesby/airflow-dev.git" ## the branch/tag/sha1 which we clone ## branch: master revision: HEAD ## the name of a pre-created secret containing files for ~/.ssh/ ## ## NOTE: ## - this is ONLY RELEVANT for SSH git repos ## - the secret commonly includes files: id_rsa, id_rsa.pub, known_hosts ## - known_hosts is NOT NEEDED if `git.sshKeyscan` is true ## sshSecret: "airflow-ssh-git-secret" ## the name of the private key file in your `git.secret` ## ## NOTE: ## - this is ONLY RELEVANT for PRIVATE SSH git repos ## sshSecretKey: id_rsa ## the git sync interval in seconds ## syncWait: 60 EOF $ helm install airflow airflow-stable/airflow -n airflow --version 8.0.8 --values ./custom-values.yaml ... Congratulations. You have just deployed Apache Airflow! 1. Get the Airflow Service URL by running these commands: export NODE_PORT=$(kubectl get --namespace airflow -o jsonpath="{.spec.ports[0].nodePort}" services airflow-web) export NODE_IP=$(kubectl get nodes --namespace airflow -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT/ 2. Open Airflow in your web browser
-
Vergewissern Sie sich, dass alle Airflow-Pods betriebsbereit sind. Es kann ein paar Minuten dauern, bis alle Pods beginnen.
$ kubectl -n airflow get pod NAME READY STATUS RESTARTS AGE airflow-flower-b5656d44f-h8qjk 1/1 Running 0 2h airflow-postgresql-0 1/1 Running 0 2h airflow-redis-master-0 1/1 Running 0 2h airflow-scheduler-9d95fcdf9-clf4b 2/2 Running 2 2h airflow-web-59c94db9c5-z7rg4 1/1 Running 0 2h airflow-worker-0 2/2 Running 2 2h
-
Rufen Sie die URL des Airflow Webservice ab, indem Sie die Anweisungen befolgen, die bei der Bereitstellung von Airflow mit Hilfe von Helm in Schritt 1 an der Konsole gedruckt wurden.
$ export NODE_PORT=$(kubectl get --namespace airflow -o jsonpath="{.spec.ports[0].nodePort}" services airflow-web) $ export NODE_IP=$(kubectl get nodes --namespace airflow -o jsonpath="{.items[0].status.addresses[0].address}") $ echo http://$NODE_IP:$NODE_PORT/
-
Vergewissern Sie sich, dass Sie auf den Airflow Webservice zugreifen können.