Skip to content

Commit 4ae4956

Browse files
authored
chore: add hi-mem taint (#23828)
.
1 parent f6782da commit 4ae4956

9 files changed

Lines changed: 152 additions & 17 deletions

File tree

.github/workflows/deploy-network.yml

Lines changed: 49 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@ on:
1717
description: "Full Aztec docker image (e.g., aztecprotocol/aztec:2.3.4). If not set, constructed from semver."
1818
required: false
1919
type: string
20+
prover_docker_image:
21+
description: "Full Prover docker image URL. If not set defaults to aztec_docker_image."
22+
required: false
23+
type: string
24+
use_internal_docker_registry:
25+
description: "Construct Aztec docker images from INTERNAL_DOCKER_REGISTRY and semver."
26+
required: false
27+
type: boolean
28+
default: false
2029
ref:
2130
description: "Git ref to checkout"
2231
required: false
@@ -62,6 +71,15 @@ on:
6271
description: "Full Aztec docker image (e.g., aztecprotocol/aztec:2.3.4). If not set, constructed from semver."
6372
required: false
6473
type: string
74+
prover_docker_image:
75+
description: "Full Prover docker image URL. If not set defaults to aztec_docker_image."
76+
required: false
77+
type: string
78+
use_internal_docker_registry:
79+
description: "Construct Aztec docker images from INTERNAL_DOCKER_REGISTRY and semver."
80+
required: false
81+
type: boolean
82+
default: false
6583
namespace:
6684
description: "Kubernetes namespace override (optional, defaults to env file value)"
6785
required: false
@@ -123,6 +141,8 @@ jobs:
123141
node-version: 22
124142

125143
- name: Validate inputs
144+
env:
145+
INTERNAL_DOCKER_REGISTRY: ${{ secrets.INTERNAL_DOCKER_REGISTRY }}
126146
run: |
127147
# Validate network
128148
if [[ ! -f "spartan/environments/${{ inputs.network }}.env" ]]; then
@@ -146,28 +166,42 @@ jobs:
146166
fi
147167
fi
148168
149-
# Resolve the docker image
150-
if [[ -n "${{ inputs.aztec_docker_image }}" ]]; then
151-
AZTEC_DOCKER_IMAGE="${{ inputs.aztec_docker_image }}"
152-
else
153-
AZTEC_DOCKER_IMAGE="aztecprotocol/aztec:${{ inputs.semver }}"
169+
if [[ "${{ inputs.use_internal_docker_registry }}" == "true" && -z "${{ inputs.semver }}" ]]; then
170+
echo "Error: semver must be provided when use_internal_docker_registry is true"
171+
exit 1
154172
fi
155-
echo "AZTEC_DOCKER_IMAGE=$AZTEC_DOCKER_IMAGE" >> $GITHUB_ENV
156173
157-
# Use the CRS-baked prover-agent image when it exists; otherwise let the
158-
# deploy script fall back to AZTEC_DOCKER_IMAGE and download CRS on startup.
159-
if [[ -n "${{ inputs.semver }}" ]]; then
160-
PROVER_AGENT_DOCKER_IMAGE="aztecprotocol/aztec-prover-agent:${{ inputs.semver }}"
174+
# Resolve the docker image
175+
AZTEC_DOCKER_IMAGE="${{ inputs.aztec_docker_image }}"
176+
PROVER_AGENT_DOCKER_IMAGE="${{ inputs.prover_docker_image }}"
177+
INTERNAL_REGISTRY_BASE_URL=""
178+
179+
if [[ "${{ inputs.use_internal_docker_registry }}" == "true" ]]; then
180+
INTERNAL_REGISTRY_BASE_URL="${INTERNAL_DOCKER_REGISTRY%/}"
181+
echo "::add-mask::$INTERNAL_REGISTRY_BASE_URL"
182+
fi
161183
162-
echo "Checking if prover agent image exists: $PROVER_AGENT_DOCKER_IMAGE"
163-
if docker manifest inspect "$PROVER_AGENT_DOCKER_IMAGE" > /dev/null 2>&1; then
164-
echo "PROVER_AGENT_DOCKER_IMAGE=$PROVER_AGENT_DOCKER_IMAGE" >> $GITHUB_ENV
184+
if [[ -z "$AZTEC_DOCKER_IMAGE" ]]; then
185+
if [[ -n "$INTERNAL_REGISTRY_BASE_URL" ]]; then
186+
AZTEC_DOCKER_IMAGE="$INTERNAL_REGISTRY_BASE_URL/aztec:${{ inputs.semver }}"
187+
echo "::add-mask::$AZTEC_DOCKER_IMAGE"
165188
else
166-
echo "Prover agent image does not exist: $PROVER_AGENT_DOCKER_IMAGE"
167-
echo "Falling back to AZTEC_DOCKER_IMAGE for prover agents."
189+
AZTEC_DOCKER_IMAGE="aztecprotocol/aztec:${{ inputs.semver }}"
190+
fi
191+
fi
192+
193+
if [[ -z "$PROVER_AGENT_DOCKER_IMAGE" ]]; then
194+
if [[ -n "$INTERNAL_REGISTRY_BASE_URL" ]]; then
195+
PROVER_AGENT_DOCKER_IMAGE="$INTERNAL_REGISTRY_BASE_URL/aztec-prover-agent:${{ inputs.semver }}"
196+
echo "::add-mask::$PROVER_AGENT_DOCKER_IMAGE"
197+
elif [[ -z "${{ inputs.aztec_docker_image }}" && -n "${{ inputs.semver }}" ]]; then
198+
PROVER_AGENT_DOCKER_IMAGE="aztecprotocol/aztec-prover-agent:${{ inputs.semver }}"
168199
fi
169200
fi
170201
202+
echo "AZTEC_DOCKER_IMAGE=$AZTEC_DOCKER_IMAGE" >> $GITHUB_ENV
203+
echo "PROVER_AGENT_DOCKER_IMAGE=$PROVER_AGENT_DOCKER_IMAGE" >> $GITHUB_ENV
204+
171205
- name: Store the GCP key in a file
172206
env:
173207
GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }}

