From 79b13222ce985b0453e64f86637a6d11ab79864b Mon Sep 17 00:00:00 2001 From: guessi Date: Thu, 11 Apr 2024 14:01:14 +0800 Subject: [PATCH] Improve "cni-metrics-helper" setup experience --- charts/cni-metrics-helper/README.md | 62 ++++++++++++------- .../templates/clusterrole.yaml | 2 + .../templates/deployment.yaml | 23 ++++++- charts/cni-metrics-helper/values.yaml | 31 ++++++++++ 4 files changed, 94 insertions(+), 24 deletions(-) diff --git a/charts/cni-metrics-helper/README.md b/charts/cni-metrics-helper/README.md index 4bbf0f8b88..58e51d5326 100644 --- a/charts/cni-metrics-helper/README.md +++ b/charts/cni-metrics-helper/README.md @@ -12,10 +12,22 @@ This chart provides a Kubernetes deployment for the Amazon VPC CNI Metrics Helpe First add the EKS repository to Helm: ```shell -helm repo add eks https://aws.github.io/eks-charts +$ helm repo add eks https://aws.github.io/eks-charts ``` -To install the chart with the release name `cni-metrics-helper` and default configuration: +Ensure helm repository up to date + +```shell +$ helm repo update eks +``` + +To identify the version you are going to apply + +```shell +$ helm search repo eks/cni-metrics-helper --versions +``` + +To install the latest chart with the release name `cni-metrics-helper` and default configuration: ```shell $ helm install cni-metrics-helper --namespace kube-system eks/cni-metrics-helper @@ -43,26 +55,32 @@ $ helm uninstall cni-metrics-helper --namespace kube-system The following table lists the configurable parameters for this chart and their default values. -| Parameter | Description | Default | -|------------------------------|---------------------------------------------------------------|--------------------| -| fullnameOverride | Override the fullname of the chart | cni-metrics-helper | -| image.region | ECR repository region to use. Should match your cluster | us-west-2 | -| image.tag | Image tag | v1.17.1 | -| image.account | ECR repository account number | 602401143452 | -| image.domain | ECR repository domain | amazonaws.com | -| env.USE_CLOUDWATCH | Whether to export CNI metrics to CloudWatch | true | -| env.USE_PROMETHEUS | Whether to export CNI metrics to Prometheus | false | -| env.AWS_CLUSTER_ID | ID of the cluster to use when exporting metrics to CloudWatch | default | -| env.AWS_VPC_K8S_CNI_LOGLEVEL | Log verbosity level (ie. FATAL, ERROR, WARN, INFO, DEBUG) | INFO | -| env.METRIC_UPDATE_INTERVAL | Interval at which to update CloudWatch metrics, in seconds. | | -| | Metrics are published to CloudWatch at 2x the interval | 30 | -| serviceAccount.name | The name of the ServiceAccount to use | nil | -| serviceAccount.create | Specifies whether a ServiceAccount should be created | true | -| serviceAccount.annotations | Specifies the annotations for ServiceAccount | {} | -| podAnnotations | Specifies the annotations for pods | {} | -| revisionHistoryLimit | The number of revisions to keep | 10 | -| podSecurityContext | SecurityContext to set on the pod | {} | -| containerSecurityContext | SecurityContext to set on the container | {} | +| Parameter | Description | Default | +| -------------------------------|---------------------------------------------------------------|-------------------------------------| +| `affinity` | Map of node/pod affinities | `{}` | +| `fullnameOverride` | Override the fullname of the chart | `cni-metrics-helper` | +| `image.tag` | Image tag | `v1.17.1` | +| `image.domain` | ECR repository domain | `amazonaws.com` | +| `image.region` | ECR repository region to use. Should match your cluster | `us-west-2` | +| `image.account` | ECR repository account number | `602401143452` | +| `env.USE_CLOUDWATCH` | Whether to export CNI metrics to CloudWatch | `true` | +| `env.USE_PROMETHEUS` | Whether to export CNI metrics to Prometheus | `false` | +| `env.AWS_CLUSTER_ID` | ID of the cluster to use when exporting metrics to CloudWatch | `default` | +| `env.AWS_VPC_K8S_CNI_LOGLEVEL` | Log verbosity level (ie. FATAL, ERROR, WARN, INFO, DEBUG) | `INFO` | +| `env.METRIC_UPDATE_INTERVAL` | Interval at which to update CloudWatch metrics, in seconds. | | +| | Metrics are published to CloudWatch at 2x the interval | `30` | +| `serviceAccount.name` | The name of the ServiceAccount to use | `nil` | +| `serviceAccount.create` | Specifies whether a ServiceAccount should be created | `true` | +| `serviceAccount.annotations` | Specifies the annotations for ServiceAccount | `{}` | +| `podAnnotations` | Specifies the annotations for pods | `{}` | +| `revisionHistoryLimit` | The number of revisions to keep | `10` | +| `podSecurityContext` | SecurityContext to set on the pod | `{}` | +| `containerSecurityContext` | SecurityContext to set on the container | `{}` | +| `tolerations` | Optional deployment tolerations | `[{"operator": "Exists"}]` | +| `updateStrategy` | Optional update strategy | `type: RollingUpdate` | +| `imagePullSecrets` | Docker registry pull secret | `[]` | +| `nodeSelector` | Node labels for pod assignment | `{}` | +| `tolerations` | Optional deployment tolerations | `[{"operator": "Exists"}]` | Specify each parameter using the `--set key=value[,key=value]` argument to `helm install` or provide a YAML file containing the values for the above parameters: diff --git a/charts/cni-metrics-helper/templates/clusterrole.yaml b/charts/cni-metrics-helper/templates/clusterrole.yaml index 6f45efd8aa..901952d751 100644 --- a/charts/cni-metrics-helper/templates/clusterrole.yaml +++ b/charts/cni-metrics-helper/templates/clusterrole.yaml @@ -2,6 +2,8 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: {{ include "cni-metrics-helper.fullname" . }} + labels: +{{ include "cni-metrics-helper.labels" . | indent 4 }} rules: - apiGroups: [""] resources: diff --git a/charts/cni-metrics-helper/templates/deployment.yaml b/charts/cni-metrics-helper/templates/deployment.yaml index adadf2bf7d..b7411c7b8e 100644 --- a/charts/cni-metrics-helper/templates/deployment.yaml +++ b/charts/cni-metrics-helper/templates/deployment.yaml @@ -5,7 +5,10 @@ metadata: namespace: {{ .Release.Namespace }} labels: k8s-app: cni-metrics-helper +{{ include "cni-metrics-helper.labels" . | indent 4 }} spec: + updateStrategy: + {{ toYaml .Values.updateStrategy | indent 2 }} revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} selector: matchLabels: @@ -36,6 +39,22 @@ spec: name: cni-metrics-helper image: "{{- if .Values.image.override }}{{- .Values.image.override }}{{- else }}{{- .Values.image.account }}.dkr.ecr.{{- .Values.image.region }}.{{- .Values.image.domain }}/cni-metrics-helper:{{- .Values.image.tag }}{{- end}}" serviceAccountName: {{ template "cni-metrics-helper.serviceAccountName" . }} -{{- if .Values.podSecurityContext }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.podSecurityContext }} securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} -{{- end }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} \ No newline at end of file diff --git a/charts/cni-metrics-helper/values.yaml b/charts/cni-metrics-helper/values.yaml index 919681586f..e7fac7cd12 100644 --- a/charts/cni-metrics-helper/values.yaml +++ b/charts/cni-metrics-helper/values.yaml @@ -36,3 +36,34 @@ podSecurityContext: {} containerSecurityContext: {} podAnnotations: {} + +imagePullSecrets: [] + +updateStrategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: "10%" + +nodeSelector: {} + +tolerations: + - operator: Exists + +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/os" + operator: In + values: + - linux + - key: "kubernetes.io/arch" + operator: In + values: + - amd64 + - arm64 + - key: "eks.amazonaws.com/compute-type" + operator: NotIn + values: + - fargate \ No newline at end of file