From 5b6dca8dc4227dcccfe95eae4b96c856773ee5e2 Mon Sep 17 00:00:00 2001 From: Sean McGary Date: Wed, 13 Nov 2024 14:52:33 -0600 Subject: [PATCH 1/4] Adding helm chart --- charts/sidecar/.helmignore | 23 ++++++++++ charts/sidecar/Chart.yaml | 24 ++++++++++ charts/sidecar/templates/_helpers.tpl | 44 +++++++++++++++++++ .../sidecar/templates/sidecarStatefulSet.yaml | 35 +++++++++++++++ charts/sidecar/values.yaml | 24 ++++++++++ 5 files changed, 150 insertions(+) create mode 100644 charts/sidecar/.helmignore create mode 100644 charts/sidecar/Chart.yaml create mode 100644 charts/sidecar/templates/_helpers.tpl create mode 100644 charts/sidecar/templates/sidecarStatefulSet.yaml create mode 100644 charts/sidecar/values.yaml diff --git a/charts/sidecar/.helmignore b/charts/sidecar/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/charts/sidecar/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/charts/sidecar/Chart.yaml b/charts/sidecar/Chart.yaml new file mode 100644 index 00000000..358afed2 --- /dev/null +++ b/charts/sidecar/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: sidecar +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +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.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/charts/sidecar/templates/_helpers.tpl b/charts/sidecar/templates/_helpers.tpl new file mode 100644 index 00000000..02e76257 --- /dev/null +++ b/charts/sidecar/templates/_helpers.tpl @@ -0,0 +1,44 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "sidecar.name" -}} +{{- default .Chart.Name .Values.sidecar.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "sidecar.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + + +{{/* +Common labels +*/}} +{{- define "sidecar.labels" -}} +helm.sh/chart: {{ include "sidecar.chart" . }} +{{ include "sidecar.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} +{{- with .Values.sidecar.additionalLabels }} +{{- toYaml . | nindent 0 }} +{{- end }} + + +{{- define "sidecar.selectorLabels" -}} +app.kubernetes.io/name: {{ include "sidecar.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + + +{{- define "sidecar.metadataLabels" -}} +{{ include "sidecar.selectorLabels" . }} +{{- with .Values.sidecar.metadataLabels }} +{{- toYaml . | nindent 0 }} +{{- end }} +{{- end }} diff --git a/charts/sidecar/templates/sidecarStatefulSet.yaml b/charts/sidecar/templates/sidecarStatefulSet.yaml new file mode 100644 index 00000000..47f1086a --- /dev/null +++ b/charts/sidecar/templates/sidecarStatefulSet.yaml @@ -0,0 +1,35 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "sidecar.name" . }} + labels: + {{- include "sidecar.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.sidecar.replicas }} + selector: + matchLabels: + {{- include "sidecar.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "sidecar.metadataLabels" . | nindent 8 }} + spec: + {{- if .Values.sidecar.serviceAccount }} + serviceAccountName: {{ .Values.sidecar.serviceAccount.name }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.sidecar.ports }} + ports: + {{- range $k, $v := .Values.sidecar.ports }} + - name: {{ $v.name }} + containerPort: {{ $v.containerPort }} + protocol: {{ $v.protocol }} + {{- end -}} + {{- end }} + {{- if .Values.sidecar.resources }} + resources: + {{- toYaml .Values.sidecar.resources | nindent 12 }} + {{- end }} diff --git a/charts/sidecar/values.yaml b/charts/sidecar/values.yaml new file mode 100644 index 00000000..92071021 --- /dev/null +++ b/charts/sidecar/values.yaml @@ -0,0 +1,24 @@ +image: + repository: public.ecr.aws/z6g0f8n7/sidecar + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "latest" + +sidecar: + replicas: 1 + nameOverride: '' + additionalLabels: {} + ports: + - name: grpc + port: 7100 + containerPort: 7100 + protocol: TCP + - name: http + port: 7101 + containerPort: 7101 + protocol: TCP + resources: {} + metadataLabels: {} + serviceAccount: + name: default + From e42b62dd3983e16d3be47ddd9cf227e1757663cc Mon Sep 17 00:00:00 2001 From: Sean McGary Date: Wed, 13 Nov 2024 15:55:13 -0600 Subject: [PATCH 2/4] Add secrets and service --- charts/sidecar/Chart.yaml | 21 +++------------- charts/sidecar/templates/_helpers.tpl | 1 + charts/sidecar/templates/secret.yaml | 10 ++++++++ charts/sidecar/templates/service.yaml | 17 +++++++++++++ .../sidecar/templates/sidecarStatefulSet.yaml | 15 +++++++++++ charts/sidecar/values.yaml | 25 ++++++++++++++++--- 6 files changed, 68 insertions(+), 21 deletions(-) create mode 100644 charts/sidecar/templates/secret.yaml create mode 100644 charts/sidecar/templates/service.yaml diff --git a/charts/sidecar/Chart.yaml b/charts/sidecar/Chart.yaml index 358afed2..b2d6e379 100644 --- a/charts/sidecar/Chart.yaml +++ b/charts/sidecar/Chart.yaml @@ -1,24 +1,9 @@ apiVersion: v2 name: sidecar -description: A Helm chart for Kubernetes +description: A Helm chart for the EigenLayer sidecar -# A chart can be either an 'application' or a 'library' chart. -# -# Application charts are a collection of templates that can be packaged into versioned archives -# to be deployed. -# -# Library charts provide useful utilities or functions for the chart developer. They're included as -# a dependency of application charts to inject those utilities and functions into the rendering -# pipeline. Library charts do not define any templates and therefore cannot be deployed. 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.1.0 +version: 0.1.0-beta.1 -# This is the version number of the application being deployed. This version number should be -# incremented each time you make changes to the application. Versions are not expected to -# follow Semantic Versioning. They should reflect the version the application is using. -# It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "v1.0.0-beta.1" diff --git a/charts/sidecar/templates/_helpers.tpl b/charts/sidecar/templates/_helpers.tpl index 02e76257..f3444096 100644 --- a/charts/sidecar/templates/_helpers.tpl +++ b/charts/sidecar/templates/_helpers.tpl @@ -1,3 +1,4 @@ + {{/* Expand the name of the chart. */}} diff --git a/charts/sidecar/templates/secret.yaml b/charts/sidecar/templates/secret.yaml new file mode 100644 index 00000000..b2e3bf3b --- /dev/null +++ b/charts/sidecar/templates/secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Values.sidecar.secret.name }} + namespace: {{ .Release.Namespace }} +type: Opaque +data: +{{- range $key, $value := .Values.sidecar.secret.data }} + {{ $key }}: {{ $value | b64enc }} +{{- end }} diff --git a/charts/sidecar/templates/service.yaml b/charts/sidecar/templates/service.yaml new file mode 100644 index 00000000..54bf9dbf --- /dev/null +++ b/charts/sidecar/templates/service.yaml @@ -0,0 +1,17 @@ +{{- if .Values.sidecar.service.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "sidecar.name" . }} + labels: + {{- include "sidecar.labels" . | nindent 4 }} +spec: + ports: +{{- range $key, $port := .Values.sidecar.ports }} + - +{{ $port | toYaml | indent 4 }} +{{- end }} + clusterIP: None + selector: + {{- include "sidecar.selectorLabels" . | nindent 6 }} +{{- end }} diff --git a/charts/sidecar/templates/sidecarStatefulSet.yaml b/charts/sidecar/templates/sidecarStatefulSet.yaml index 47f1086a..8d988552 100644 --- a/charts/sidecar/templates/sidecarStatefulSet.yaml +++ b/charts/sidecar/templates/sidecarStatefulSet.yaml @@ -33,3 +33,18 @@ spec: resources: {{- toYaml .Values.sidecar.resources | nindent 12 }} {{- end }} + env: + {{- range $k, $v := .Values.sidecar.env }} + - name: {{ $k }} + value: '{{ $v }}' + {{- end }} + {{- if .Values.sidecar.secret.data }} + {{- range $k, $v := .Values.sidecar.secret.data }} + - name: {{ $k }} + valueFrom: + secretKeyRef: + name: {{ .Values.sidecar.secret.name }} + key: {{ $k }} + {{- end}} + {{ .Values.sidecar.additionalEnv | nindent 12 }} + {{- end}} diff --git a/charts/sidecar/values.yaml b/charts/sidecar/values.yaml index 92071021..b5674106 100644 --- a/charts/sidecar/values.yaml +++ b/charts/sidecar/values.yaml @@ -1,13 +1,26 @@ image: repository: public.ecr.aws/z6g0f8n7/sidecar - pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. - tag: "latest" + pullPolicy: Always + tag: "v1.0.0-beta.1" sidecar: replicas: 1 nameOverride: '' additionalLabels: {} + command: + - run + env: + SIDECAR_CHAIN: "mainnet" + SIDECAR_DEBUG: "false" + SIDECAR_ETHEREUM_RPC_URL: "" + SIDECAR_DATABASE_HOST: "" + SIDECAR_DATABASE_PORT: "5432" + SIDECAR_DATABASE_USER: "sidecar" + SIDECAR_DATABASE_DB_NAME: "sidecar" + # SIDECAR_STATSD_URL: "" + additionalEnv: {} + # - name: ENV_NAME + # value: "env value" ports: - name: grpc port: 7100 @@ -21,4 +34,10 @@ sidecar: metadataLabels: {} serviceAccount: name: default + secret: + name: sidecar-secrets + data: {} + # SIDECAR_DATABASE_PASSWORD: "" + service: + enabled: true From 08fcbab4213535879cf2131de1f245b062da953e Mon Sep 17 00:00:00 2001 From: Sean McGary Date: Wed, 13 Nov 2024 15:56:40 -0600 Subject: [PATCH 3/4] Add command --- charts/sidecar/templates/sidecarStatefulSet.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/charts/sidecar/templates/sidecarStatefulSet.yaml b/charts/sidecar/templates/sidecarStatefulSet.yaml index 8d988552..6490aebe 100644 --- a/charts/sidecar/templates/sidecarStatefulSet.yaml +++ b/charts/sidecar/templates/sidecarStatefulSet.yaml @@ -21,6 +21,8 @@ spec: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + {{- .Values.sidecar.command | toYaml | nindent 12 }} {{- if .Values.sidecar.ports }} ports: {{- range $k, $v := .Values.sidecar.ports }} From 73cbc9232cbeb9bd298d0d71117cd0509c023aea Mon Sep 17 00:00:00 2001 From: Sean McGary Date: Wed, 13 Nov 2024 16:06:56 -0600 Subject: [PATCH 4/4] Update dockerfile, fix args --- Dockerfile | 5 ++--- charts/sidecar/templates/sidecarStatefulSet.yaml | 3 +-- charts/sidecar/values.yaml | 3 +-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5b1c6cb8..7ea5ea14 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,9 +14,8 @@ RUN make deps RUN make build -RUN mv /build/bin/sidecar /usr/local/bin/sidecar +FROM debian:testing-slim -RUN apt clean && \ - rm -rf /var/lib/apt/lists/* +COPY --from=builder /build/bin/sidecar /build/bin/sidecar ENTRYPOINT ["/usr/local/bin/sidecar"] diff --git a/charts/sidecar/templates/sidecarStatefulSet.yaml b/charts/sidecar/templates/sidecarStatefulSet.yaml index 6490aebe..2682d41c 100644 --- a/charts/sidecar/templates/sidecarStatefulSet.yaml +++ b/charts/sidecar/templates/sidecarStatefulSet.yaml @@ -21,8 +21,7 @@ spec: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} - command: - {{- .Values.sidecar.command | toYaml | nindent 12 }} + args: {{ .Values.sidecar.args | toJson}} {{- if .Values.sidecar.ports }} ports: {{- range $k, $v := .Values.sidecar.ports }} diff --git a/charts/sidecar/values.yaml b/charts/sidecar/values.yaml index b5674106..9b2c868f 100644 --- a/charts/sidecar/values.yaml +++ b/charts/sidecar/values.yaml @@ -7,8 +7,7 @@ sidecar: replicas: 1 nameOverride: '' additionalLabels: {} - command: - - run + args: ["run"] env: SIDECAR_CHAIN: "mainnet" SIDECAR_DEBUG: "false"