.github/workflows/deploy-staging.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ jobs:
3232
tag: ${{ steps.resolve.outputs.tag }}
3333
semver: ${{ steps.resolve.outputs.semver }}
3434
steps:
35-
- name: Checkout v4-next
35+
- name: Checkout v5-next
3636
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
3737
with:
38-
ref: v4-next
38+
ref: v5-next
3939
token: ${{ secrets.AZTEC_BOT_GITHUB_TOKEN }}
4040
fetch-depth: 0
4141

@@ -82,6 +82,7 @@ jobs:
8282
with:
8383
network: staging
8484
semver: ${{ needs.determine-tag.outputs.semver }}
85+
use_internal_docker_registry: true
8586
source_tag: ${{ needs.determine-tag.outputs.tag }}
8687
deploy_contracts: ${{ inputs.deploy_contracts == true }}
8788
secrets: inherit

spartan/terraform/deploy-aztec-infra/values/prover-resources-dev-hi-tps.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ node:
1414
cores: "8"
1515
hi-mem: "true"
1616

17+
tolerations:
18+
- key: "hi-mem"
19+
operator: "Equal"
20+
value: "true"
21+
effect: "NoSchedule"
22+
1723
persistence:
1824
enabled: true
1925
statefulSet:
@@ -35,6 +41,12 @@ broker:
3541
cores: "8"
3642
hi-mem: "true"
3743

44+
tolerations:
45+
- key: "hi-mem"
46+
operator: "Equal"
47+
value: "true"
48+
effect: "NoSchedule"
49+
3850
persistence:
3951
enabled: true
4052
statefulSet:

spartan/terraform/deploy-aztec-infra/values/prover-resources-prod-hi-tps.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ node:
1414
cores: "8"
1515
hi-mem: "true"
1616

17+
tolerations:
18+
- key: "hi-mem"
19+
operator: "Equal"
20+
value: "true"
21+
effect: "NoSchedule"
22+
1723
persistence:
1824
enabled: true
1925
statefulSet:
@@ -35,6 +41,12 @@ broker:
3541
cores: "8"
3642
hi-mem: "true"
3743

44+
tolerations:
45+
- key: "hi-mem"
46+
operator: "Equal"
47+
value: "true"
48+
effect: "NoSchedule"
49+
3850
persistence:
3951
enabled: true
4052
statefulSet:

