From 298624c7079c3feec08cfdc87223a62ce9a5a38d Mon Sep 17 00:00:00 2001 From: Laszlo Fogas Date: Wed, 10 Feb 2021 12:22:01 +0100 Subject: [PATCH] Debug toolbox in a sidecar container --- charts/onechart/Chart.yaml | 2 +- charts/onechart/templates/deployment.yaml | 20 ++++-- .../tests/deployment_debug_sidecar_test.yaml | 12 ++++ charts/onechart/values.yaml | 6 ++ docs/cron-job-0.1.2.tgz | Bin 1928 -> 1929 bytes docs/index.yaml | 66 ++++++++++-------- docs/namespaces-0.2.0.tgz | Bin 3379 -> 3379 bytes docs/onechart-0.12.0.tgz | Bin 0 -> 5386 bytes values.yaml | 17 ++--- website/docs/examples/debugSidecar.md | 21 ++++++ website/mkdocs.yml | 1 + 11 files changed, 102 insertions(+), 43 deletions(-) create mode 100644 charts/onechart/tests/deployment_debug_sidecar_test.yaml create mode 100644 docs/onechart-0.12.0.tgz create mode 100644 website/docs/examples/debugSidecar.md diff --git a/charts/onechart/Chart.yaml b/charts/onechart/Chart.yaml index 488fb99..59d1218 100644 --- a/charts/onechart/Chart.yaml +++ b/charts/onechart/Chart.yaml @@ -15,4 +15,4 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.11.0 +version: 0.12.0 diff --git a/charts/onechart/templates/deployment.yaml b/charts/onechart/templates/deployment.yaml index 4437e8c..2e07228 100644 --- a/charts/onechart/templates/deployment.yaml +++ b/charts/onechart/templates/deployment.yaml @@ -28,17 +28,17 @@ spec: {{- toYaml .Values.podSecurityContext | nindent 8 }} containers: - name: {{ .Release.Name }} - securityContext: + securityContext: &securityContext {{- toYaml .Values.securityContext | nindent 12 }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} + imagePullPolicy: {{ .Values.image.pullPolicy }} &imagePullPolicy {{- if .Values.command }} command: - {{ .Values.shell }} - -c - {{ .Values.command | quote }} {{- end }} - envFrom: + envFrom: &envFrom {{- if .Values.vars }} - configMapRef: name: {{ .Release.Name }} @@ -66,7 +66,7 @@ spec: successThreshold: 1 timeoutSeconds: 10 {{- end }} - volumeMounts: + volumeMounts: &volumeMounts {{- range .Values.volumes }} - name: {{ .name }} mountPath: {{ .path }} @@ -78,6 +78,18 @@ spec: {{- end }} resources: {{- toYaml .Values.resources | nindent 12 }} + {{- if .Values.debugSidecarEnabled }} + - name: {{ .Release.Name }}-debug + securityContext: *securityContext + image: {{ .Values.debugSidecar.image }} + imagePullPolicy: *imagePullPolicy + command: + - {{ .Values.debugSidecar.shell }} + - -c + - {{ .Values.debugSidecar.command | quote }} + envFrom: *envFrom + volumeMounts: *volumeMounts + {{- end }} volumes: {{- range .Values.volumes }} - name: {{ .name }} diff --git a/charts/onechart/tests/deployment_debug_sidecar_test.yaml b/charts/onechart/tests/deployment_debug_sidecar_test.yaml new file mode 100644 index 0000000..09eec07 --- /dev/null +++ b/charts/onechart/tests/deployment_debug_sidecar_test.yaml @@ -0,0 +1,12 @@ +suite: test deployment +templates: + - deployment.yaml + - configmap.yaml +tests: + - it: Should add a debug sidecar + set: + debugSidecarEnabled: true + asserts: + - equal: + path: spec.template.spec.containers[1].image + value: debian:stable-slim diff --git a/charts/onechart/values.yaml b/charts/onechart/values.yaml index faf9263..20ee6de 100644 --- a/charts/onechart/values.yaml +++ b/charts/onechart/values.yaml @@ -38,3 +38,9 @@ secret: enabled: false shell: "/bin/sh" + +debugSidecarEnabled: false +debugSidecar: + image: debian:stable-slim + shell: "/bin/bash" + command: "while true; do sleep 30; done;" diff --git a/docs/cron-job-0.1.2.tgz b/docs/cron-job-0.1.2.tgz index 085a5369cc73a67680d1dc6611940ae2a4c08be9..99c9c0c2e1d6feed9a0dbff0c225a1fc2ebad1b7 100644 GIT binary patch delta 1888 zcmV-m2cP(e4~Y+uK7ZV}(ZBT+1Hp&hrCqJoyRmx$?nmm}XD@aT2RRf)ao|#;U0x_s zA*nrYZNGa#QqoFV+1}tByJ>d<#4kNQGgb$<~5VP1XZJ`*4XdxuIh zDH2#61u1H(SYh1n=K_IRw*VtSl^nq=F$cnV1TSEL0u`h11M<8=%cO#}EESNV;EWPW zCICpW;BuX#Fgk+2Atj|o5OO3feIh_%j`LS2u3# z0%@t3S)WQ_@X}cMGyT1iWs$(wUw<70x`*HvD%7%66e~JHrg(uIsgcT$7|Bu9tp540 zARt-B1T$+tt&u8p%ura9qzPn%Yy6yZO%wkH^MVtDdVF^N_S=idT$+dCabNt$lapTj z&!#6Q`+xX<40wC~@*J2jN`eiPrxs@qj|>Cx|LYQYfl5cFc$iY)p7@{6PL6u<|9l$9 z`}lthxVjoYgB8mY&}blI9BpO&O>WIXmzcn_@y$(Ov4U?e3nEfiq}ziUWahqI=^q6Z z-Uw36m_P`Z$n%k(wCEv>HVCBT1|r{bo>^MaJAYq(wkrU*2BS(r;dtskS$gz0hA-!9XN;F;7Z#U^1?U3lS5fd|1`0V6U0IDvVF(ktYMI;^ zGk@?q;~eG)rM7ZvAWry7+PiF9*G(JyvaB&@zo@FscI*5uCg-}LbLhlRzS(_GH!?Pc z@I<0F-b#LLEoW!&BZVsz6DEW33qATmhdo-J>Fypj{Mqrl)`r?Rsrpg7nQl`n5Aj%> z%#q){vF`uPuJ*NQ8`^(YeLP&-TAmY%5P$wTgz(q!;{!?NxfEVVeW#Ef#Y<_2BfT8E znFOw`fC=>R4YdN>%Hyjj$#+<^%WfrO5txlZn2dQ{b*QzCV#Xc zf?`+tc7P4}aX-Q9N?SsyEQPxaDmC7tm|OC~uQiPGMi7$uL-ekS#tJ}zl zww|rLP!kTTk8mdfTe1JtC-=j^K>bIh$k-w$#Y0^N-PixkX2<>d?>L_B>%Yfsojcyk{a!;M6(BD^dhG8h?@!Ly`cXNl#k|#?R@33}qlU?6G{Nw6p-6JOcsG zo3r2=1QRI=12enai(!{3A{GdT?{WPXI9w5K>yo}+mVrZon;R#SLmWO2{^w$S2!`Tc zN%51MKipODJ@G%A9MAgkf3&~^9`kWZL9IqyGG^B}n?+pJ<5pNqSyMJ_Z6>T}y zM|d^Zj%fg0Qi@tM#Sb1G*(Jh$HOnl(gyzu z0by$+-B7f7m9PnWYub@M?tl3mhT4+Hzq~}% zv&*n#9_LevwUWHd@s;fj^soti3DQ{6;ooA&jXdHOIRJ9Y>NPP-k5~}1{3wAp4_U2Z+S?+fRgD+|J`+pMSHE)uih->Q+w2Rn&9sNVRpStGR!v+TG z|6)ZS_Rm1>>;I4Ae*Zt49UbrM|HptkbN6U88omj5J(Q-0dxV{nbGLIi9Bv)z5}CMq z{*_GYv&h#$o8eYj7`{Q0{-T({b3rkzIszjVSy;ifZVr;DJz3hOz$GPoWY6DfdGBOZ z_@P9-sR}AO6;bx@jyRL=S^wJo>Gr>g|H!spY$2q=hvsqb-+yey|8%l{|9u=V)@}DE a@*eiEhdun?!G8h(0RR8BO8hGTG5`RLprY3R delta 1887 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