Skip to content

Commit 928d886

Browse files
committed
be able to add containers to Kiali pod
fixes: kiali/kiali#5028
1 parent 06b2765 commit 928d886

File tree

7 files changed

+183
-160
lines changed

7 files changed

+183
-160
lines changed

crd-docs/cr/kiali.io_v1alpha1_kiali.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ spec:
5757

5858
deployment:
5959
accessible_namespaces: ["^((?!(istio-operator|kube-.*|openshift.*|ibm.*|kiali-operator)).)*$"]
60+
additional_pod_containers_yaml: {}
6061
# default: additional_service_yaml is empty
6162
additional_service_yaml:
6263
externalName: "kiali.example.com"

crd-docs/crd/kiali.io_kialis.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@ spec:
217217
type: array
218218
items:
219219
type: string
220+
additional_pod_containers_yaml:
221+
description: "Additional containers to add to the list of pod containers. Use this to add a sidecar(s) to the Kiali pod. Use with care since sidecars may cause the Kiali container itself to operate incorrectly. It is up to the user who added the additional containers to ensure it works properly inside the Kiali pod; Kiali makes no guarantee additional containers will work."
222+
type: object
223+
x-kubernetes-preserve-unknown-fields: true
220224
additional_service_yaml:
221225
description: "Additional custom yaml to add to the service definition. This is used mainly to customize the service type. For example, if the `deployment.service_type` is set to 'LoadBalancer' and you want to set the loadBalancerIP, you can do so here with: `additional_service_yaml: { 'loadBalancerIP': '78.11.24.19' }`. Another example would be if the `deployment.service_type` is set to 'ExternalName' you will need to configure the name via: `additional_service_yaml: { 'externalName': 'my.kiali.example.com' }`. A final example would be if external IPs need to be set: `additional_service_yaml: { 'externalIPs': ['80.11.12.10'] }`"
222226
type: object

roles/default/kiali-deploy/defaults/main.yml

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ kiali_defaults:
5252

5353
deployment:
5454
accessible_namespaces: ["^((?!(istio-operator|kube-.*|openshift.*|ibm.*|kiali-operator)).)*$"]
55+
additional_pod_containers_yaml: {}
5556
#additional_service_yaml:
5657
affinity:
5758
node: {}

roles/default/kiali-deploy/tasks/main.yml

+2-160
Original file line numberDiff line numberDiff line change
@@ -90,166 +90,8 @@
9090
- kiali_vars.deployment.ingress_enabled is defined
9191
- kiali_vars.deployment.ingress is not defined or kiali_vars.deployment.ingress.enabled is not defined
9292

