feat(argo-rollouts): Add possibility to configure healthz and metrics ports to be compatible with Istio

Signed-off-by: Yevhen Tienkaiev <hronom@gmail.com>
This commit is contained in:
Yevhen Tienkaiev 2023-04-23 20:11:24 +03:00
parent 429b474a4f
commit b7da670895
6 changed files with 25 additions and 8 deletions

View file

@ -15,5 +15,7 @@ maintainers:
url: https://argoproj.github.io/
annotations:
artifacthub.io/changes: |
- kind: added
description: Ability to configure metrics and healthz ports
- kind: added
description: Ability to provide additional volumes and volumeMounts

View file

@ -79,6 +79,8 @@ For full list of changes please check ArtifactHub [changelog].
| controller.extraArgs | list | `[]` | Additional command line arguments to pass to rollouts-controller. A list of flags. |
| controller.extraContainers | list | `[]` | Literal yaml for extra containers to be added to controller deployment. |
| controller.extraEnv | list | `[]` | Additional environment variables for rollouts-controller. A list of name/value maps. |
| controller.healthz.port | int | `8080` | |
| controller.healthz.portName | string | `"healthz"` | |
| controller.image.pullPolicy | string | `"IfNotPresent"` | Image pull policy |
| controller.image.registry | string | `"quay.io"` | Registry to use |
| controller.image.repository | string | `"argoproj/argo-rollouts"` | Repository to use |
@ -86,6 +88,9 @@ For full list of changes please check ArtifactHub [changelog].
| controller.initContainers | list | `[]` | Init containers to add to the rollouts controller pod |
| controller.livenessProbe | object | See [values.yaml] | Configure liveness [probe] for the controller |
| controller.metrics.enabled | bool | `false` | Deploy metrics service |
| controller.metrics.service.port | int | `8090` | |
| controller.metrics.service.portName | string | `"metrics"` | |
| controller.metrics.service.targetPort | int | `8090` | |
| controller.metrics.serviceMonitor.additionalAnnotations | object | `{}` | Annotations to be added to the ServiceMonitor |
| controller.metrics.serviceMonitor.additionalLabels | object | `{}` | Labels to be added to the ServiceMonitor |
| controller.metrics.serviceMonitor.enabled | bool | `false` | Enable a prometheus ServiceMonitor |

View file

@ -37,6 +37,8 @@ spec:
containers:
- image: "{{ .Values.controller.image.registry }}/{{ .Values.controller.image.repository }}:{{ default .Chart.AppVersion .Values.controller.image.tag }}"
args:
- --healthzPort={{ .Values.controller.healthz.port }}
- --metricsport={{ .Values.controller.metrics.service.port }}
{{- if not .Values.clusterInstall }}
- --namespaced
{{- end }}
@ -53,10 +55,10 @@ spec:
imagePullPolicy: {{ .Values.controller.image.pullPolicy }}
name: argo-rollouts
ports:
- containerPort: 8090
name: metrics
- containerPort: 8080
name: healthz
- containerPort: {{ .Values.controller.metrics.service.port }}
name: {{ .Values.controller.metrics.service.portName }}
- containerPort: {{ .Values.controller.healthz.port }}
name: {{ .Values.controller.healthz.portName }}
livenessProbe:
{{- toYaml .Values.controller.livenessProbe | nindent 10 }}
readinessProbe:

View file

@ -13,10 +13,10 @@ metadata:
{{- end }}
spec:
ports:
- name: metrics
- name: {{ .Values.controller.metrics.service.portName }}
protocol: TCP
port: 8090
targetPort: 8090
port: {{ .Values.controller.metrics.service.port }}
targetPort: {{ .Values.controller.metrics.service.targetPort }}
selector:
app.kubernetes.io/component: {{ .Values.controller.component }}
{{- include "argo-rollouts.selectorLabels" . | nindent 4 }}

View file

@ -16,7 +16,7 @@ metadata:
{{- end }}
spec:
endpoints:
- port: metrics
- port: {{ .Values.controller.metrics.service.portName }}
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}

View file

@ -106,9 +106,17 @@ controller:
# -- flag to enable creation of cluster controller role (requires cluster RBAC)
createClusterRole: true
healthz:
portName: healthz
port: 8080
metrics:
# -- Deploy metrics service
enabled: false
service:
portName: metrics
port: 8090
targetPort: 8090
serviceMonitor:
# -- Enable a prometheus ServiceMonitor
enabled: false