--- apiVersion: v1 kind: Service metadata: name: {{ .NAME }}-solana-target-events namespace: {{ .NAMESPACE }} labels: app: {{ .NAME }}-solana-target-events spec: selector: app: {{ .NAME }}-solana-target-events ports: - port: {{ .PORT }} targetPort: {{ .PORT }} name: {{ .NAME }}-solana-target-events protocol: TCP --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: blockchain-watcher-solana-target-events-pvc namespace: {{ .NAMESPACE }} spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Mi storageClassName: gp2 --- apiVersion: v1 kind: ConfigMap metadata: name: {{ .NAME }}-solana-target-events-jobs namespace: {{ .NAMESPACE }} data: testnet-jobs.json: |- [ { "id": "poll-transfer-redeemed-solana", "chain": "solana", "source": { "action": "PollSolanaTransactions", "records": "GetSolanaTransactions", "config": { "slotBatchSize": 1000, "commitment": "finalized", "interval": 1500, "signaturesLimit": 200, "programId": "DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe", "chain": "solana", "chainId": 1 } }, "handlers": [ { "action": "HandleSolanaTransactions", "target": "sns", "mapper": "solanaTransferRedeemedMapper", "config": { "programId": "DZnkkTmCiFWfYTfT41X3Rd1kDgozqzxWaHqsw6W4x2oe", "metricName": "process_vaa_event" } } ] } ] mainnet-jobs.json: |- [ { "id": "poll-transfer-redeemed-solana", "chain": "solana", "source": { "action": "PollSolanaTransactions", "records": "GetSolanaTransactions", "config": { "slotBatchSize": 1000, "commitment": "finalized", "interval": 1500, "signaturesLimit": 200, "programId": "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb", "chain": "solana", "chainId": 1 } }, "handlers": [ { "action": "HandleSolanaTransactions", "target": "sns", "mapper": "solanaTransferRedeemedMapper", "config": { "programId": "wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb", "metricName": "process_vaa_event" } } ] } ] --- apiVersion: apps/v1 kind: Deployment metadata: name: {{ .NAME }}-solana-target-events namespace: {{ .NAMESPACE }} spec: replicas: 1 selector: matchLabels: app: {{ .NAME }}-solana-target-events template: metadata: labels: app: {{ .NAME }}-solana-target-events annotations: prometheus.io/scrape: "true" prometheus.io/port: "{{ .PORT }}" spec: restartPolicy: Always terminationGracePeriodSeconds: 30 serviceAccountName: event-watcher containers: - name: {{ .NAME }} image: {{ .IMAGE_NAME }} env: - name: NODE_ENV value: {{ .NODE_ENV }} - name: PORT value: "{{ .PORT }}" - name: LOG_LEVEL value: {{ .LOG_LEVEL }} - name: BLOCKCHAIN_ENV value: {{ .BLOCKCHAIN_ENV }} - name: DRY_RUN_ENABLED value: "{{ .DRY_RUN_ENABLED }}" - name: SNS_TOPIC_ARN value: {{ .SNS_TOPIC_ARN }} - name: SNS_REGION value: {{ .SNS_REGION }} - name: NODE_OPTIONS value: {{ .NODE_OPTIONS }} - name: SOLANA_RPCS valueFrom: secretKeyRef: name: blockchain-watcher key: solana-urls - name: JOBS_DIR value: /home/node/app/jobs resources: limits: memory: {{ .RESOURCES_LIMITS_MEMORY }} cpu: {{ .RESOURCES_LIMITS_CPU }} requests: memory: {{ .RESOURCES_REQUESTS_MEMORY }} cpu: {{ .RESOURCES_REQUESTS_CPU }} volumeMounts: - name: metadata-volume mountPath: /home/node/app/metadata-repo - name: jobs-volume mountPath: /home/node/app/jobs volumes: - name: metadata-volume persistentVolumeClaim: claimName: blockchain-watcher-solana-target-events-pvc - name: jobs-volume configMap: name: {{ .NAME }}-solana-target-events-jobs items: - key: {{ .BLOCKCHAIN_ENV }}-jobs.json path: jobs.json