我们已经安装了 Elastic 和 Airflow 附带的 OpenMetadata 实例。我们使用官方 helm 图表及其图像“docker.getcollate.io/openmetadata/ingestion”。我升级到最新的 Helm Chart 版本 v1.1.4 和 OpenMetadata 版本。
但是我们面临着从 OpenMetadata 到 Airflow API 的连接问题。我们根据文档设置了基本身份验证(我们还测试了 SSO KeyCloak,它可以正常工作,但遇到相同的问题)。
当我尝试添加服务 - 管道或数据库时,我收到错误(下面附有屏幕截图): 打开元数据错误
我阅读了所有可用的文档并按照官方文档所述更新了我们的配置:
依赖关系图的values.yaml:
airflow:
enabled: {{ is_airflow_enabled }}
airflow:
image:
repository: docker.getcollate.io/openmetadata/ingestion
tag: {{ airflow_image_tag }}
pullPolicy: "IfNotPresent"
executor: "KubernetesExecutor"
config:
# This is required for OpenMetadata UI to fetch status of DAGs
AIRFLOW__API__AUTH_BACKENDS: "airflow.api.auth.backend.basic_auth"
# OpenMetadata Airflow Apis Plugin DAGs Configuration
AIRFLOW__OPENMETADATA_AIRFLOW_APIS__DAG_GENERATED_CONFIGS: "/opt/airflow/dags"
# OpenMetadata Airflow Secrets Manager Configuration
AIRFLOW__OPENMETADATA_SECRETS_MANAGER__AWS_REGION: ""
AIRFLOW__OPENMETADATA_SECRETS_MANAGER__AWS_ACCESS_KEY_ID: ""
AIRFLOW__OPENMETADATA_SECRETS_MANAGER__AWS_ACCESS_KEY: ""
AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'
users:
- username: admin
password: admin
role: Admin
email: [email protected]
firstName: Peter
lastName: Parker
OpenMetadata 图表的values.yaml:
pipelineServiceClientConfig:
enabled: true
className: "org.openmetadata.service.clients.pipeline.airflow.AirflowRESTClient"
apiEndpoint: http://openmetadata-dependencies-web.{{ openmetadata_namespace }}.svc.cluster.local:8080
metadataApiEndpoint: http://openmetadata.{{ openmetadata_namespace }}.svc.cluster.local:8585/api
verifySsl: "no-ssl"
hostIp: ""
ingestionIpInfoEnabled: false
# healthCheckInterval in seconds
healthCheckInterval: 300
# local path in Airflow Pod
sslCertificatePath: "/no/path"
auth:
username: admin
password:
secretRef: airflow-secrets
secretKey: openmetadata-airflow-password
我尝试创建不同的用户,但出现相同的错误(创建新的秘密,为新用户升级airlflow value.yaml 文件并赋予管理员角色)。我不明白为什么我在浏览器中收到该错误,因为当我跳转到 OpenMetadata 时pod 和与 Airflow API 的测试连接似乎都很好:
bash-5.1# curl -XGET ${PIPELINE_SERVICE_CLIENT_ENDPOINT}/api/v1/openmetadata/health
{"status": "healthy", "version": "1.1.0.3"}
此外,当我尝试与用户调用 Airflow API 时,我没有因 401 Unauthorized 而收到错误:
bash-5.1# curl -XPOST ${PIPELINE_SERVICE_CLIENT_ENDPOINT}/api/v1/openmetadata/enable --data-raw '{"dag_id": "123"}' -u "admin:admin" --header 'Content-Type: application/json'
{"error": "DAG 123 not found."}
我使用默认用户 admin/admin,并且可以登录 Airflow UI。
当我从 OpenMetadata 容器调用 env 变量时,看起来很好: Airflow 的 OM 环境变量
从 Openmetadata pod 中,我可以使用凭据调用 Airflow API:
bash-5.1# curl -XGET ${PIPELINE_SERVICE_CLIENT_ENDPOINT}/api/v1/openmetadata/health-auth -u "admin:admin"
{"status": "healthy", "version": "1.1.0.3"}
将 OpenMetadata 图表的 value.yaml 中的变量
pipelineServiceClientConfig.apiEndpoint
更改为气流的内部端点。