93-
# Because we are passing through some yaml directly to Kubernetes resources, we have to retain the camelCase keys.
94-
# All CR parameters are converted to snake_case, but the original yaml is found in the special _kiali_io_kiali param.
95-
# We need to copy that original yaml into our vars where appropriate to keep the camelCase.
96-
97-
- name: Replace snake_case with camelCase in deployment.affinity.node
98-
set_fact:
99-
kiali_vars: |
100-
{% set a=kiali_vars['deployment']['affinity'].pop('node') %}
101-
{{ kiali_vars | combine({'deployment': {'affinity': {'node': current_cr.spec.deployment.affinity.node }}}, recursive=True) }}
102-
when:
103-
- kiali_vars.deployment.affinity is defined
104-
- kiali_vars.deployment.affinity.node is defined
105-
- kiali_vars.deployment.affinity.node | length > 0
106-
107-
- name: Replace snake_case with camelCase in deployment.affinity.pod
108-
set_fact:
109-
kiali_vars: |
110-
{% set a=kiali_vars['deployment']['affinity'].pop('pod') %}
111-
{{ kiali_vars | combine({'deployment': {'affinity': {'pod': current_cr.spec.deployment.affinity.pod }}}, recursive=True) }}
112-
when:
113-
- kiali_vars.deployment.affinity is defined
114-
- kiali_vars.deployment.affinity.pod is defined
115-
- kiali_vars.deployment.affinity.pod | length > 0
116-
117-
- name: Replace snake_case with camelCase in deployment.affinity.pod_anti
118-
set_fact:
119-
kiali_vars: |
120-
{% set a=kiali_vars['deployment']['affinity'].pop('pod_anti') %}
121-
{{ kiali_vars | combine({'deployment': {'affinity': {'pod_anti': current_cr.spec.deployment.affinity.pod_anti }}}, recursive=True) }}
122-
when:
123-
- kiali_vars.deployment.affinity is defined
124-
- kiali_vars.deployment.affinity.pod_anti is defined
125-
- kiali_vars.deployment.affinity.pod_anti | length > 0
126-
127-
- name: Replace snake_case with camelCase in deployment.tolerations
128-
set_fact:
129-
kiali_vars: |
130-
{% set a=kiali_vars['deployment'].pop('tolerations') %}
131-
{{ kiali_vars | combine({'deployment': {'tolerations': current_cr.spec.deployment.tolerations }}, recursive=True) }}
132-
when:
133-
- kiali_vars.deployment.tolerations is defined
134-
- kiali_vars.deployment.tolerations | length > 0
135-
136-
- name: Replace snake_case with camelCase in deployment.additional_service_yaml
137-
set_fact:
138-
kiali_vars: |
139-
{% set a=kiali_vars['deployment'].pop('additional_service_yaml') %}
140-
{{ kiali_vars | combine({'deployment': {'additional_service_yaml': current_cr.spec.deployment.additional_service_yaml }}, recursive=True) }}
141-
when:
142-
- kiali_vars.deployment.additional_service_yaml is defined
143-
- kiali_vars.deployment.additional_service_yaml | length > 0
144-
145-
- name: Replace snake_case with camelCase in deployment.resources
146-
set_fact:
147-
kiali_vars: |
148-
{% set a=kiali_vars['deployment'].pop('resources') %}
149-
{{ kiali_vars | combine({'deployment': {'resources': current_cr.spec.deployment.resources }}, recursive=True) }}
150-
when:
151-
- kiali_vars.deployment.resources is defined
152-
- kiali_vars.deployment.resources | length > 0
153-
154-
- name: Replace snake_case with camelCase in deployment.ingress.override_yaml
155-
set_fact:
156-
kiali_vars: |
157-
{% set a=kiali_vars['deployment']['ingress'].pop('override_yaml') %}
158-
{{ kiali_vars | combine({'deployment': {'ingress': {'override_yaml': current_cr.spec.deployment.ingress.override_yaml }}}, recursive=True) }}
159-
when:
160-
- kiali_vars.deployment.ingress.override_yaml is defined
161-
- kiali_vars.deployment.ingress.override_yaml | length > 0
162-
163-
- name: Replace snake_case with camelCase in deployment.pod_annotations
164-
set_fact:
165-
kiali_vars: |
166-
{% set a=kiali_vars['deployment'].pop('pod_annotations') %}
167-
{{ kiali_vars | combine({'deployment': {'pod_annotations': current_cr.spec.deployment.pod_annotations }}, recursive=True) }}
168-
when:
169-
- kiali_vars.deployment.pod_annotations is defined
170-
- kiali_vars.deployment.pod_annotations | length > 0
171-
172-
- name: Replace snake_case with camelCase in deployment.pod_labels
173-
set_fact:
174-
kiali_vars: |
175-
{% set a=kiali_vars['deployment'].pop('pod_labels') %}
176-
{{ kiali_vars | combine({'deployment': {'pod_labels': current_cr.spec.deployment.pod_labels }}, recursive=True) }}
177-
when:
178-
- kiali_vars.deployment.pod_labels is defined
179-
- kiali_vars.deployment.pod_labels | length > 0
180-
181-
- name: Replace snake_case with camelCase in deployment.service_annotations
182-
set_fact:
183-
kiali_vars: |
184-
{% set a=kiali_vars['deployment'].pop('service_annotations') %}
185-
{{ kiali_vars | combine({'deployment': {'service_annotations': current_cr.spec.deployment.service_annotations }}, recursive=True) }}
186-
when:
187-
- kiali_vars.deployment.service_annotations is defined
188-
- kiali_vars.deployment.service_annotations | length > 0
189-
190-
- name: Replace snake_case with camelCase in deployment.hpa.spec
191-
set_fact:
192-
kiali_vars: |
193-
{% set a=kiali_vars['deployment']['hpa'].pop('spec') %}
194-
{{ kiali_vars | combine({'deployment': {'hpa': {'spec': current_cr.spec.deployment.hpa.spec }}}, recursive=True) }}
195-
when:
196-
- kiali_vars.deployment.hpa is defined
197-
- kiali_vars.deployment.hpa.spec is defined
198-
- kiali_vars.deployment.hpa.spec | length > 0
199-
200-
- name: Replace snake_case with camelCase in deployment.node_selector
201-
set_fact:
202-
kiali_vars: |
203-
{% set a=kiali_vars['deployment'].pop('node_selector') %}
204-
{{ kiali_vars | combine({'deployment': {'node_selector': current_cr.spec.deployment.node_selector }}, recursive=True) }}
205-
when:
206-
- kiali_vars.deployment.node_selector is defined
207-
- kiali_vars.deployment.node_selector | length > 0
208-
209-
- name: Replace snake_case with camelCase in external_services.custom_dashboards.prometheus.custom_headers
210-
set_fact:
211-
kiali_vars: |
212-
{% set a=kiali_vars['external_services']['custom_dashboards']['prometheus'].pop('custom_headers') %}
213-
{{ kiali_vars | combine({'external_services': {'custom_dashboards': {'prometheus': {'custom_headers': current_cr.spec.external_services.custom_dashboards.prometheus.custom_headers }}}}, recursive=True) }}
214-
when:
215-
- kiali_vars.external_services.custom_dashboards.prometheus.custom_headers is defined
216-
- kiali_vars.external_services.custom_dashboards.prometheus.custom_headers | length > 0
217-
218-
- name: Replace snake_case with camelCase in external_services.custom_dashboards.prometheus.query_scope
219-
set_fact:
220-
kiali_vars: |
221-
{% set a=kiali_vars['external_services']['custom_dashboards']['prometheus'].pop('query_scope') %}
222-
{{ kiali_vars | combine({'external_services': {'custom_dashboards': {'prometheus': {'query_scope': current_cr.spec.external_services.custom_dashboards.prometheus.query_scope }}}}, recursive=True) }}
223-
when:
224-
- kiali_vars.external_services.custom_dashboards.prometheus.query_scope is defined
225-
- kiali_vars.external_services.custom_dashboards.prometheus.query_scope | length > 0
226-
227-
- name: Replace snake_case with camelCase in external_services.prometheus.custom_headers
228-
set_fact:
229-
kiali_vars: |
230-
{% set a=kiali_vars['external_services']['prometheus'].pop('custom_headers') %}
231-
{{ kiali_vars | combine({'external_services': {'prometheus': {'custom_headers': current_cr.spec.external_services.prometheus.custom_headers }}}, recursive=True) }}
232-
when:
233-
- kiali_vars.external_services.prometheus.custom_headers is defined
234-
- kiali_vars.external_services.prometheus.custom_headers | length > 0
235-
236-
- name: Replace snake_case with camelCase in external_services.prometheus.query_scope
237-
set_fact:
238-
kiali_vars: |
239-
{% set a=kiali_vars['external_services']['prometheus'].pop('query_scope') %}
240-
{{ kiali_vars | combine({'external_services': {'prometheus': {'query_scope': current_cr.spec.external_services.prometheus.query_scope }}}, recursive=True) }}
241-
when:
242-
- kiali_vars.external_services.prometheus.query_scope is defined
243-
- kiali_vars.external_services.prometheus.query_scope | length > 0
244-
245-
- name: Replace snake_case with camelCase in deployment.configmap_annotations
246-
set_fact:
247-
kiali_vars: |
248-
{% set a=kiali_vars['deployment'].pop('configmap_annotations') %}
249-
{{ kiali_vars | combine({'deployment': {'configmap_annotations': current_cr.spec.deployment.configmap_annotations }}, recursive=True) }}
250-
when:
251-
- kiali_vars.deployment.configmap_annotations is defined
252-
- kiali_vars.deployment.configmap_annotations | length > 0
93+
# convert snake case to camelCase where appropriate
94+
- include_tasks: snake_camel_case.yaml
25395

