要从私有仓库中拉取镜像,可以使用以下代码示例来配置Airflow KubePodOperator:
from airflow import DAG
from airflow.contrib.operators.kubernetes_pod_operator import KubernetesPodOperator
from datetime import datetime
default_args = {
'owner': 'airflow',
'start_date': datetime(2021, 1, 1)
}
dag = DAG(
'pull_image_from_private_registry',
default_args=default_args,
schedule_interval=None
)
task = KubernetesPodOperator(
dag=dag,
task_id='pull_image',
namespace='default',
image='private-registry.example.com/my-image:latest',
image_pull_secrets=[{'name': 'my-registry-secret'}],
cmds=['echo', 'Hello, Airflow!'],
name='pull_image_task'
)
在上述示例中,image
参数指定了需要拉取的镜像的名称和标签。image_pull_secrets
参数用于指定用于拉取镜像的凭据(secret)的名称。cmds
参数是一个命令列表,定义了在容器中运行的命令。
image_pull_secrets
参数的值是一个包含一个字典的列表。字典的name
键对应于Kubernetes中的凭据名称,该凭据将用于从私有仓库中拉取镜像。在Kubernetes集群中创建凭据时,可以使用kubectl create secret
命令来创建。
以上述示例为例,创建名为my-registry-secret
的凭据:
kubectl create secret docker-registry my-registry-secret \
--docker-server=private-registry.example.com \
--docker-username=my-username \
--docker-password=my-password \
--docker-email=my-email@example.com
请替换--docker-server
、--docker-username
、--docker-password
和--docker-email
参数的值为你的私有仓库的相关信息。
然后,将上述示例代码添加到Airflow的DAG文件中,并运行DAG,Airflow将使用KubernetesPodOperator从私有仓库中拉取镜像并执行指定的命令。