Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v2
name: l1-volume-indexer
description: A Helm chart for L1 Transaction Volume Indexer CronJob
type: application
version: 0.1.0
appVersion: "v0.1.0"
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "l1-volume-indexer.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "l1-volume-indexer.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "l1-volume-indexer.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Common labels
*/}}
{{- define "l1-volume-indexer.labels" -}}
helm.sh/chart: {{ include "l1-volume-indexer.chart" . }}
{{ include "l1-volume-indexer.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Selector labels
*/}}
{{- define "l1-volume-indexer.selectorLabels" -}}
app.kubernetes.io/name: {{ include "l1-volume-indexer.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
apiVersion: batch/v1
kind: CronJob
metadata:
name: {{ include "l1-volume-indexer.fullname" . }}
labels:
{{- include "l1-volume-indexer.labels" . | nindent 4 }}
spec:
schedule: {{ .Values.cronjob.schedule | quote }}
concurrencyPolicy: {{ .Values.cronjob.concurrencyPolicy }}
successfulJobsHistoryLimit: {{ .Values.cronjob.successfulJobsHistoryLimit }}
failedJobsHistoryLimit: {{ .Values.cronjob.failedJobsHistoryLimit }}
jobTemplate:
metadata:
labels:
{{- include "l1-volume-indexer.selectorLabels" . | nindent 8 }}
spec:
backoffLimit: {{ .Values.cronjob.backoffLimit }}
activeDeadlineSeconds: {{ .Values.cronjob.activeDeadlineSeconds }}
template:
metadata:
labels:
{{- include "l1-volume-indexer.selectorLabels" . | nindent 12 }}
spec:
restartPolicy: OnFailure
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
args: ["-fill-db"]
env:
- name: COVALENT_KEY
valueFrom:
secretKeyRef:
name: {{ include "l1-volume-indexer.fullname" . }}-secrets
key: covalent-key
- name: DB_HOST
valueFrom:
secretKeyRef:
name: {{ include "l1-volume-indexer.fullname" . }}-secrets
key: db-host
- name: DB_USER
valueFrom:
secretKeyRef:
name: {{ include "l1-volume-indexer.fullname" . }}-secrets
key: db-user
- name: DB_PW
valueFrom:
secretKeyRef:
name: {{ include "l1-volume-indexer.fullname" . }}-secrets
key: db-password
- name: DB_PORT
valueFrom:
secretKeyRef:
name: {{ include "l1-volume-indexer.fullname" . }}-secrets
key: db-port
- name: DB_NAME
valueFrom:
secretKeyRef:
name: {{ include "l1-volume-indexer.fullname" . }}-secrets
key: db-name
resources:
{{- toYaml .Values.resources | nindent 16 }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{{- if .Values.global.externalSecrets.enabled }}
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: {{ include "l1-volume-indexer.fullname" . }}-secrets
labels:
{{- include "l1-volume-indexer.labels" . | nindent 4 }}
annotations:
helm.sh/hook: pre-install,pre-upgrade
helm.sh/hook-weight: "-2"
spec:
refreshInterval: {{ .Values.global.externalSecrets.refreshInterval | default "12h" }}
secretStoreRef:
name: {{ .Values.global.externalSecrets.secretStore }}
kind: {{ .Values.global.externalSecrets.secretStoreKind | default "ClusterSecretStore" }}
target:
name: {{ include "l1-volume-indexer.fullname" . }}-secrets
creationPolicy: Owner
data:
- secretKey: db-host
remoteRef:
key: {{ .Values.envVars.secretName }}
property: {{ .Values.envVars.database.host }}
- secretKey: db-user
remoteRef:
key: {{ .Values.envVars.secretName }}
property: {{ .Values.envVars.database.user }}
- secretKey: db-password
remoteRef:
key: {{ .Values.envVars.secretName }}
property: {{ .Values.envVars.database.password }}
- secretKey: db-port
remoteRef:
key: {{ .Values.envVars.secretName }}
property: {{ .Values.envVars.database.port }}
- secretKey: db-name
remoteRef:
key: {{ .Values.envVars.secretName }}
property: {{ .Values.envVars.database.name }}
- secretKey: covalent-key
remoteRef:
key: {{ .Values.envVars.secretName }}
property: {{ .Values.envVars.covalentKey }}
{{- end }}
43 changes: 43 additions & 0 deletions infrastructure/charts/mev-commit-l1-tx-volume-indexer/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
image:
repository: primev/primev
pullPolicy: IfNotPresent
tag: "l1-volume-indexer-v1"

nameOverride: ""
fullnameOverride: ""

# CronJob configuration
cronjob:
schedule: "0 0 * * *" # Daily at midnight UTC
concurrencyPolicy: Forbid
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 3
backoffLimit: 2
activeDeadlineSeconds: 3600 # 1 hour timeout

resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi

# Global configuration for External Secrets
global:
externalSecrets:
enabled: true
secretStore: ""
secretStoreKind: "ClusterSecretStore"
refreshInterval: "12h"


envVars:
secretName: ""
database:
host: ""
user: ""
password: ""
port: ""
name: ""
covalentKey: ""
1 change: 1 addition & 0 deletions infrastructure/docker/Dockerfile.builder
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ ARG TARGETS="./oracle/cmd \
./tools/points-service \
./p2p/integrationtest/provider \
./p2p/integrationtest/real-bidder \
./tools/l1-tx-volume-indexer \
./cl/cmd/singlenode"

RUN --mount=type=cache,target=/root/.cache/go-build \
Expand Down
8 changes: 8 additions & 0 deletions infrastructure/docker/Dockerfile.l1volumeindexer
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# syntax=docker/dockerfile:1.4
FROM alpine:3.10

RUN apk add --no-cache ca-certificates

COPY --from=builder_ctx /go/bin/l1-tx-volume-indexer /usr/local/bin/l1-tx-volume-indexer

ENTRYPOINT ["l1-tx-volume-indexer"]
12 changes: 12 additions & 0 deletions infrastructure/docker/docker-bake.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,17 @@ target "realbidder-emulator" {
labels = get_labels("realbidder-emulator")
}

target "l1-volume-indexer" {
inherits = ["_common"]
context = "./"
dockerfile = "Dockerfile.l1volumeindexer"
contexts = {
builder_ctx = "target:mev-commit-builder"
}
tags = [REPO_NAME != "" ? "${REGISTRY}/${REPO_NAME}:${TAG}-l1-volume-indexer" : "${REGISTRY}/l1-volume-indexer:${TAG}"]
labels = get_labels("l1-volume-indexer")
}

group "all" {
targets = [
"mev-commit-builder",
Expand All @@ -163,6 +174,7 @@ group "all" {
"provider-emulator",
"realbidder-emulator",
"relay-emulator",
"l1-volume-indexer",
"snode"
]
}
Expand Down
Loading