github.com/smartcontractkit/chainlink-testing-framework/libs@v0.0.0-20240227141906-ec710b4eb1a3/charts/geth-prysm/templates/prysm-beacon.deployment.yaml (about)

     1  apiVersion: apps/v1
     2  kind: Deployment 
     3  metadata:
     4    name: {{ .Release.Name }}-{{ .Values.prysm.beacon.name }}
     5  spec:
     6    selector:
     7      matchLabels:
     8        app: {{ .Release.Name }}-{{ .Values.prysm.beacon.name }}
     9    template:
    10      metadata:
    11        labels:
    12          app: {{ .Release.Name }}-{{ .Values.prysm.beacon.name }}
    13      spec:
    14        volumes:
    15        - name: {{ .Release.Name }}-chain-state
    16          persistentVolumeClaim:
    17            claimName: {{ .Release.Name }}-{{ .Values.storage.claim }}
    18        - name: {{ .Release.Name }}-geth-config
    19          configMap:
    20            name: {{ .Release.Name }}-geth-config   
    21        - name: {{ .Release.Name }}-prysm-config
    22          configMap:
    23            name: {{ .Release.Name }}-prysm-config                  
    24        containers:
    25          - name: {{ .Values.prysm.beacon.name }}
    26            image: {{ .Values.prysm.beacon.image.repository }}:{{ .Values.prysm.beacon.image.tag }}
    27            imagePullPolicy: {{ .Values.imagePullPolicy }}
    28            args:
    29              - "--datadir=/data/consensus/beacondata"
    30              - "--min-sync-peers=0"
    31              - "--genesis-state={{ .Values.prysm.shared.genesisFile }}"
    32              - "--bootstrap-node="
    33              - "--chain-config-file={{ .Values.prysm.shared.configFile }}"
    34              - "--contract-deployment-block=0"
    35              - "--chain-id={{ .Values.general.networkId }}"
    36              - "--rpc-host=0.0.0.0"
    37              - "--grpc-gateway-host=0.0.0.0"
    38              - "--execution-endpoint=http://{{ .Release.Name }}-{{ .Values.geth.name }}-svc:{{ .Values.geth.ports.execution }}"
    39              - "--accept-terms-of-use"
    40              - "--jwt-secret={{ .Values.shared.jwtSecretFile }}"
    41              - "--suggested-fee-recipient={{ .Values.prysm.shared.feeRecipent }}"
    42              - "--minimum-peers-per-subnet=0"
    43              - "--enable-debug-rpc-endpoints"           
    44              - "--force-clear-db"
    45              - "--interop-eth1data-votes"
    46            resources:
    47              requests:
    48                memory: {{ .Values.prysm.beacon.resources.requests.memory }}
    49                cpu: {{ .Values.prysm.beacon.resources.requests.cpu }}
    50              limits:
    51                memory: {{ .Values.prysm.beacon.resources.limits.memory }}
    52                cpu: {{ .Values.prysm.beacon.resources.limits.cpu }}
    53            ports:
    54              - name: query-rpc
    55                containerPort: {{ .Values.prysm.beacon.ports.query }}               
    56              - name: node-rpc
    57                containerPort: {{ .Values.prysm.beacon.ports.node }}    
    58              - name: status
    59                containerPort: {{ .Values.prysm.beacon.ports.status }}                              
    60            volumeMounts:               
    61              - name: {{ .Release.Name }}-chain-state
    62                mountPath: /data 
    63              - name: {{ .Release.Name }}-geth-config
    64                mountPath: {{ .Values.shared.jwtSecretFile }}
    65                subPath: jwtsecret  
    66              - name: {{ .Release.Name }}-prysm-config
    67                mountPath: {{ .Values.prysm.shared.configFile }}
    68                subPath: config.yml         
    69            # for some reason doesn't work, the pod is never ready :/                         
    70            # readinessProbe:
    71            #   httpGet:
    72            #     path: /healthz
    73            #     port: 8080
    74            #   initialDelaySeconds: 20
    75            #   periodSeconds: 5
    76            #   timeoutSeconds: 120
    77            # livenessProbe:
    78            #   httpGet:
    79            #     path: /healthz
    80            #     port: 8080
    81            #   initialDelaySeconds: 5
    82            #   periodSeconds: 5         
    83            #   timeoutSeconds: 5                              
    84            #   failureThreshold: 2
    85        initContainers:
    86          - name: {{ .Release.Name }}-wait-for-geth
    87            image: {{ .Values.busybox.image.repository }}:{{ .Values.busybox.image.tag }}
    88            imagePullPolicy: {{ .Values.imagePullPolicy }} 
    89            command:
    90            - "/bin/sh"
    91            - "-c"
    92            - >
    93              timeout 900 sh -c '
    94                start_time=$(date +%s)
    95                while ! nc -z -v {{ .Release.Name }}-{{ .Values.geth.name }}-svc {{ .Values.geth.ports.execution }}; do
    96                  current_time=$(date +%s)
    97                  elapsed_time=$((current_time - start_time))
    98                  remaining_time=$((900 - elapsed_time))
    99                  echo "Waiting for Geth (Remaining time: $remaining_time seconds)..."
   100                  sleep 2
   101                done'