容器注入

Sidecar 容器作为与业务容器解耦的存在,可以帮助我们很多辅助性的重要工作,比如常见的日志代理、用来实现 Service Mesh 等等。

注:这个运维特征默认在 VelaUX 处隐藏,你可以在 CLI 侧使用。

这一次,让我们来编写一个应用部署计划里的组件 log-gen-worker。 同时我们将 sidecar 所记录的日志数据目录,和组件指向同一个数据存储卷 varlog。

  1. cat <<EOF | vela up -f -
  2. # YAML 文件开始
  3. apiVersion: core.oam.dev/v1beta1
  4. kind: Application
  5. metadata:
  6. name: vela-app-with-sidecar
  7. spec:
  8. components:
  9. - name: log-gen-worker
  10. type: worker
  11. properties:
  12. image: busybox
  13. cmd:
  14. - /bin/sh
  15. - -c
  16. - >
  17. i=0;
  18. while true;
  19. do
  20. echo "$i: $(date)" >> /var/log/date.log;
  21. i=$((i+1));
  22. sleep 1;
  23. done
  24. volumes:
  25. - name: varlog
  26. mountPath: /var/log
  27. type: emptyDir
  28. traits:
  29. - type: sidecar
  30. properties:
  31. name: count-log
  32. image: busybox
  33. cmd: [ /bin/sh, -c, 'tail -n+1 -f /var/log/date.log']
  34. volumes:
  35. - name: varlog
  36. path: /var/log
  37. # YAML 文件结束
  38. EOF

使用 vela ls 查看应用是否部署成功:

  1. $ vela ls
  2. APP COMPONENT TYPE TRAITS PHASE HEALTHY STATUS CREATED-TIME
  3. vela-app-with-sidecar log-gen-worker worker sidecar running healthy 2021-08-29 22:07:07 +0800 CST

成功后,查看 Sidecar 所输出的日志

  1. vela logs vela-app-with-sidecar --container count-log

从输出的日志可以看到读取日志的 sidecar 已经生效。

expected output

  1. 0: Fri Apr 16 11:08:45 UTC 2021
  2. 1: Fri Apr 16 11:08:46 UTC 2021
  3. 2: Fri Apr 16 11:08:47 UTC 2021
  4. 3: Fri Apr 16 11:08:48 UTC 2021
  5. 4: Fri Apr 16 11:08:49 UTC 2021
  6. 5: Fri Apr 16 11:08:50 UTC 2021
  7. 6: Fri Apr 16 11:08:51 UTC 2021
  8. 7: Fri Apr 16 11:08:52 UTC 2021
  9. 8: Fri Apr 16 11:08:53 UTC 2021
  10. 9: Fri Apr 16 11:08:54 UTC 2021

Last updated on 2023年8月4日 by Daniel Higuero