Airflow - KubernetesPodOperator - 角色绑定服务帐户
Airflow - KubernetesPodOperator - Role binding a service account
我目前正在使用 KubernetesPodOperator 运行 Kubernetes 集群上的 Pod。我收到以下错误:
kubernetes.client.rest.ApiException: (403) Reason: Forbidden
HTTP response headers: HTTPHeaderDict({'Audit-Id': '',
'Cache-Control': 'no-cache, private', 'Content-Type':
'application/json', 'X-Content-Type-Options': 'nosniff', 'Date': 'Mon,
30 Aug 2021 00:12:57 GMT', 'Content-Length': '309'})
HTTP response body:
{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"pods
is forbidden: User
"system:serviceaccount:airflow10:airflow-worker-serviceaccount"
cannot list resource "pods" in API group "" in the namespace
"default"","reason":"Forbidden","details":{"kind":"pods"},"code":403}
我可以通过 运行以下命令解决此问题:
kubectl create clusterrole pod-creator --verb=create,get,list,watch
--resource=pods
kubectl create clusterrolebinding pod-creator-clusterrolebinding
--clusterrole=pod-creator --serviceaccount=airflow10:airflow-worker-serviceaccount
但我希望能够在 airflow 中自动设置具有正确权限的服务帐户。无需 运行 上述命令即可执行此操作的好方法是什么?
你真的不能。您需要在部署气流时分配和创建角色,否则这将意味着您存在巨大的安全风险,因为部署的应用程序将能够授予更多权限。
如果您打算在某种程度上使部署自动化,则可以通过多种方式“自动”完成此操作。例如,如果您的气流部署是通过 Helm 图表完成的,该图表可以添加配置正确的资源以创建适当的角色绑定。您可以看到我们的官方 Helm 图表是如何做到的:
我目前正在使用 KubernetesPodOperator 运行 Kubernetes 集群上的 Pod。我收到以下错误:
kubernetes.client.rest.ApiException: (403) Reason: Forbidden
HTTP response headers: HTTPHeaderDict({'Audit-Id': '', 'Cache-Control': 'no-cache, private', 'Content-Type': 'application/json', 'X-Content-Type-Options': 'nosniff', 'Date': 'Mon, 30 Aug 2021 00:12:57 GMT', 'Content-Length': '309'})
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"pods is forbidden: User "system:serviceaccount:airflow10:airflow-worker-serviceaccount" cannot list resource "pods" in API group "" in the namespace "default"","reason":"Forbidden","details":{"kind":"pods"},"code":403}
我可以通过 运行以下命令解决此问题:
kubectl create clusterrole pod-creator --verb=create,get,list,watch --resource=pods
kubectl create clusterrolebinding pod-creator-clusterrolebinding --clusterrole=pod-creator --serviceaccount=airflow10:airflow-worker-serviceaccount
但我希望能够在 airflow 中自动设置具有正确权限的服务帐户。无需 运行 上述命令即可执行此操作的好方法是什么?
你真的不能。您需要在部署气流时分配和创建角色,否则这将意味着您存在巨大的安全风险,因为部署的应用程序将能够授予更多权限。
如果您打算在某种程度上使部署自动化,则可以通过多种方式“自动”完成此操作。例如,如果您的气流部署是通过 Helm 图表完成的,该图表可以添加配置正确的资源以创建适当的角色绑定。您可以看到我们的官方 Helm 图表是如何做到的: