Files
scripts/create-commerce-secrets.sh
devops 0a3cee288f feat: provisionar REVALIDATE_SECRET compartido entre Medusa y el storefront
Necesario para que el subscriber revalidate-storefront.ts (repo
apps-registry, rama fix/medusa-price-instant-revalidate) pueda llamar
a POST /api/revalidate en el storefront con autenticación.

create-commerce-secrets.sh genera el valor y lo imprime (única
excepción a "no imprimir credenciales") porque hay que pegarlo tal
cual en create-storefront-secret.sh: ambos secrets necesitan el mismo
valor.
2026-08-13 16:03:00 -05:00

63 lines
2.2 KiB
Bash

#!/usr/bin/env bash
set -Eeuo pipefail
NAMESPACE="${NAMESPACE:-ecommerce}"
random_secret() {
openssl rand -hex 32
}
read -rp "Usuario PostgreSQL [medusa]: " POSTGRES_USER
POSTGRES_USER="${POSTGRES_USER:-medusa}"
read -rp "Base de datos PostgreSQL [medusa]: " POSTGRES_DB
POSTGRES_DB="${POSTGRES_DB:-medusa}"
read -rsp "Contraseña PostgreSQL (vacío = generar): " POSTGRES_PASSWORD
echo
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-$(random_secret)}"
read -rsp "Contraseña Redis (vacío = generar): " REDIS_PASSWORD
echo
REDIS_PASSWORD="${REDIS_PASSWORD:-$(random_secret)}"
read -rp "Usuario MinIO [ari-minio]: " MINIO_ROOT_USER
MINIO_ROOT_USER="${MINIO_ROOT_USER:-ari-minio}"
read -rsp "Contraseña MinIO (vacío = generar): " MINIO_ROOT_PASSWORD
echo
MINIO_ROOT_PASSWORD="${MINIO_ROOT_PASSWORD:-$(random_secret)}"
JWT_SECRET="$(random_secret)"
COOKIE_SECRET="$(random_secret)"
REVALIDATE_SECRET="$(random_secret)"
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres-svc:5432/${POSTGRES_DB}?sslmode=disable"
REDIS_URL="redis://:${REDIS_PASSWORD}@redis-svc:6379"
kubectl -n "${NAMESPACE}" create secret generic commerce-secrets \
--from-literal=POSTGRES_USER="${POSTGRES_USER}" \
--from-literal=POSTGRES_PASSWORD="${POSTGRES_PASSWORD}" \
--from-literal=POSTGRES_DB="${POSTGRES_DB}" \
--from-literal=DATABASE_URL="${DATABASE_URL}" \
--from-literal=REDIS_PASSWORD="${REDIS_PASSWORD}" \
--from-literal=REDIS_URL="${REDIS_URL}" \
--from-literal=MINIO_ROOT_USER="${MINIO_ROOT_USER}" \
--from-literal=MINIO_ROOT_PASSWORD="${MINIO_ROOT_PASSWORD}" \
--from-literal=S3_ACCESS_KEY_ID="${MINIO_ROOT_USER}" \
--from-literal=S3_SECRET_ACCESS_KEY="${MINIO_ROOT_PASSWORD}" \
--from-literal=JWT_SECRET="${JWT_SECRET}" \
--from-literal=COOKIE_SECRET="${COOKIE_SECRET}" \
--from-literal=REVALIDATE_SECRET="${REVALIDATE_SECRET}" \
--dry-run=client \
-o yaml |
kubectl apply -f -
echo
echo "Secret commerce-secrets configurado en namespace ${NAMESPACE}."
echo "No se imprimieron el resto de las credenciales."
echo
echo "REVALIDATE_SECRET generado: ${REVALIDATE_SECRET}"
echo "Se imprime porque hay que pegarlo tal cual en create-storefront-secret.sh:"
echo "ambos secrets necesitan el mismo valor."