
# 如何为普通任务（Job)和定时任务（CronJob）类型负载注入sidecar
#### 前置条件
- 确认使用ASM1.15.5-r3及以上版本创建网格。
- 默认场景下，对普通任务（Job）和定时任务（CronJob）类型负载创建的Pod不进行sidecar注入，如果需要注入请在创建工作负载时，设置高级参数"标签与注解\> Pod标签"sidecar.istio.io/inject: 'true'。如下图：
![](https://support.huaweicloud.com/asm_faq/zh-cn_image_0000001933182765.png)
参考CronJob示例：
```
kind: CronJob
apiVersion: batch/v1
metadata:
  name: mycronjob
  namespace: default
spec:
  schedule: '*/1 * * * *'
  jobTemplate:
    spec:
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: mycronjob
            sidecar.istio.io/inject: 'true'
...
```
- 要使用Job/CronJob类型的话，需要在容器中使用指令退出sidecar。
 
#### 任务完成后sidecar退出
通过调用istio-proxy接口**curl -sf -XPOST http://127.0.0.1:15000/quitquitquit**，在Job工作完成后退出istio-proxy。
参考CronJob示例：
```
kind: CronJob
apiVersion: batch/v1
metadata:
  name: mycronjob
  namespace: default
spec:
  schedule: '*/1 * * * *'
  concurrencyPolicy: Forbid
  suspend: false
  jobTemplate:
    metadata:
      creationTimestamp: null
    spec:
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: cronjob1
            sidecar.istio.io/inject: 'true'
            version: v1
        spec:
          containers:
            - name: mycronjob-1
              image: 'busybox:latest'
              command:
                - /bin/bash
                - '-c'
              args:
                - |
                  trap "curl --max-time 2 -s -f -XPOST http://127.0.0.1:15000/quitquitquit" EXIT
                  while ! curl -s -f http://127.0.0.1:15021/healthz/ready; do sleep 1;done
                  sleep 2
                  date; echo Hello from the Kubernetes cluster<Your Job command/真实业务运行命令>
...
```