spartan/terraform/gke-cluster/cluster/main.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,12 @@ resource "google_container_node_pool" "aztec_nodes-8core-hi-mem" {
191191
hi-mem = "true"
192192
}
193193
tags = ["aztec-gke-node", "aztec"]
194+
195+
taint {
196+
key = "hi-mem"
197+
value = "true"
198+
effect = "NO_SCHEDULE"
199+
}
194200
}
195201

196202
# Management configuration
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
resource "google_project_service" "artifact_registry" {
2+
project = var.project
3+
service = "artifactregistry.googleapis.com"
4+
5+
disable_on_destroy = false
6+
}
7+
8+
resource "google_artifact_registry_repository" "docker_registry" {
9+
project = var.project
10+
location = var.region
11+
repository_id = var.docker_registry_repository_id
12+
description = "Docker repository for Spartan GKE images"
13+
format = "DOCKER"
14+
15+
depends_on = [google_project_service.artifact_registry]
16+
}
17+
18+
resource "google_artifact_registry_repository_iam_member" "gke_sa_docker_registry_reader" {
19+
project = google_artifact_registry_repository.docker_registry.project
20+
location = google_artifact_registry_repository.docker_registry.location
21+
repository = google_artifact_registry_repository.docker_registry.name
22+
role = "roles/artifactregistry.reader"
23+
member = "serviceAccount:${google_service_account.gke_sa.email}"
24+
}
25+
26+
resource "google_artifact_registry_repository_iam_member" "ci_docker_registry_writer" {
27+
project = google_artifact_registry_repository.docker_registry.project
28+
location = google_artifact_registry_repository.docker_registry.location
29+
repository = google_artifact_registry_repository.docker_registry.name
30+
role = "roles/artifactregistry.writer"
31+
member = "serviceAccount:${google_service_account.ci.email}"
32+
}

spartan/terraform/gke-cluster/iam.tf

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@ resource "google_project_iam_member" "helm_sa_roles" {
4141
member = "serviceAccount:${google_service_account.helm_sa.email}"
4242
}
4343

44+
# Create a service account for CI
45+
resource "google_service_account" "ci" {
46+
account_id = var.ci_service_account_id
47+
display_name = "CI Service Account"
48+
description = "Service account for CI jobs that publish Docker images"
49+
}
50+
4451
# Service account for External Secrets Operator
4552
resource "google_service_account" "eso" {
4653
account_id = "external-secrets-operator"

spartan/terraform/gke-cluster/outputs.tf

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,30 @@ output "eso_service_account_email" {
66
value = google_service_account.eso.email
77
}
88

9+
output "ci_service_account_email" {
10+
value = google_service_account.ci.email
11+
}
12+
913
output "region" {
1014
description = "Google cloud region"
1115
value = var.region
1216
}
1317

18+
output "docker_registry_hostname" {
19+
description = "Artifact Registry Docker hostname"
20+
value = "${var.region}-docker.pkg.dev"
21+
}
22+
23+
output "docker_registry_repository" {
24+
description = "Artifact Registry Docker repository resource name"
25+
value = google_artifact_registry_repository.docker_registry.name
26+
}
27+
28+
output "docker_registry_repository_url" {
29+
description = "Artifact Registry Docker repository URL prefix for image names"
30+
value = "${var.region}-docker.pkg.dev/${var.project}/${google_artifact_registry_repository.docker_registry.repository_id}"
31+
}
32+
1433
output "devnet_network_rpc_ips" {
1534
description = "Static IPs and hostnames for v4 devnet networks"
1635
value = {

spartan/terraform/gke-cluster/variables.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,15 @@ variable "region" {
99
variable "zone" {
1010
default = "us-west1-a"
1111
}
12+
13+
variable "docker_registry_repository_id" {
14+
description = "Artifact Registry Docker repository ID for Spartan images."
15+
type = string
16+
default = "aztec"
17+
}
18+
19+
variable "ci_service_account_id" {
20+
description = "Service account ID for CI jobs that push images to the Docker registry."
21+
type = string
22+
default = "aztec-ci"
23+
}

0 commit comments

Comments
 (0)