25496
- name: Print some debug information
25597
vars:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
# Because we are passing through some yaml directly to Kubernetes resources, we have to retain the camelCase keys.
2+
# All CR parameters are converted to snake_case, but the original yaml is found in the special _kiali_io_kiali param.
3+
# We need to copy that original yaml into our vars where appropriate to keep the camelCase.
4+
5+
- name: Replace snake_case with camelCase in deployment.affinity.node
6+
set_fact:
7+
kiali_vars: |
8+
{% set a=kiali_vars['deployment']['affinity'].pop('node') %}
9+
{{ kiali_vars | combine({'deployment': {'affinity': {'node': current_cr.spec.deployment.affinity.node }}}, recursive=True) }}
10+
when:
11+
- kiali_vars.deployment.affinity is defined
12+
- kiali_vars.deployment.affinity.node is defined
13+
- kiali_vars.deployment.affinity.node | length > 0
14+
15+
- name: Replace snake_case with camelCase in deployment.affinity.pod
16+
set_fact:
17+
kiali_vars: |
18+
{% set a=kiali_vars['deployment']['affinity'].pop('pod') %}
19+
{{ kiali_vars | combine({'deployment': {'affinity': {'pod': current_cr.spec.deployment.affinity.pod }}}, recursive=True) }}
20+
when:
21+
- kiali_vars.deployment.affinity is defined
22+
- kiali_vars.deployment.affinity.pod is defined
23+
- kiali_vars.deployment.affinity.pod | length > 0
24+
25+
- name: Replace snake_case with camelCase in deployment.affinity.pod_anti
26+
set_fact:
27+
kiali_vars: |
28+
{% set a=kiali_vars['deployment']['affinity'].pop('pod_anti') %}
29+
{{ kiali_vars | combine({'deployment': {'affinity': {'pod_anti': current_cr.spec.deployment.affinity.pod_anti }}}, recursive=True) }}
30+
when:
31+
- kiali_vars.deployment.affinity is defined
32+
- kiali_vars.deployment.affinity.pod_anti is defined
33+
- kiali_vars.deployment.affinity.pod_anti | length > 0
34+
35+
- name: Replace snake_case with camelCase in deployment.tolerations
36+
set_fact:
37+
kiali_vars: |
38+
{% set a=kiali_vars['deployment'].pop('tolerations') %}
39+
{{ kiali_vars | combine({'deployment': {'tolerations': current_cr.spec.deployment.tolerations }}, recursive=True) }}
40+
when:
41+
- kiali_vars.deployment.tolerations is defined
42+
- kiali_vars.deployment.tolerations | length > 0
43+
44+
- name: Replace snake_case with camelCase in deployment.additional_service_yaml
45+
set_fact:
46+
kiali_vars: |
47+
{% set a=kiali_vars['deployment'].pop('additional_service_yaml') %}
48+
{{ kiali_vars | combine({'deployment': {'additional_service_yaml': current_cr.spec.deployment.additional_service_yaml }}, recursive=True) }}
49+
when:
50+
- kiali_vars.deployment.additional_service_yaml is defined
51+
- kiali_vars.deployment.additional_service_yaml | length > 0
52+
53+
- name: Replace snake_case with camelCase in deployment.resources
54+
set_fact:
55+
kiali_vars: |
56+
{% set a=kiali_vars['deployment'].pop('resources') %}
57+
{{ kiali_vars | combine({'deployment': {'resources': current_cr.spec.deployment.resources }}, recursive=True) }}
58+
when:
59+
- kiali_vars.deployment.resources is defined
60+
- kiali_vars.deployment.resources | length > 0
61+
62+
- name: Replace snake_case with camelCase in deployment.ingress.override_yaml
63+
set_fact:
64+
kiali_vars: |
65+
{% set a=kiali_vars['deployment']['ingress'].pop('override_yaml') %}
66+
{{ kiali_vars | combine({'deployment': {'ingress': {'override_yaml': current_cr.spec.deployment.ingress.override_yaml }}}, recursive=True) }}
67+
when:
68+
- kiali_vars.deployment.ingress.override_yaml is defined
69+
- kiali_vars.deployment.ingress.override_yaml | length > 0
70+
71+
- name: Replace snake_case with camelCase in deployment.pod_annotations
72+
set_fact:
73+
kiali_vars: |
74+
{% set a=kiali_vars['deployment'].pop('pod_annotations') %}
75+
{{ kiali_vars | combine({'deployment': {'pod_annotations': current_cr.spec.deployment.pod_annotations }}, recursive=True) }}
76+
when:
77+
- kiali_vars.deployment.pod_annotations is defined
78+
- kiali_vars.deployment.pod_annotations | length > 0
79+
80+
- name: Replace snake_case with camelCase in deployment.pod_labels
81+
set_fact:
82+
kiali_vars: |
83+
{% set a=kiali_vars['deployment'].pop('pod_labels') %}
84+
{{ kiali_vars | combine({'deployment': {'pod_labels': current_cr.spec.deployment.pod_labels }}, recursive=True) }}
85+
when:
86+
- kiali_vars.deployment.pod_labels is defined
87+
- kiali_vars.deployment.pod_labels | length > 0
88+
89+
- name: Replace snake_case with camelCase in deployment.service_annotations
90+
set_fact:
91+
kiali_vars: |
92+
{% set a=kiali_vars['deployment'].pop('service_annotations') %}
93+
{{ kiali_vars | combine({'deployment': {'service_annotations': current_cr.spec.deployment.service_annotations }}, recursive=True) }}
94+
when:
95+
- kiali_vars.deployment.service_annotations is defined
96+
- kiali_vars.deployment.service_annotations | length > 0
97+
98+
- name: Replace snake_case with camelCase in deployment.hpa.spec
99+
set_fact:
100+
kiali_vars: |
101+
{% set a=kiali_vars['deployment']['hpa'].pop('spec') %}
102+
{{ kiali_vars | combine({'deployment': {'hpa': {'spec': current_cr.spec.deployment.hpa.spec }}}, recursive=True) }}
103+
when:
104+
- kiali_vars.deployment.hpa is defined
105+
- kiali_vars.deployment.hpa.spec is defined
106+
- kiali_vars.deployment.hpa.spec | length > 0
107+
108+
- name: Replace snake_case with camelCase in deployment.node_selector
109+
set_fact:
110+
kiali_vars: |
111+
{% set a=kiali_vars['deployment'].pop('node_selector') %}
112+
{{ kiali_vars | combine({'deployment': {'node_selector': current_cr.spec.deployment.node_selector }}, recursive=True) }}
113+
when:
114+
- kiali_vars.deployment.node_selector is defined
115+
- kiali_vars.deployment.node_selector | length > 0
116+
117+
- name: Replace snake_case with camelCase in external_services.custom_dashboards.prometheus.custom_headers
118+
set_fact:
119+
kiali_vars: |
120+
{% set a=kiali_vars['external_services']['custom_dashboards']['prometheus'].pop('custom_headers') %}
121+
{{ kiali_vars | combine({'external_services': {'custom_dashboards': {'prometheus': {'custom_headers': current_cr.spec.external_services.custom_dashboards.prometheus.custom_headers }}}}, recursive=True) }}
122+
when:
123+
- kiali_vars.external_services.custom_dashboards.prometheus.custom_headers is defined
124+
- kiali_vars.external_services.custom_dashboards.prometheus.custom_headers | length > 0
125+
126+
- name: Replace snake_case with camelCase in external_services.custom_dashboards.prometheus.query_scope
127+
set_fact:
128+
kiali_vars: |
129+
{% set a=kiali_vars['external_services']['custom_dashboards']['prometheus'].pop('query_scope') %}
130+
{{ kiali_vars | combine({'external_services': {'custom_dashboards': {'prometheus': {'query_scope': current_cr.spec.external_services.custom_dashboards.prometheus.query_scope }}}}, recursive=True) }}
131+
when:
132+
- kiali_vars.external_services.custom_dashboards.prometheus.query_scope is defined
133+
- kiali_vars.external_services.custom_dashboards.prometheus.query_scope | length > 0
134+
135+
- name: Replace snake_case with camelCase in external_services.prometheus.custom_headers
136+
set_fact:
137+
kiali_vars: |
138+
{% set a=kiali_vars['external_services']['prometheus'].pop('custom_headers') %}
139+
{{ kiali_vars | combine({'external_services': {'prometheus': {'custom_headers': current_cr.spec.external_services.prometheus.custom_headers }}}, recursive=True) }}
140+
when:
141+
- kiali_vars.external_services.prometheus.custom_headers is defined
142+
- kiali_vars.external_services.prometheus.custom_headers | length > 0
143+
144+
- name: Replace snake_case with camelCase in external_services.prometheus.query_scope
145+
set_fact:
146+
kiali_vars: |
147+
{% set a=kiali_vars['external_services']['prometheus'].pop('query_scope') %}
148+
{{ kiali_vars | combine({'external_services': {'prometheus': {'query_scope': current_cr.spec.external_services.prometheus.query_scope }}}, recursive=True) }}
149+
when:
150+
- kiali_vars.external_services.prometheus.query_scope is defined
151+
- kiali_vars.external_services.prometheus.query_scope | length > 0
152+
153+
- name: Replace snake_case with camelCase in deployment.configmap_annotations
154+
set_fact:
155+
kiali_vars: |
156+
{% set a=kiali_vars['deployment'].pop('configmap_annotations') %}
157+
{{ kiali_vars | combine({'deployment': {'configmap_annotations': current_cr.spec.deployment.configmap_annotations }}, recursive=True) }}
158+
when:
159+
- kiali_vars.deployment.configmap_annotations is defined
160+
- kiali_vars.deployment.configmap_annotations | length > 0
161+
162+
- name: Replace snake_case with camelCase in deployment.additional_pod_containers_yaml
163+
set_fact:
164+
kiali_vars: |
165+
{% set a=kiali_vars['deployment'].pop('additional_pod_containers_yaml') %}
166+
{{ kiali_vars | combine({'deployment': {'additional_pod_containers_yaml': current_cr.spec.deployment.additional_pod_containers_yaml }}, recursive=True) }}
167+
when:
168+
- kiali_vars.deployment.additional_pod_containers_yaml is defined
169+
- kiali_vars.deployment.additional_pod_containers_yaml | length > 0

roles/default/kiali-deploy/templates/kubernetes/deployment.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ spec:
117117
{{ kiali_vars.deployment.resources | to_nice_yaml(indent=0) | trim | indent(10) }}
118118
{% else %}
119119
resources: null
120+
{% endif %}
121+
{% if kiali_vars.deployment.additional_pod_containers_yaml|length > 0 %}
122+
{{ kiali_vars.deployment.additional_pod_containers_yaml | to_nice_yaml(indent=0) | trim | indent(6) }}
120123
{% endif %}
121124
volumes:
122125
- name: kiali-configuration

roles/default/kiali-deploy/templates/openshift/deployment.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,9 @@ spec:
121121
{{ kiali_vars.deployment.resources | to_nice_yaml(indent=0) | trim | indent(10) }}
122122
{% else %}
123123
resources: null
124+
{% endif %}
125+
{% if kiali_vars.deployment.additional_pod_containers_yaml|length > 0 %}
126+
{{ kiali_vars.deployment.additional_pod_containers_yaml | to_nice_yaml(indent=0) | trim | indent(6) }}
124127
{% endif %}
125128
volumes:
126129
- name: kiali-configuration

0 commit comments

Comments
 (0)