From 193ea6c2bef93bf8bee9cfe05455f4bfd181beae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20de=20Paz=20Gal=C3=A1n?= Date: Thu, 7 Apr 2022 20:51:33 +0200 Subject: [PATCH] [bitnami/wavefront-adapter-for-istio] Chart standarisation (#9619) * [bitnami/wavefront-adapter-for-istio] Chart standarisation Signed-off-by: Francisco de Paz * Generate README and fix typos Signed-off-by: Francisco de Paz * Implement suggested changes Signed-off-by: Francisco de Paz * Remove unused debug value Signed-off-by: Francisco de Paz * Fix NOTES typo Signed-off-by: Francisco de Paz * Modify containerPort management Signed-off-by: Francisco de Paz * Fix lint error Signed-off-by: Francisco de Paz * Update README.md with readme-generator-for-helm Signed-off-by: Bitnami Containers * Modify args to use strings Signed-off-by: Francisco de Paz * Apply suggestion and remove unrelated file Signed-off-by: Francisco de Paz * Remove replicaCount parameter Signed-off-by: Francisco de Paz * [bitnami/wavefront-adapter-for-istio] Update components versions Signed-off-by: Bitnami Containers Co-authored-by: Bitnami Containers --- .../wavefront-adapter-for-istio/Chart.lock | 6 +- .../wavefront-adapter-for-istio/Chart.yaml | 2 +- bitnami/wavefront-adapter-for-istio/README.md | 189 ++++++++++-------- .../templates/NOTES.txt | 27 ++- .../templates/deployment.yaml | 50 +++-- .../templates/istio/handler.yaml | 2 +- .../templates/service.yaml | 24 ++- .../wavefront-adapter-for-istio/values.yaml | 133 +++++++----- 8 files changed, 274 insertions(+), 159 deletions(-) diff --git a/bitnami/wavefront-adapter-for-istio/Chart.lock b/bitnami/wavefront-adapter-for-istio/Chart.lock index 232fa6b843..10fa7dcdbc 100644 --- a/bitnami/wavefront-adapter-for-istio/Chart.lock +++ b/bitnami/wavefront-adapter-for-istio/Chart.lock @@ -1,9 +1,9 @@ dependencies: - name: wavefront repository: https://charts.bitnami.com/bitnami - version: 3.3.2 + version: 3.3.4 - name: common repository: https://charts.bitnami.com/bitnami version: 1.13.0 -digest: sha256:b806f66a671a6509c9d51e568316c40b41b04c94008c5bd8380226e1d4976167 -generated: "2022-04-01T20:52:25.054823315Z" +digest: sha256:d1e169d28afd8cd62faba8906fe204c3a9005274f59640e0e38b59ebbb82dd16 +generated: "2022-04-07T17:18:15.189176487Z" diff --git a/bitnami/wavefront-adapter-for-istio/Chart.yaml b/bitnami/wavefront-adapter-for-istio/Chart.yaml index 910ea1e586..41dffa534e 100644 --- a/bitnami/wavefront-adapter-for-istio/Chart.yaml +++ b/bitnami/wavefront-adapter-for-istio/Chart.yaml @@ -30,4 +30,4 @@ maintainers: name: wavefront-adapter-for-istio sources: - https://github.com/bitnami/bitnami-docker-wavefront-adapter-for-istio -version: 1.0.27 +version: 1.1.0 diff --git a/bitnami/wavefront-adapter-for-istio/README.md b/bitnami/wavefront-adapter-for-istio/README.md index 4878533004..b34acdcd40 100644 --- a/bitnami/wavefront-adapter-for-istio/README.md +++ b/bitnami/wavefront-adapter-for-istio/README.md @@ -67,97 +67,120 @@ The command removes all the Kubernetes components associated with the chart and ### Global parameters -| Name | Description | Value | -| ------------------------- | -------------------------------------------------- | --------------- | -| `global.imageRegistry` | Global Docker image registry | `""` | -| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | -| `global.storageClass` | Global StorageClass for Persistent Volume(s) | `""` | -| `kubeVersion` | Override Kubernetes version | `""` | -| `nameOverride` | String to partially override common.names.fullname | `""` | -| `fullnameOverride` | String to fully override common.names.fullname | `""` | -| `commonLabels` | Labels to add to all deployed objects | `{}` | -| `commonAnnotations` | Annotations to add to all deployed objects | `{}` | -| `clusterDomain` | Kubernetes cluster domain name | `cluster.local` | -| `extraDeploy` | Array of extra objects to deploy with the release | `[]` | +| Name | Description | Value | +| ------------------------- | ----------------------------------------------- | ----- | +| `global.imageRegistry` | Global Docker image registry | `""` | +| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | +| `global.storageClass` | Global StorageClass for Persistent Volume(s) | `""` | + + +### Common parameters + +| Name | Description | Value | +| ------------------------ | --------------------------------------------------------------------------------------- | --------------- | +| `kubeVersion` | Override Kubernetes version | `""` | +| `nameOverride` | String to partially override common.names.fullname | `""` | +| `fullnameOverride` | String to fully override common.names.fullname | `""` | +| `commonLabels` | Labels to add to all deployed objects | `{}` | +| `commonAnnotations` | Annotations to add to all deployed objects | `{}` | +| `clusterDomain` | Kubernetes cluster domain name | `cluster.local` | +| `diagnosticMode.enabled` | Enable diagnostic mode (all probes will be disabled and the command will be overridden) | `false` | +| `diagnosticMode.command` | Command to override all containers in the deployment | `["sleep"]` | +| `diagnosticMode.args` | Args to override all containers in the deployment | `["infinity"]` | +| `extraDeploy` | Array of extra objects to deploy with the release | `[]` | ### Wavefront Adapter for Istio deployment parameters -| Name | Description | Value | -| --------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------- | -| `image.registry` | Adapter image registry | `docker.io` | -| `image.repository` | Adapter image repository | `bitnami/wavefront-adapter-for-istio` | -| `image.tag` | Adapter image tag (immutabe tags are recommended) | `0.1.5-debian-10-r273` | -| `image.pullPolicy` | Adapter image pull policy | `IfNotPresent` | -| `image.pullSecrets` | Adapter image pull secrets | `[]` | -| `image.debug` | Enable image debug mode | `false` | -| `livenessProbe.enabled` | Enable livenessProbe | `true` | -| `livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | -| `livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | -| `livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | -| `livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | -| `livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | -| `readinessProbe.enabled` | Enable readinessProbe | `true` | -| `readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | -| `readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | -| `readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | -| `readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | -| `readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | -| `command` | Override default container command (useful when using custom images) | `[]` | -| `args` | Override default container args (useful when using custom images) | `[]` | -| `hostAliases` | Add deployment host aliases | `[]` | -| `resources.limits` | The resources limits for the Adapter container | `{}` | -| `resources.requests` | The requested resourcesc for the Adapter container | `{}` | -| `containerSecurityContext.enabled` | Enabled Adapter containers' Security Context | `true` | -| `containerSecurityContext.runAsUser` | Set Adapter container's Security Context runAsUser | `1001` | -| `containerSecurityContext.runAsNonRoot` | Set Adapter container's Security Context runAsNonRoot | `true` | -| `podSecurityContext.enabled` | Enabled Adapter pods' Security Context | `true` | -| `podSecurityContext.fsGroup` | Set Adapter pod's Security Context fsGroup | `1001` | -| `podAffinityPreset` | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft` | -| `nodeAffinityPreset.type` | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | -| `nodeAffinityPreset.key` | Node label key to match. Ignored if `affinity` is set | `""` | -| `nodeAffinityPreset.values` | Node label values to match. Ignored if `affinity` is set | `[]` | -| `affinity` | Affinity for pod assignment | `{}` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `tolerations` | Tolerations for pod assignment | `[]` | -| `podLabels` | Extra labels for Adapter pods | `{}` | -| `priorityClassName` | Adapter pod priority | `""` | -| `lifecycleHooks` | Add lifecycle hooks to the Adapter deployment | `{}` | -| `customLivenessProbe` | Override default liveness probe | `{}` | -| `customReadinessProbe` | Override default readiness probe | `{}` | -| `updateStrategy.type` | Adapter deployment update strategy | `RollingUpdate` | -| `containerPort` | Adapter container port | `8000` | -| `extraEnvVars` | Add extra environment variables to the Adapter container | `[]` | -| `extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `""` | -| `extraEnvVarsSecret` | Name of existing Secret containing extra env vars | `""` | -| `extraVolumes` | Optionally specify extra list of additional volumes for Adapter pods | `[]` | -| `extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for Adapter container(s) | `[]` | -| `initContainers` | Add additional init containers to the Adapter pods | `[]` | -| `sidecars` | Add additional sidecar containers to the Adapter pod | `[]` | -| `externalProxy.host` | Host of a wavefront-proxy instance (required if wavefront.enabled = false) | `""` | -| `externalProxy.port` | Host of a wavefront-proxy instance (required if wavefront.enabled = false) | `2878` | -| `adapterLogLevel` | Adapter log level | `info` | -| `istio.create` | Deploy istio objects | `true` | -| `istio.namespace` | Namespace to deploy the Istio objects | `istio-system` | -| `istio.apiVersion` | Override Istio API version | `""` | -| `metrics.flushInterval` | Interval to flush the metrics | `5s` | -| `metrics.source` | Source tag for all metrics handled by the adapter | `istio` | -| `metrics.prefix` | Prefix to prepend to all metrics handled by the adapter | `istio` | -| `metrics.http` | Enable the collection of http metrics | `true` | -| `metrics.tcp` | Enable the collection of tcp metrics | `true` | +| Name | Description | Value | +| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------- | +| `image.registry` | Adapter image registry | `docker.io` | +| `image.repository` | Adapter image repository | `bitnami/wavefront-adapter-for-istio` | +| `image.tag` | Adapter image tag (immutabe tags are recommended) | `0.1.5-debian-10-r347` | +| `image.pullPolicy` | Adapter image pull policy | `IfNotPresent` | +| `image.pullSecrets` | Adapter image pull secrets | `[]` | +| `startupProbe.enabled` | Enable startupProbe | `true` | +| `startupProbe.initialDelaySeconds` | Initial delay seconds for startupProbe | `10` | +| `startupProbe.periodSeconds` | Period seconds for startupProbe | `10` | +| `startupProbe.timeoutSeconds` | Timeout seconds for startupProbe | `1` | +| `startupProbe.failureThreshold` | Failure threshold for startupProbe | `3` | +| `startupProbe.successThreshold` | Success threshold for startupProbe | `1` | +| `livenessProbe.enabled` | Enable livenessProbe | `true` | +| `livenessProbe.initialDelaySeconds` | Initial delay seconds for livenessProbe | `10` | +| `livenessProbe.periodSeconds` | Period seconds for livenessProbe | `10` | +| `livenessProbe.timeoutSeconds` | Timeout seconds for livenessProbe | `1` | +| `livenessProbe.failureThreshold` | Failure threshold for livenessProbe | `3` | +| `livenessProbe.successThreshold` | Success threshold for livenessProbe | `1` | +| `readinessProbe.enabled` | Enable readinessProbe | `true` | +| `readinessProbe.initialDelaySeconds` | Initial delay seconds for readinessProbe | `10` | +| `readinessProbe.periodSeconds` | Period seconds for readinessProbe | `10` | +| `readinessProbe.timeoutSeconds` | Timeout seconds for readinessProbe | `1` | +| `readinessProbe.failureThreshold` | Failure threshold for readinessProbe | `3` | +| `readinessProbe.successThreshold` | Success threshold for readinessProbe | `1` | +| `command` | Override default container command (useful when using custom images) | `[]` | +| `args` | Override default container args (useful when using custom images) | `[]` | +| `hostAliases` | Add deployment host aliases | `[]` | +| `resources.limits` | The resources limits for the Adapter container | `{}` | +| `resources.requests` | The requested resourcesc for the Adapter container | `{}` | +| `containerSecurityContext.enabled` | Enabled Adapter containers' Security Context | `true` | +| `containerSecurityContext.runAsUser` | Set Adapter container's Security Context runAsUser | `1001` | +| `containerSecurityContext.runAsNonRoot` | Set Adapter container's Security Context runAsNonRoot | `true` | +| `podSecurityContext.enabled` | Enabled Adapter pods' Security Context | `true` | +| `podSecurityContext.fsGroup` | Set Adapter pod's Security Context fsGroup | `1001` | +| `podAffinityPreset` | Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `soft` | +| `nodeAffinityPreset.type` | Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard` | `""` | +| `nodeAffinityPreset.key` | Node label key to match. Ignored if `affinity` is set | `""` | +| `nodeAffinityPreset.values` | Node label values to match. Ignored if `affinity` is set | `[]` | +| `affinity` | Affinity for pod assignment | `{}` | +| `nodeSelector` | Node labels for pod assignment | `{}` | +| `tolerations` | Tolerations for pod assignment | `[]` | +| `podLabels` | Extra labels for Adapter pods | `{}` | +| `priorityClassName` | Adapter pod priority | `""` | +| `schedulerName` | Use an alternate scheduler, e.g. "stork". | `""` | +| `topologySpreadConstraints` | Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template | `{}` | +| `terminationGracePeriodSeconds` | Termination grace period in seconds | `""` | +| `lifecycleHooks` | Add lifecycle hooks to the Adapter deployment | `{}` | +| `customLivenessProbe` | Override default liveness probe | `{}` | +| `customReadinessProbe` | Override default readiness probe | `{}` | +| `customStartupProbe` | Override default startup probe | `{}` | +| `updateStrategy.type` | Adapter deployment update strategy | `RollingUpdate` | +| `containerPorts.grpc` | Adapter GRCP container port | `8000` | +| `extraEnvVars` | Add extra environment variables to the Adapter container | `[]` | +| `extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars | `""` | +| `extraEnvVarsSecret` | Name of existing Secret containing extra env vars | `""` | +| `extraVolumes` | Optionally specify extra list of additional volumes for Adapter pods | `[]` | +| `extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for Adapter container(s) | `[]` | +| `initContainers` | Add additional init containers to the Adapter pods | `[]` | +| `sidecars` | Add additional sidecar containers to the Adapter pod | `[]` | +| `externalProxy.host` | Host of a wavefront-proxy instance (required if wavefront.enabled = false) | `""` | +| `externalProxy.port` | Host of a wavefront-proxy instance (required if wavefront.enabled = false) | `2878` | +| `adapterLogLevel` | Adapter log level | `info` | +| `istio.create` | Deploy istio objects | `true` | +| `istio.namespace` | Namespace to deploy the Istio objects | `istio-system` | +| `istio.apiVersion` | Override Istio API version | `""` | +| `metrics.flushInterval` | Interval to flush the metrics | `5s` | +| `metrics.source` | Source tag for all metrics handled by the adapter | `istio` | +| `metrics.prefix` | Prefix to prepend to all metrics handled by the adapter | `istio` | +| `metrics.http` | Enable the collection of http metrics | `true` | +| `metrics.tcp` | Enable the collection of tcp metrics | `true` | ### Traffic Exposure Parameters -| Name | Description | Value | -| ---------------------------------- | -------------------------------------------- | ----------- | -| `service.type` | Adapter service type | `ClusterIP` | -| `service.port` | Adapter service port | `8000` | -| `service.loadBalancerIP` | Adapter service LoadBalancer IP | `""` | -| `service.loadBalancerSourceRanges` | loadBalancerIP source ranges for the Service | `[]` | -| `service.nodePorts.http` | NodePort for the HTTP endpoint | `""` | -| `service.externalTrafficPolicy` | External traffic policy for the service | `Cluster` | +| Name | Description | Value | +| ---------------------------------- | ---------------------------------------------------------------- | ----------- | +| `service.type` | Adapter service type | `ClusterIP` | +| `service.ports.grpc` | Adapter service GRPC port | `8000` | +| `service.clusterIP` | Adapter service Cluster IP | `""` | +| `service.loadBalancerIP` | Adapter service LoadBalancer IP | `""` | +| `service.loadBalancerSourceRanges` | loadBalancerIP source ranges for the Service | `[]` | +| `service.extraPorts` | Extra ports to expose (normally used with the `sidecar` value) | `[]` | +| `service.annotations` | Additional custom annotations for Adapter service | `{}` | +| `service.sessionAffinity` | Control where client requests go, to the same pod or round-robin | `None` | +| `service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` | +| `service.nodePorts.http` | NodePort for the HTTP endpoint | `""` | +| `service.externalTrafficPolicy` | External traffic policy for the service | `Cluster` | ### Wavefront sub-chart parameters diff --git a/bitnami/wavefront-adapter-for-istio/templates/NOTES.txt b/bitnami/wavefront-adapter-for-istio/templates/NOTES.txt index 5799e59851..ff6cd63434 100644 --- a/bitnami/wavefront-adapter-for-istio/templates/NOTES.txt +++ b/bitnami/wavefront-adapter-for-istio/templates/NOTES.txt @@ -4,6 +4,26 @@ APP VERSION: {{ .Chart.AppVersion }} ** Please be patient while the chart is being deployed ** +{{- if .Values.diagnosticMode.enabled }} +The chart has been deployed in diagnostic mode. All probes have been disabled and the command has been overwritten with: + + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 4 }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 4 }} + +Get the list of pods by executing: + + kubectl get pods --namespace {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} + +Access the pod you want to debug by executing + + kubectl exec --namespace {{ .Release.Namespace }} -ti -- bash + +In order to replicate the container startup execute this command: + + /opt/bitnami/wavefront-adapter-for-istio/bin/wavefront + +{{- else }} + 1. Get the application URL by running these commands: {{- if contains "NodePort" .Values.service.type }} @@ -14,10 +34,11 @@ APP VERSION: {{ .Chart.AppVersion }} NOTE: It may take a few minutes for the LoadBalancer IP to be available. You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ template "common.names.fullname" . }} export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "common.names.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') - echo http://$SERVICE_IP:{{ .Values.service.port }} + echo http://$SERVICE_IP:{{ coalesce .Values.service.ports.grpc .Values.service.port }} {{- else if contains "ClusterIP" .Values.service.type }} - echo "The renconciler is available at http://127.0.0.1:{{ .Values.service.port }}" - kubectl port-forward svc/{{ template "common.names.fullname" . }} {{ .Values.service.port }}:{{ .Values.service.port }} & + echo "The renconciler is available at http://127.0.0.1:{{ coalesce .Values.service.ports.grpc .Values.service.port }}" + kubectl port-forward svc/{{ template "common.names.fullname" . }} {{ coalesce .Values.service.ports.grpc .Values.service.port }}:{{ coalesce .Values.service.ports.grpc .Values.service.port }} & +{{- end }} {{- end }} {{- include "common.warnings.rollingTag" .Values.image }} diff --git a/bitnami/wavefront-adapter-for-istio/templates/deployment.yaml b/bitnami/wavefront-adapter-for-istio/templates/deployment.yaml index efc2c9eccc..35bfe4846a 100644 --- a/bitnami/wavefront-adapter-for-istio/templates/deployment.yaml +++ b/bitnami/wavefront-adapter-for-istio/templates/deployment.yaml @@ -45,12 +45,21 @@ spec: podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAntiAffinityPreset "component" "wavefront-adapter-for-istio" "context" $) | nindent 10 }} nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.nodeAffinityPreset.type "key" .Values.nodeAffinityPreset.key "values" .Values.nodeAffinityPreset.values) | nindent 10 }} {{- end }} + {{- if .Values.schedulerName }} + schedulerName: {{ .Values.schedulerName }} + {{- end }} + {{- if .Values.topologySpreadConstraints }} + topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.topologySpreadConstraints "context" .) | nindent 8 }} + {{- end }} {{- if .Values.nodeSelector }} nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.nodeSelector "context" $) | nindent 8 }} {{- end }} {{- if .Values.tolerations }} tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.tolerations "context" .) | nindent 8 }} {{- end }} + {{- if .Values.terminationGracePeriodSeconds }} + terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }} + {{- end }} {{- if .Values.priorityClassName }} priorityClassName: {{ .Values.priorityClassName | quote }} {{- end }} @@ -71,17 +80,21 @@ spec: {{- if .Values.containerSecurityContext.enabled }} securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }} {{- end }} - {{- if .Values.command }} + {{- if .Values.diagnosticMode.enabled }} + command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} + {{- else if .Values.command }} command: {{- include "common.tplvalues.render" (dict "value" .Values.command "context" $) | nindent 12 }} {{- else }} command: - wavefront {{- end }} - {{- if .Values.args }} + {{- if .Values.diagnosticMode.enabled }} + args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} + {{- else if .Values.args }} args: {{- include "common.tplvalues.render" (dict "value" .Values.args "context" $) | nindent 12 }} {{- else }} args: - - {{ .Values.containerPort | quote }} + - {{ coalesce .Values.containerPorts.grpc .Values.containerPort | quote }} {{- end }} env: {{- if .Values.extraEnvVars }} @@ -100,10 +113,11 @@ spec: resources: {{- toYaml .Values.resources | nindent 12 }} {{- end }} ports: - - containerPort: {{ .Values.containerPort }} + - containerPort: {{ coalesce .Values.containerPorts.grpc .Values.containerPort | int }} name: grpc + {{- if not .Values.diagnosticMode.enabled }} {{- if .Values.livenessProbe.enabled }} - livenessProbe: + livenessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.livenessProbe "enabled") "context" $) | nindent 12 }} exec: # As it is a grpc port, we cannot httpGet. tcpSocket cannot be used either # because it adds noise in the logs @@ -112,16 +126,11 @@ spec: - -ec - | ps auxf | grep wavefront - initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.livenessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} - successThreshold: {{ .Values.livenessProbe.successThreshold }} - failureThreshold: {{ .Values.livenessProbe.failureThreshold }} {{- else if .Values.customLivenessProbe }} livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customLivenessProbe "context" $) | nindent 12 }} {{- end }} {{- if .Values.readinessProbe.enabled }} - readinessProbe: + readinessProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.readinessProbe "enabled") "context" $) | nindent 12 }} exec: # As it is a grpc port, we cannot httpGet. tcpSocket cannot be used either # because it adds noise in the logs @@ -130,14 +139,23 @@ spec: - -ec - | ps auxf | grep wavefront - initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} - periodSeconds: {{ .Values.readinessProbe.periodSeconds }} - timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} - successThreshold: {{ .Values.readinessProbe.successThreshold }} - failureThreshold: {{ .Values.readinessProbe.failureThreshold }} {{- else if .Values.customReadinessProbe }} readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customReadinessProbe "context" $) | nindent 12 }} {{- end }} + {{- if .Values.startupProbe.enabled }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" (omit .Values.startupProbe "enabled") "context" $) | nindent 12 }} + exec: + # As it is a grpc port, we cannot httpGet. tcpSocket cannot be used either + # because it adds noise in the logs + command: + - bash + - -ec + - | + ps auxf | grep wavefront + {{- else if .Values.customStartupProbe }} + startupProbe: {{- include "common.tplvalues.render" (dict "value" .Values.customStartupProbe "context" $) | nindent 12 }} + {{- end }} + {{- end }} {{- if .Values.extraVolumeMounts }} volumeMounts: {{- include "common.tplvalues.render" (dict "value" .Values.extraVolumeMounts "context" $) | nindent 12 }} {{- end }} diff --git a/bitnami/wavefront-adapter-for-istio/templates/istio/handler.yaml b/bitnami/wavefront-adapter-for-istio/templates/istio/handler.yaml index 9e81730204..a4236d5f6c 100644 --- a/bitnami/wavefront-adapter-for-istio/templates/istio/handler.yaml +++ b/bitnami/wavefront-adapter-for-istio/templates/istio/handler.yaml @@ -15,7 +15,7 @@ metadata: spec: adapter: {{ include "common.names.fullname" . }}-wavefront connection: - address: {{ printf "%s.%s.svc.%s:%d" (include "common.names.fullname" .) .Release.Namespace .Values.clusterDomain (int .Values.service.port) }} + address: {{ printf "%s.%s.svc.%s:%d" (include "common.names.fullname" .) .Release.Namespace .Values.clusterDomain (coalesce .Values.service.ports.grpc .Values.service.port | int) }} params: {{- if .Values.wavefront.proxy.enabled }} proxy: diff --git a/bitnami/wavefront-adapter-for-istio/templates/service.yaml b/bitnami/wavefront-adapter-for-istio/templates/service.yaml index 887da1290f..45e87f9a2b 100644 --- a/bitnami/wavefront-adapter-for-istio/templates/service.yaml +++ b/bitnami/wavefront-adapter-for-istio/templates/service.yaml @@ -8,23 +8,38 @@ metadata: {{- end }} name: {{ template "common.names.fullname" . }} namespace: {{ .Release.Namespace }} - {{- if .Values.commonAnnotations }} - annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- if or .Values.service.annotations .Values.commonAnnotations }} + annotations: + {{- if .Values.service.annotations }} + {{- include "common.tplvalues.render" (dict "value" .Values.service.annotations "context" $) | nindent 4 }} + {{- end }} + {{- if .Values.commonAnnotations }} + {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }} + {{- end }} {{- end }} spec: type: {{ .Values.service.type }} {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} {{- end }} + {{- if not (empty .Values.service.clusterIP) }} + clusterIP: {{ .Values.service.clusterIP | quote }} + {{- end }} {{ if eq .Values.service.type "LoadBalancer" }} loadBalancerSourceRanges: {{ .Values.service.loadBalancerSourceRanges }} {{ end }} {{- if (and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP))) }} loadBalancerIP: {{ .Values.service.loadBalancerIP }} {{- end }} + {{- if .Values.service.sessionAffinity }} + sessionAffinity: {{ .Values.service.sessionAffinity }} + {{- end }} + {{- if .Values.service.sessionAffinityConfig }} + sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.service.sessionAffinityConfig "context" $) | nindent 4 }} + {{- end }} ports: - name: grpc - port: {{ .Values.service.port }} + port: {{ coalesce .Values.service.ports.grpc .Values.service.port }} targetPort: grpc protocol: TCP {{- if (and (or (eq .Values.service.type "NodePort") (eq .Values.service.type "LoadBalancer")) (not (empty .Values.service.nodePorts.http))) }} @@ -32,5 +47,8 @@ spec: {{- else if eq .Values.service.type "ClusterIP" }} nodePort: null {{- end }} + {{- if .Values.service.extraPorts }} + {{- include "common.tplvalues.render" (dict "value" .Values.service.extraPorts "context" $) | nindent 4 }} + {{- end }} selector: {{- include "common.labels.matchLabels" . | nindent 4 }} app.kubernetes.io/component: wavefront-adapter-for-istio diff --git a/bitnami/wavefront-adapter-for-istio/values.yaml b/bitnami/wavefront-adapter-for-istio/values.yaml index ade5be75c8..394acf8ca2 100644 --- a/bitnami/wavefront-adapter-for-istio/values.yaml +++ b/bitnami/wavefront-adapter-for-istio/values.yaml @@ -1,7 +1,7 @@ ## Global Docker image parameters ## Please, note that this will override the image parameters, including dependencies, configured to use the global value ## Current available global Docker image parameters: imageRegistry and imagePullSecrets -## + ## @section Global parameters ## @param global.imageRegistry Global Docker image registry ## @param global.imagePullSecrets Global Docker registry secret names as an array @@ -15,36 +15,46 @@ global: imagePullSecrets: [] storageClass: "" +## @section Common parameters +## ## Override Kubernetes version ## @param kubeVersion Override Kubernetes version ## kubeVersion: "" - ## String to partially override common.names.fullname template (will maintain the release name) ## @param nameOverride String to partially override common.names.fullname ## nameOverride: "" - ## String to fully override common.names.fullname template ## @param fullnameOverride String to fully override common.names.fullname ## fullnameOverride: "" - ## Add labels to all the deployed resources ## @param commonLabels Labels to add to all deployed objects ## commonLabels: {} - ## Add annotations to all the deployed resources ## @param commonAnnotations Annotations to add to all deployed objects ## commonAnnotations: {} - ## Kubernetes Cluster Domain ## @param clusterDomain Kubernetes cluster domain name ## clusterDomain: cluster.local - +## Enable diagnostic mode in the deployment +## +diagnosticMode: + ## @param diagnosticMode.enabled Enable diagnostic mode (all probes will be disabled and the command will be overridden) + ## + enabled: false + ## @param diagnosticMode.command Command to override all containers in the deployment + ## + command: + - sleep + ## @param diagnosticMode.args Args to override all containers in the deployment + ## + args: + - infinity ## Extra objects to deploy (value evaluated as a template) ## @param extraDeploy Array of extra objects to deploy with the release ## @@ -61,7 +71,7 @@ image: repository: bitnami/wavefront-adapter-for-istio ## @param image.tag Adapter image tag (immutabe tags are recommended) ## - tag: 0.1.5-debian-10-r347 + tag: 0.1.5-debian-10-r353 ## Specify a imagePullPolicy ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' ## ref: https://kubernetes.io/docs/user-guide/images/#pre-pulling-images @@ -77,13 +87,22 @@ image: ## pullSecrets: [] # - myRegistryKeySecretName - ## Enable debug mode - ## @param image.debug Enable image debug mode - ## - debug: false - -## Configure extra options for liveness and readiness probes +## Configure extra options for Adapter containers' liveness, readiness and startup probes ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#configure-probes +## @param startupProbe.enabled Enable startupProbe +## @param startupProbe.initialDelaySeconds Initial delay seconds for startupProbe +## @param startupProbe.periodSeconds Period seconds for startupProbe +## @param startupProbe.timeoutSeconds Timeout seconds for startupProbe +## @param startupProbe.failureThreshold Failure threshold for startupProbe +## @param startupProbe.successThreshold Success threshold for startupProbe +## +startupProbe: + enabled: true + failureThreshold: 3 + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 ## @param livenessProbe.enabled Enable livenessProbe ## @param livenessProbe.initialDelaySeconds Initial delay seconds for livenessProbe ## @param livenessProbe.periodSeconds Period seconds for livenessProbe @@ -112,7 +131,6 @@ readinessProbe: periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 - ## Command and args for running the container (set to default if not set). Use array form ## @param command Override default container command (useful when using custom images) ## @@ -121,13 +139,11 @@ command: [] ## @param args Override default container args (useful when using custom images) ## args: [] - ## Deployment pod host aliases ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ ## @param hostAliases Add deployment host aliases ## hostAliases: [] - ## wavefront-adapter-for-istio resource requests and limits ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## @@ -146,7 +162,6 @@ resources: requests: {} # cpu: 200m # memory: 10Mi - ## wavefront-adapter-for-istio containers' Security Context ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container ## @param containerSecurityContext.enabled Enabled Adapter containers' Security Context @@ -157,7 +172,6 @@ containerSecurityContext: enabled: true runAsUser: 1001 runAsNonRoot: true - ## wavefront-adapter-for-istio pods' Security Context ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod ## @param podSecurityContext.enabled Enabled Adapter pods' Security Context @@ -166,21 +180,18 @@ containerSecurityContext: podSecurityContext: enabled: true fsGroup: 1001 - ## Pod affinity preset ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity ## Allowed values: soft, hard ## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` ## podAffinityPreset: "" - ## Pod anti-affinity preset ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity ## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard` ## Allowed values: soft, hard ## podAntiAffinityPreset: soft - ## Node affinity preset ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity ## Allowed values: soft, hard @@ -205,32 +216,27 @@ nodeAffinityPreset: ## - e2e-az2 ## values: [] - ## Affinity for pod assignment. Evaluated as a template. ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity ## @param affinity Affinity for pod assignment ## affinity: {} - ## Node labels for pod assignment. Evaluated as a template. ## ref: https://kubernetes.io/docs/user-guide/node-selection/ ## @param nodeSelector Node labels for pod assignment ## nodeSelector: {} - ## Tolerations for pod assignment. Evaluated as a template. ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ ## @param tolerations Tolerations for pod assignment ## tolerations: [] - ## Pod extra labels ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ ## ## @param podLabels Extra labels for Adapter pods ## podLabels: {} - ## Annotations for server pods. ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ ## @skip podAnnotations @@ -238,28 +244,38 @@ podLabels: {} podAnnotations: sidecar.istio.io/inject: "false" scheduler.alpha.kubernetes.io/critical-pod: "" - ## wavefront-adapter-for-istio pods' priority. ## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ ## @param priorityClassName Adapter pod priority ## priorityClassName: "" - +## @param schedulerName Use an alternate scheduler, e.g. "stork". +## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ +## +schedulerName: "" +## @param topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template +## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods +## +topologySpreadConstraints: {} +## @param terminationGracePeriodSeconds Termination grace period in seconds +## +terminationGracePeriodSeconds: "" ## lifecycleHooks for the wavefront-adapter-for-istio container to automate configuration before or after startup. ## @param lifecycleHooks Add lifecycle hooks to the Adapter deployment ## lifecycleHooks: {} - ## Custom Liveness probes for wavefront-adapter-for-istio ## @param customLivenessProbe Override default liveness probe ## customLivenessProbe: {} - ## Custom Rediness probes wavefront-adapter-for-istio ## @param customReadinessProbe Override default readiness probe ## customReadinessProbe: {} - +## Custom Startup probes wavefront-adapter-for-istio +## @param customStartupProbe Override default startup probe +## +customStartupProbe: {} ## Update strategy - only really applicable for deployments with RWO PVs attached ## If replicas = 1, an update can get "stuck", as the previous pod remains attached to the ## PV, and the "incoming" pod can never start. Changing the strategy to "Recreate" will @@ -268,11 +284,16 @@ customReadinessProbe: {} ## updateStrategy: type: RollingUpdate - ## Adapter Container port -## @param containerPort Adapter container port +## containerPort DEPRECATED: use containerPorts.grpc instead. ## -containerPort: 8000 +## containerPort: 8000 +## +## Container ports +## @param containerPorts.grpc Adapter GRCP container port +## +containerPorts: + grpc: 8000 ## Additional environment variables to set ## Example: ## extraEnvVars: @@ -281,27 +302,22 @@ containerPort: 8000 ## @param extraEnvVars Add extra environment variables to the Adapter container ## extraEnvVars: [] - ## ConfigMap with extra environment variables ## @param extraEnvVarsCM Name of existing ConfigMap containing extra env vars ## extraEnvVarsCM: "" - ## Secret with extra environment variables ## @param extraEnvVarsSecret Name of existing Secret containing extra env vars ## extraEnvVarsSecret: "" - ## Extra volumes to add to the deployment ## @param extraVolumes Optionally specify extra list of additional volumes for Adapter pods ## extraVolumes: [] - ## Extra volume mounts to add to the container ## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for Adapter container(s) ## extraVolumeMounts: [] - ## Add init containers to the wavefront-adapter-for-istio pods. ## Example: ## initContainers: @@ -314,7 +330,6 @@ extraVolumeMounts: [] ## @param initContainers Add additional init containers to the Adapter pods ## initContainers: [] - ## Add sidecars to the wavefront-adapter-for-istio pods. ## Example: ## sidecars: @@ -328,7 +343,6 @@ initContainers: [] ## @param sidecars Add additional sidecar containers to the Adapter pod ## sidecars: [] - ## Use an external wavefront-proxy host ## externalProxy: @@ -338,12 +352,10 @@ externalProxy: ## @param externalProxy.port Host of a wavefront-proxy instance (required if wavefront.enabled = false) ## port: 2878 - ## Adapter prefix parameter ## @param adapterLogLevel Adapter log level ## adapterLogLevel: info - ## Istio settings ## istio: @@ -356,7 +368,6 @@ istio: ## @param istio.apiVersion Override Istio API version ## apiVersion: "" - ## Adapter Metrics parameters ## metrics: @@ -384,9 +395,19 @@ service: ## type: ClusterIP ## HTTP Port - ## @param service.port Adapter service port + ## service.port DEPRECATED: use service.ports.grpc instead. ## - port: 8000 + ## port: 8000 + ## GRPC Port + ## @param service.ports.grpc Adapter service GRPC port + ## + ports: + grpc: 8000 + ## @param service.clusterIP Adapter service Cluster IP + ## e.g.: + ## clusterIP: None + ## + clusterIP: "" ## loadBalancerIP for the Service (optional, cloud specific) ## ref: https://kubernetes.io/docs/user-guide/services/#type-loadbalancer ## @param service.loadBalancerIP Adapter service LoadBalancer IP @@ -400,6 +421,22 @@ service: ## - 10.10.10.0/24 ## loadBalancerSourceRanges: [] + ## @param service.extraPorts Extra ports to expose (normally used with the `sidecar` value) + ## + extraPorts: [] + ## @param service.annotations Additional custom annotations for Adapter service + ## + annotations: {} + ## @param service.sessionAffinity Control where client requests go, to the same pod or round-robin + ## Values: ClientIP or None + ## ref: https://kubernetes.io/docs/user-guide/services/ + ## + sessionAffinity: "None" + ## @param service.sessionAffinityConfig Additional settings for the sessionAffinity + ## sessionAffinityConfig: + ## clientIP: + ## timeoutSeconds: 300 + sessionAffinityConfig: {} ## ## nodePorts: ## http: @@ -423,14 +460,12 @@ wavefront: ## @param wavefront.enabled Deploy Wavefront chart (necessary if externalProxyHost is not set) ## enabled: true - ## @param wavefront.wavefront.url Wavefront SAAS service URL ## @param wavefront.wavefront.token Wavefront SAAS token ## wavefront: url: https://YOUR_CLUSTER.wavefront.com token: YOUR_API_TOKEN - ## @param wavefront.collector.enabled Deploy Wavefront collector (not used by the Adapter pod) ## collector: