首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ytt向现有的Kubernetes部署中添加sidecar容器?

如何使用ytt向现有的Kubernetes部署中添加sidecar容器?
EN

Stack Overflow用户
提问于 2020-08-14 20:08:04
回答 1查看 359关注 0票数 1

我想将一个fluent位代理添加到现有的通过外部工具( Istio入口 Deploymentistioctl)生成的sidecar容器中。我认为使用ytt及其覆盖层可以很好地实现这一点,因为它应该允许我在Deployment中附加一个额外的container和一些额外的volumes,同时保留生成的YAML的其余部分。

下面是一个占位符Deployment,它近似于一个istio-ingressgateay以帮助可视化结构:

代码语言:javascript
复制
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: istio-ingressgateway
  namespace: istio-system
spec:
  selector:
    matchLabels:
      app: istio-ingressgateway
  template:
    metadata:
      labels:
        app: istio-ingressgateway
    spec:
      containers:
      - args:
        - example-args
        command: ["example-command"]
        image: gcr.io/istio/proxyv2
        imagePullPolicy: Always
        name: istio-proxy
      volumes:
        - name: example-volume-secret
          secret:
            secretName: example-secret
        - name: example-volume-configmap
          configMap:
            name: example-configmap

我想在这个文件中添加一个容器,如下所示:

代码语言:javascript
复制
- name: fluent-bit
  image: fluent/fluent-bit
  resources:
    limits:
      memory: 100Mi
    requests:
      cpu: 10m
      memory: 10Mi
  volumeMounts:
  - name: fluent-bit-config
    mountPath: /fluent-bit/etc
  - name: varlog
    mountPath: /var/log
  - name: dockercontainers
    mountPath: /var/lib/docker/containers
    readOnly: true

并且volumes看起来像:

代码语言:javascript
复制
- name: fluent-bit-config
  configMap:
    name: ingressgateway-fluent-bit-forwarder-config
- name: varlog
  hostPath:
    path: /var/log
- name: dockercontainers
  hostPath:
    path: /var/lib/docker/containers

通过修改ytt操场上的覆盖文件示例,我成功地破解了一些东西,如下所示:

代码语言:javascript
复制
#@ load("@ytt:overlay", "overlay")
 #@overlay/match by=overlay.subset({"kind": "Deployment", "metadata":{"name":"istio-ingressgateway"}}),expects=1
 ---
 spec:
   template:
     spec:
       containers:
       #@overlay/append
       - name: fluent-bit
         image: fluent/fluent-bit
         resources:
           limits:
             memory: 100Mi
           requests:
             cpu: 10m
             memory: 10Mi
         volumeMounts:
         - name: fluent-bit-config
           mountPath: /fluent-bit/etc
         - name: varlog
           mountPath: /var/log
         - name: dockercontainers
           mountPath: /var/lib/docker/containers
           readOnly: true
 #@overlay/match by=overlay.subset({"kind": "Deployment", "metadata":{"name":"istio-ingressgateway"}}),expects=1
 ---
 spec:
   template:
     spec:
       volumes:
       #@overlay/append
       - name: fluent-bit-config
         configMap:
           name: ingressgateway-fluent-bit-forwarder-config
       #@overlay/append
       - name: varlog
         hostPath:
           path: /var/log
       #@overlay/append
       - name: dockercontainers
         hostPath:
           path: /var/lib/docker/containers

然而,我想知道的是,使用ytt来做这件事的最好、最惯用的方法是什么?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-14 21:04:30

你现在拥有的是好的!我要提出的一个建议是,如果体积和容器总是需要加在一起,它们就会被合并到相同的覆盖层中,如下所示:

代码语言:javascript
复制
#@ load("@ytt:overlay", "overlay")

#@overlay/match by=overlay.subset({"kind": "Deployment", "metadata":{"name":"istio-ingressgateway"}}),expects=1
---
spec:
  template:
    spec:
      containers:
      #@overlay/append
      - name: fluent-bit
        image: fluent/fluent-bit
        resources:
          limits:
            memory: 100Mi
          requests:
            cpu: 10m
            memory: 10Mi
        volumeMounts:
        - name: fluent-bit-config
          mountPath: /fluent-bit/etc
        - name: varlog
          mountPath: /var/log
        - name: dockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      volumes:
      #@overlay/append
      - name: fluent-bit-config
        configMap:
          name: ingressgateway-fluent-bit-forwarder-config
      #@overlay/append
      - name: varlog
        hostPath:
          path: /var/log
      #@overlay/append
      - name: dockercontainers
        hostPath:
          path: /var/lib/docker/containers

这将保证任何时候容器被添加,适当的卷也将包括在内。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63419404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档