我想将一个fluent位代理添加到现有的通过外部工具( Istio入口 Deployment,istioctl)生成的sidecar容器中。我认为使用ytt及其覆盖层可以很好地实现这一点,因为它应该允许我在Deployment中附加一个额外的container和一些额外的volumes,同时保留生成的YAML的其余部分。
下面是一个占位符Deployment,它近似于一个istio-ingressgateay以帮助可视化结构:
---
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我想在这个文件中添加一个容器,如下所示:
- 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看起来像:
- 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操场上的覆盖文件示例,我成功地破解了一些东西,如下所示:
#@ 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来做这件事的最好、最惯用的方法是什么?
谢谢!
发布于 2020-08-14 21:04:30
你现在拥有的是好的!我要提出的一个建议是,如果体积和容器总是需要加在一起,它们就会被合并到相同的覆盖层中,如下所示:
#@ 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这将保证任何时候容器被添加,适当的卷也将包括在内。
https://stackoverflow.com/questions/63419404
复制相似问题