From 7d0089fa102f6e271b1a8cfe5c9cea35c19b76b5 Mon Sep 17 00:00:00 2001 From: Alberto Soutullo Date: Fri, 27 Jun 2025 17:56:35 +0200 Subject: [PATCH] Add base-manifests --- base-manifests/README.md | 4 ++ base-manifests/anvil-service.yaml | 13 +++++ base-manifests/anvil-statefulset.yaml | 35 +++++++++++++ base-manifests/deploy.sh | 33 ++++++++++++ .../snt-communities-deployment.yaml | 50 +++++++++++++++++++ base-manifests/snt-configmap-and-secret.yaml | 22 ++++++++ base-manifests/snt-contract-deployment.yaml | 45 +++++++++++++++++ 7 files changed, 202 insertions(+) create mode 100644 base-manifests/README.md create mode 100644 base-manifests/anvil-service.yaml create mode 100644 base-manifests/anvil-statefulset.yaml create mode 100644 base-manifests/deploy.sh create mode 100644 base-manifests/snt-communities-deployment.yaml create mode 100644 base-manifests/snt-configmap-and-secret.yaml create mode 100644 base-manifests/snt-contract-deployment.yaml diff --git a/base-manifests/README.md b/base-manifests/README.md new file mode 100644 index 0000000..6852e1b --- /dev/null +++ b/base-manifests/README.md @@ -0,0 +1,4 @@ +# Base manifests + +Necessary components to have in the namespace before running the benchmarks. +Apply these via `deploy.sh` just once. \ No newline at end of file diff --git a/base-manifests/anvil-service.yaml b/base-manifests/anvil-service.yaml new file mode 100644 index 0000000..1834b2b --- /dev/null +++ b/base-manifests/anvil-service.yaml @@ -0,0 +1,13 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: anvil + namespace: status-go-test +spec: + ports: + - protocol: TCP + port: 8545 + targetPort: 8545 + selector: + app: anvil \ No newline at end of file diff --git a/base-manifests/anvil-statefulset.yaml b/base-manifests/anvil-statefulset.yaml new file mode 100644 index 0000000..698c443 --- /dev/null +++ b/base-manifests/anvil-statefulset.yaml @@ -0,0 +1,35 @@ +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: anvil + namespace: status-go-test +spec: + selector: + matchLabels: + app: anvil + serviceName: "anvil" + replicas: 1 + template: + metadata: + labels: + app: anvil + spec: + containers: + - name: anvil + image: ghcr.io/foundry-rs/foundry:latest + command: ["anvil", "--host", "0.0.0.0", "--block-time", "2"] + ports: + - containerPort: 8545 + livenessProbe: + tcpSocket: + port: 8545 + initialDelaySeconds: 30 + periodSeconds: 20 + failureThreshold: 3 + timeoutSeconds: 5 + envFrom: + - configMapRef: + name: snt-config + - secretRef: + name: snt-secrets \ No newline at end of file diff --git a/base-manifests/deploy.sh b/base-manifests/deploy.sh new file mode 100644 index 0000000..4cfbbd6 --- /dev/null +++ b/base-manifests/deploy.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# +# Deployer tool for status-go-test +# Deploys the Anvil/geth service and SNT contracts and prepares the environment for running status-backend +KUBECONFIG="$HOME/.kube/sapphire.yaml" +cd "$(dirname "$0")" + +# Deploy the Anvil service +kubectl --kubeconfig $KUBECONFIG apply -f anvil-service.yaml + +# Deploy the Anvil statefulset +kubectl --kubeconfig $KUBECONFIG apply -f anvil-statefulset.yaml + +# Deploy secret + configmap +kubectl --kubeconfig $KUBECONFIG apply -f snt-configmap-and-secret.yaml + +# Check for liveness of Anvil statefulset before deploying contracts +kubectl --kubeconfig $KUBECONFIG wait --for=condition=ready pod -l app=anvil --timeout=60s --namespace=status-go-test + +# Deploy SNT contracts +kubectl --kubeconfig $KUBECONFIG apply -f snt-contract-deployment.yaml + +# Deploy Communities contracts +kubectl --kubeconfig $KUBECONFIG apply -f snt-communities-deployment.yaml + +# Wait and delete pods that finished their task +sleep 10 + +kubectl --kubeconfig $KUBECONFIG wait --for=condition=ready pod -l app=deploy-sntv2 --timeout=60s --namespace=status-go-test +kubectl --kubeconfig $KUBECONFIG wait --for=condition=ready pod -l app=deploy-communities-contracts --timeout=60s --namespace=status-go-test + +kubectl --kubeconfig $KUBECONFIG delete -f snt-contract-deployment.yaml +kubectl --kubeconfig $KUBECONFIG delete -f snt-communities-deployment.yaml diff --git a/base-manifests/snt-communities-deployment.yaml b/base-manifests/snt-communities-deployment.yaml new file mode 100644 index 0000000..8310d6e --- /dev/null +++ b/base-manifests/snt-communities-deployment.yaml @@ -0,0 +1,50 @@ + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: deploy-communities-contracts + namespace: status-go-test +spec: + replicas: 1 + selector: + matchLabels: + app: deploy-communities-contracts + template: + metadata: + labels: + app: deploy-communities-contracts + spec: + dnsConfig: + searches: + - anvil.status-go-test.svc.cluster.local + containers: + - name: deploy-communities-contracts + image: zorlin/deploy-communities-contracts:latest + envFrom: + - configMapRef: + name: snt-config + - secretRef: + name: snt-secrets + command: [] + args: ["/bin/bash", "-c", "forge script script/DeployContracts.s.sol --broadcast --fork-url=http://anvil.status-go-test:8545 --private-key=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --sender=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"] + env: + - name: GITHUB_ORG + value: "status-im" + - name: GITHUB_REPO + value: "communities-contracts" + - name: API_KEY_ETHERSCAN + valueFrom: + secretKeyRef: + name: snt-secrets + key: API_KEY_ETHERSCAN + - name: API_KEY_ARBISCAN + valueFrom: + secretKeyRef: + name: snt-secrets + key: API_KEY_ARBISCAN + - name: API_KEY_OPTIMISTIC_ETHERSCAN + valueFrom: + secretKeyRef: + name: snt-secrets + key: API_KEY_OPTIMISTIC_ETHERSCAN diff --git a/base-manifests/snt-configmap-and-secret.yaml b/base-manifests/snt-configmap-and-secret.yaml new file mode 100644 index 0000000..a2b9119 --- /dev/null +++ b/base-manifests/snt-configmap-and-secret.yaml @@ -0,0 +1,22 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: snt-config + namespace: status-go-test +data: + GITHUB_ORG: "status-im" + GITHUB_REPO_SNTV2: "status-network-token-v2" + GITHUB_REPO_COMMUNITIES: "communities-contracts" +--- +apiVersion: v1 +kind: Secret +metadata: + name: snt-secrets + namespace: status-go-test +type: Opaque +data: + API_KEY_ETHERSCAN: "" + API_KEY_ARBISCAN: "" + API_KEY_OPTIMISTIC_ETHERSCAN: "" + PRIVATE_KEY: "YWMwOTc0YmVjMzlhMTdlMzZiYTRhNmI0ZDIzOGZmOTQ0YmFjYjQ3OGNiZWQ1ZWZjYWU3ODRkN2JmNGYyZmY4MA==" \ No newline at end of file diff --git a/base-manifests/snt-contract-deployment.yaml b/base-manifests/snt-contract-deployment.yaml new file mode 100644 index 0000000..3bad31b --- /dev/null +++ b/base-manifests/snt-contract-deployment.yaml @@ -0,0 +1,45 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: deploy-sntv2 + namespace: status-go-test +spec: + replicas: 1 + selector: + matchLabels: + app: deploy-sntv2 + template: + metadata: + labels: + app: deploy-sntv2 + spec: + dnsConfig: + searches: + - anvil.status-go-test.svc.cluster.local + containers: + - name: deploy-sntv2 + image: zorlin/deploy-sntv2:latest + command: [] + args: ["/bin/bash", "-c", "forge script script/Deploy.s.sol --broadcast --fork-url=http://anvil:8545 --private-key=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"] + env: + - name: GITHUB_ORG + value: "status-im" + - name: GITHUB_REPO + value: "status-network-token-v2" + - name: API_KEY_ETHERSCAN + valueFrom: + secretKeyRef: + name: snt-secrets + key: API_KEY_ETHERSCAN + - name: API_KEY_ARBISCAN + valueFrom: + secretKeyRef: + name: snt-secrets + key: API_KEY_ARBISCAN + - name: API_KEY_OPTIMISTIC_ETHERSCAN + valueFrom: + secretKeyRef: + name: snt-secrets + key: API_KEY_OPTIMISTIC_ETHERSCAN +