mirror of
https://gitlab.sarex.io/infra/terraform-contour-mirror.git
synced 2026-08-05 18:31:00 +03:00
++ scope sops age key to decrypt step instead of whole ci job
This commit is contained in:
parent
854013a415
commit
c7e04cb836
@ -51,7 +51,6 @@ jobs:
|
|||||||
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
|
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
|
||||||
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
||||||
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
|
|
||||||
KUBE_CONTEXT: ${{ secrets.KUBE_CONTEXT }}
|
KUBE_CONTEXT: ${{ secrets.KUBE_CONTEXT }}
|
||||||
KUBECONFIG_B64: ${{ secrets.KUBECONFIG_B64 }}
|
KUBECONFIG_B64: ${{ secrets.KUBECONFIG_B64 }}
|
||||||
KUBECONFIG: /workspace/.kube/config
|
KUBECONFIG: /workspace/.kube/config
|
||||||
@ -84,10 +83,20 @@ jobs:
|
|||||||
else
|
else
|
||||||
echo "No KUBECONFIG_B64 — in-cluster runner: kubernetes/vault providers use the pod ServiceAccount kubeconfig or in-cluster config."
|
echo "No KUBECONFIG_B64 — in-cluster runner: kubernetes/vault providers use the pod ServiceAccount kubeconfig or in-cluster config."
|
||||||
fi
|
fi
|
||||||
|
- name: Decrypt secret values
|
||||||
|
# SOPS_AGE_KEY only reaches this step, not the whole job - the rest
|
||||||
|
# (checkout, kubeconfig, terragrunt run) never sees it.
|
||||||
|
env:
|
||||||
|
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
|
||||||
|
run: |
|
||||||
|
if ! command -v sops >/dev/null 2>&1; then apk add --no-cache sops || (apk add --no-cache curl && curl -fsSL https://github.com/getsops/sops/releases/download/v3.9.0/sops-v3.9.0.linux.amd64 -o /usr/local/bin/sops && chmod +x /usr/local/bin/sops); fi
|
||||||
|
sops --decrypt infrastructure-secrets.yaml > /tmp/infra-secret-values.yaml
|
||||||
|
echo "INFRA_SECRET_VALUES_FILE=/tmp/infra-secret-values.yaml" >> "$GITHUB_ENV"
|
||||||
- name: Run validate for all stacks
|
- name: Run validate for all stacks
|
||||||
run: |
|
run: |
|
||||||
. ./scripts/load_admin_creds.sh
|
. ./scripts/load_admin_creds.sh
|
||||||
./scripts/run_all_stacks.sh validate
|
./scripts/run_all_stacks.sh validate
|
||||||
|
rm -f /tmp/infra-secret-values.yaml
|
||||||
|
|
||||||
plan:
|
plan:
|
||||||
needs: [validate]
|
needs: [validate]
|
||||||
@ -101,7 +110,6 @@ jobs:
|
|||||||
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
|
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
|
||||||
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
||||||
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
|
|
||||||
KUBE_CONTEXT: ${{ secrets.KUBE_CONTEXT }}
|
KUBE_CONTEXT: ${{ secrets.KUBE_CONTEXT }}
|
||||||
KUBECONFIG_B64: ${{ secrets.KUBECONFIG_B64 }}
|
KUBECONFIG_B64: ${{ secrets.KUBECONFIG_B64 }}
|
||||||
KUBECONFIG: /workspace/.kube/config
|
KUBECONFIG: /workspace/.kube/config
|
||||||
@ -132,10 +140,20 @@ jobs:
|
|||||||
echo "$KUBECONFIG_B64" | base64 -d > /workspace/.kube/config
|
echo "$KUBECONFIG_B64" | base64 -d > /workspace/.kube/config
|
||||||
chmod 600 /workspace/.kube/config
|
chmod 600 /workspace/.kube/config
|
||||||
fi
|
fi
|
||||||
|
- name: Decrypt secret values
|
||||||
|
# SOPS_AGE_KEY only reaches this step, not the whole job - the rest
|
||||||
|
# (checkout, kubeconfig, terragrunt run) never sees it.
|
||||||
|
env:
|
||||||
|
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
|
||||||
|
run: |
|
||||||
|
if ! command -v sops >/dev/null 2>&1; then apk add --no-cache sops || (apk add --no-cache curl && curl -fsSL https://github.com/getsops/sops/releases/download/v3.9.0/sops-v3.9.0.linux.amd64 -o /usr/local/bin/sops && chmod +x /usr/local/bin/sops); fi
|
||||||
|
sops --decrypt infrastructure-secrets.yaml > /tmp/infra-secret-values.yaml
|
||||||
|
echo "INFRA_SECRET_VALUES_FILE=/tmp/infra-secret-values.yaml" >> "$GITHUB_ENV"
|
||||||
- name: Run plan for all stacks
|
- name: Run plan for all stacks
|
||||||
run: |
|
run: |
|
||||||
. ./scripts/load_admin_creds.sh
|
. ./scripts/load_admin_creds.sh
|
||||||
./scripts/run_all_stacks.sh plan
|
./scripts/run_all_stacks.sh plan
|
||||||
|
rm -f /tmp/infra-secret-values.yaml
|
||||||
|
|
||||||
apply:
|
apply:
|
||||||
needs: [plan]
|
needs: [plan]
|
||||||
@ -150,7 +168,6 @@ jobs:
|
|||||||
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
|
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
|
||||||
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
VAULT_ADDR: ${{ secrets.VAULT_ADDR }}
|
||||||
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }}
|
||||||
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
|
|
||||||
KUBE_CONTEXT: ${{ secrets.KUBE_CONTEXT }}
|
KUBE_CONTEXT: ${{ secrets.KUBE_CONTEXT }}
|
||||||
KUBECONFIG_B64: ${{ secrets.KUBECONFIG_B64 }}
|
KUBECONFIG_B64: ${{ secrets.KUBECONFIG_B64 }}
|
||||||
KUBECONFIG: /workspace/.kube/config
|
KUBECONFIG: /workspace/.kube/config
|
||||||
@ -181,7 +198,17 @@ jobs:
|
|||||||
echo "$KUBECONFIG_B64" | base64 -d > /workspace/.kube/config
|
echo "$KUBECONFIG_B64" | base64 -d > /workspace/.kube/config
|
||||||
chmod 600 /workspace/.kube/config
|
chmod 600 /workspace/.kube/config
|
||||||
fi
|
fi
|
||||||
|
- name: Decrypt secret values
|
||||||
|
# SOPS_AGE_KEY only reaches this step, not the whole job - the rest
|
||||||
|
# (checkout, kubeconfig, terragrunt run) never sees it.
|
||||||
|
env:
|
||||||
|
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
|
||||||
|
run: |
|
||||||
|
if ! command -v sops >/dev/null 2>&1; then apk add --no-cache sops || (apk add --no-cache curl && curl -fsSL https://github.com/getsops/sops/releases/download/v3.9.0/sops-v3.9.0.linux.amd64 -o /usr/local/bin/sops && chmod +x /usr/local/bin/sops); fi
|
||||||
|
sops --decrypt infrastructure-secrets.yaml > /tmp/infra-secret-values.yaml
|
||||||
|
echo "INFRA_SECRET_VALUES_FILE=/tmp/infra-secret-values.yaml" >> "$GITHUB_ENV"
|
||||||
- name: Run apply for all stacks
|
- name: Run apply for all stacks
|
||||||
run: |
|
run: |
|
||||||
. ./scripts/load_admin_creds.sh
|
. ./scripts/load_admin_creds.sh
|
||||||
./scripts/run_all_stacks.sh apply
|
./scripts/run_all_stacks.sh apply
|
||||||
|
rm -f /tmp/infra-secret-values.yaml
|
||||||
|
|||||||
@ -7,7 +7,12 @@ locals {
|
|||||||
infra_config = yamldecode(file("${local.repo_root}/infrastructure.yaml"))
|
infra_config = yamldecode(file("${local.repo_root}/infrastructure.yaml"))
|
||||||
secrets_file = "${local.repo_root}/infrastructure-secrets.yaml"
|
secrets_file = "${local.repo_root}/infrastructure-secrets.yaml"
|
||||||
|
|
||||||
secrets_config = try(yamldecode(sops_decrypt_file(local.secrets_file)), {})
|
# В CI файл расшифровывается заранее одним шагом, и путь передаётся через
|
||||||
|
# INFRA_SECRET_VALUES_FILE (SOPS_AGE_KEY нужен только этому шагу, не всей
|
||||||
|
# джобе). Локально - fallback на прямую расшифровку через sops_decrypt_file.
|
||||||
|
secret_values_env_file = get_env("INFRA_SECRET_VALUES_FILE", "")
|
||||||
|
secrets_config_raw = local.secret_values_env_file != "" ? file(local.secret_values_env_file) : try(sops_decrypt_file(local.secrets_file), "")
|
||||||
|
secrets_config = try(yamldecode(local.secrets_config_raw), {})
|
||||||
|
|
||||||
env_override = trimspace(get_env("INFRA_ENV", ""))
|
env_override = trimspace(get_env("INFRA_ENV", ""))
|
||||||
env_from_file = try(trimspace(local.infra_config.current_environment), "")
|
env_from_file = try(trimspace(local.infra_config.current_environment), "")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user