diff --git a/services/gitea/kustomization.yaml b/services/gitea/kustomization.yaml index b09f5fdf..af30b68e 100644 --- a/services/gitea/kustomization.yaml +++ b/services/gitea/kustomization.yaml @@ -5,6 +5,14 @@ resources: - namespace.yaml - serviceaccount.yaml - pvc.yaml + - oneoffs/veles-feedback-acl-ensure-job.yaml - deployment.yaml - service.yaml - ingress.yaml +configMapGenerator: + - name: veles-feedback-acl-ensure-script + namespace: gitea + files: + - scripts/veles_feedback_acl_ensure.sh +generatorOptions: + disableNameSuffixHash: true diff --git a/services/gitea/oneoffs/veles-feedback-acl-ensure-job.yaml b/services/gitea/oneoffs/veles-feedback-acl-ensure-job.yaml new file mode 100644 index 00000000..659b9b58 --- /dev/null +++ b/services/gitea/oneoffs/veles-feedback-acl-ensure-job.yaml @@ -0,0 +1,48 @@ +# services/gitea/oneoffs/veles-feedback-acl-ensure-job.yaml +# One-off job for gitea/veles-feedback-acl-ensure-1. +# Purpose: keep Veles testers on the feedback repo without granting source access. +apiVersion: batch/v1 +kind: Job +metadata: + name: veles-feedback-acl-ensure-1 + namespace: gitea +spec: + suspend: false + backoffLimit: 0 + template: + metadata: + annotations: + vault.hashicorp.com/agent-inject: "true" + vault.hashicorp.com/agent-pre-populate-only: "true" + vault.hashicorp.com/role: "gitea" + vault.hashicorp.com/agent-inject-secret-gitea-db-secret__password: "kv/data/atlas/gitea/gitea-db-secret" + vault.hashicorp.com/agent-inject-template-gitea-db-secret__password: | + {{ with secret "kv/data/atlas/gitea/gitea-db-secret" }} + {{ .Data.data.password }} + {{ end }} + spec: + serviceAccountName: gitea-vault + restartPolicy: Never + volumes: + - name: veles-feedback-acl-ensure-script + configMap: + name: veles-feedback-acl-ensure-script + defaultMode: 0555 + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/arch + operator: In + values: ["arm64"] + - key: node-role.kubernetes.io/worker + operator: Exists + containers: + - name: apply + image: postgres:15 + command: ["/scripts/veles_feedback_acl_ensure.sh"] + volumeMounts: + - name: veles-feedback-acl-ensure-script + mountPath: /scripts + readOnly: true diff --git a/services/gitea/scripts/veles_feedback_acl_ensure.sh b/services/gitea/scripts/veles_feedback_acl_ensure.sh new file mode 100644 index 00000000..dcb35b87 --- /dev/null +++ b/services/gitea/scripts/veles_feedback_acl_ensure.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env sh +set -eu + +db_host="${GITEA_DB_HOST:-postgres-service.postgres.svc.cluster.local}" +db_port="${GITEA_DB_PORT:-5432}" +db_name="${GITEA_DB_NAME:-gitea}" +db_user="${GITEA_DB_USER:-gitea}" +org_name="${VELES_GITEA_ORG:-veles-alpha}" +repo_name="${VELES_GITEA_FEEDBACK_REPO:-feedback}" +team_name="${VELES_GITEA_TESTER_TEAM:-testers}" + +if [ ! -r /vault/secrets/gitea-db-secret__password ]; then + echo "Missing readable Vault secret file: /vault/secrets/gitea-db-secret__password" >&2 + exit 1 +fi + +export PGPASSWORD +PGPASSWORD="$(tr -d '\r\n'