GitOps y RHACM¶
Usar dos fases. No aplicar el operador 3scale y las bases in-cluster a la vez en un cluster vacío. El APIManager 2.15 debe crear PostgreSQL y Redis embebidos primero. Los recursos de 3scale-db entran en la ventana de externalización.
Sustituir placeholders antes del sync:
REPLACE_REPO_URLen ApplicationSets bajogitops/ygitops/rhacm/REPLACE_WILDCARD_DOMAINenkustomize/overlays/lab-apimanager/kustomization.yamlREPLACE_EFS_FILESYSTEM_IDenkustomize/overlays/lab-efs/kustomization.yaml
Antes del APIManager hace falta una StorageClass RWX. En AWS de laboratorio: crear el filesystem EFS, poner fileSystemId en kustomize/overlays/lab-efs y aplicar ese overlay (cluster-scoped; no va en el ApplicationSet).
Fase 1 — operador 3scale 2.15 + APIManager¶
oc apply -k gitops/
| Wave | Application | Path |
|---|---|---|
| 0 | threescale-operator |
kustomize/overlays/lab-operator |
| 5 | threescale-apimanager |
kustomize/overlays/lab-apimanager |
Destino: namespace 3scale. SkipDryRunOnMissingResource cubre el CRD del APIManager hasta que el CSV esté listo.
Fase 2 — PostgreSQL 15 + Redis 7 (después del dump)¶
Crear antes el secret system-database en 3scale-db (DB_USER, DB_PASSWORD). Plantilla: kustomize/bases/postgresql/secret.example.yaml.
oc apply -k gitops/external-db
| Wave | Application | Path |
|---|---|---|
| 0 | threescale-ext-namespace |
kustomize/bases/namespace |
| 1 | threescale-ext-postgresql |
kustomize/bases/postgresql |
| 1 | threescale-ext-redis-config |
kustomize/bases/redis-config-restore |
| 2 | threescale-ext-redis-backend |
kustomize/bases/redis-backend |
| 2 | threescale-ext-redis-system |
kustomize/bases/redis-system |
Destino: 3scale-db. prune: false para no borrar PVC.
Tras el restore de Redis, cambiar redis-config.path a kustomize/bases/redis-config-persist en el ApplicationSet de BDD. Dejarlo así el día 2. selfHeal: true revierte un edit manual del ConfigMap. Ver Operación día 2.
Trampas de GitOps¶
Tres errores habituales en el cutover
| Riesgo | Qué hacer |
|---|---|
El ApplicationSet sigue en redis-config-restore |
Cambiar el path a redis-config-persist después del cutover. selfHeal: true revierte un edit manual del ConfigMap y un restart borra datos de Redis. |
prune: true en Applications de external-db |
Dejar prune: false para que un sync no borre PVC. |
| Mezclar GitOps in-cluster y RHACM | Un solo controlador por cluster destino. |
Checklist completo de día 2: Operación día 2. Rutas de rollback: Rollback.
RHACM (hub)¶
Misma separación:
oc apply -k gitops/rhacm/ # Placement + operador 3scale PUSH
oc apply -k gitops/rhacm/external-db # overlay prod → 3scale-db en managed cluster
No mezclar controladores
No usar GitOps in-cluster (gitops/) y RHACM contra el mismo cluster destino.
Fallback sin Argo CD¶
oc apply -k kustomize/overlays/lab-operator
oc apply -k kustomize/overlays/lab-efs
oc apply -k kustomize/overlays/lab-apimanager
# más tarde:
oc apply -k kustomize/overlays/lab