仅对名称空间中的指定容器启用Istio自动注入

时间:2020-05-16 17:25:59

标签: istio argo-workflows

我们在群集中设置并运行了Istio,默认情况下启用了自动注入,并在少数名称空间中启用了自动注入。现在,我们想对其他某些命名空间中的某些容器进行自动注入,但是遇到一个问题,即如果未为整个命名空间启用它,则似乎无法对指定的容器进行自动注入。我们使用Argo工作流程自动创建广告连播,因此我们在Argo工作流程中指定sidecar.istio.io/inject: "true",以便生成的广告连播在其元数据中带有以下注释:

...
metadata:
  annotations:
    sidecar.istio.io/inject: "true"
...

不幸的是,除非命名空间的istio-injection标签明确设置为enabled,否则Istio仍不会注入sidecar,而是向在此运行的所有pod添加sidecar。

由于Pogo是由Argo服务自动创建的,因此我们不能使用手动注入,并且我们希望根据工作流程的定义将边车仅注入特定的Pod。

那么有什么可能的方法来克服这个问题?谢谢!

完整Argo工作流程:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: presto-sql-pipeline-
  annotations: {pipelines.kubeflow.org/kfp_sdk_version: 0.5.1, pipelines.kubeflow.org/pipeline_compilation_time: '2020-05-16T16:07:29.173967',
    pipelines.kubeflow.org/pipeline_spec: '{"description": "Simple demo of Presto
      SQL operator PrestoSQLOp", "name": "Presto SQL Pipeline"}'}
  labels: {pipelines.kubeflow.org/kfp_sdk_version: 0.5.1}
spec:
  entrypoint: presto-sql-pipeline
  templates:
  - name: presto-demo
    container:
      args:
      - --source-name
      - '{{workflow.namespace}}.{{workflow.name}}.presto-demo'
      - --query-sql
      - "SELECT 1;"
      image: gcr.io/our-data-warehouse/presto-cli:latest
      volumeMounts:
      - {mountPath: /mnt/secrets, name: presto-local-vol}
    metadata:
      annotations:
        sidecar.istio.io/inject: "true"
      labels: {pipelines.kubeflow.org/pipeline-sdk-type: kfp}
    volumes:
    - name: presto-local-vol
      secret: {secretName: presto-local}
  - name: presto-sql-pipeline
    dag:
      tasks:
      - {name: presto-demo, template: presto-demo}
  arguments:
    parameters: []
  serviceAccountName: argo

0 个答案:

没有答案