GH GambleHub

Tecnología e Infraestructura → clústeres de Kubernetes y listas de Helm

Clústeres de Kubernetes y listas de ayuda

1) El papel de Kubernetes y Helm

Kubernetes es la base de la plataforma de aplicaciones: estandariza el rodamiento, la red, las confecciones, los secretos y la auto-recuperación. Helm es un gestor de paquetes/plantillas que convierte los manifiestos declarativos en lanzamientos repetibles con control de versiones y dependencias. Juntos, proporcionan predecibles desployas, retrocesos rápidos y un lenguaje de infraestructura unificado.

2) Diseño del clúster

2. 1 Topología y tolerancia a fallas

Multi-AZ: el plan de control y los nodos de grupos de trabajo se distribuyen por zonas; PDB/TopologySpreadConstraints para la uniformidad.
Multirregión/DR: clústeres independientes por región; llamadas interregionales - sólo por vías «frías» (catálogos/telemetría), «calientes» (billetera) - localmente.
Grupos de trabajo por perfiles: 'general', 'compute', 'io', 'spot' (para tareas de fondo). Asignación a través de nodeSelector/affinity/taints.

2. 2 Espacios de nombres y modelo multijugador

Aislamiento de namespace por dominios/comandos: 'payments', 'wallet', 'games', 'reporting'.
ResourceQuota + LimitRange: límites básicos de CPU/RAM y máximo de réplicas; protección del clúster contra «aspiradoras».
RBAC: roles de lectura por defecto, escritura - sólo CI/CD y on-call.

2. 3 Red

CNI con soporte de NetworkPolicy (Calico/Cilium): L3/L4 de políticas sobre namespace/label.
Ingeniería → Gateway API: cambio al modelo 'GatewayClass/Gateway/HTTPoute' para Canarias y mucha tenencia.
Mesh de servicio (opcional): mTLS, retry/breaker, locality-aware; incluir punto a punto para la fiabilidad interservicios.

3) Fiabilidad y escalabilidad

3. 1 Skaling

HPA por métricas personalizadas (RPS/latency/queue depth), no sólo CPU.
VPA en la clase de carga de fondo; en venta - «recommendation only» o en conjunto con HPA según diferentes métricas.
Cluster Autoscaler: grupos de nodo individuales para servicios sensibles; warm-pool a los picos (torneos/partidos).

3. 2 Recursos y QoS

Cada Pod tiene requests/limits; evitar ': latest' y contenedores «ilimitados».
PriorityClass: los servicios críticos ('wallet', 'payments') desplazan a los no críticos.
PDB: no dejamos que el clúster «se dispare en la pierna» cuando se actualiza el nodo.

3. 3 Actualizaciones sin tiempo de inactividad

RollingUpdate c maxUnavailable = 0 en rutas críticas.
PodDisruptionBudget + ReadinessProbes (не `startupProbe` вместо readiness).
Capacidad de Surge para lanzamientos rápidos durante picos - con precaución.

4) Seguridad de la plataforma

Pod Security (Baseline/Restricted) en el nivel namespace; prohibición de 'privileged', hostPath, root.
NetworkPolicy: por default-deny y listas blancas por puerto/etiqueta.
Seccomp/AppArmor, non-root users, read-only rootfs.
Secrets: Proveedor de KMS/Vault (CSI), no guardamos secretos en 'valores. yaml 'en abierto.
RBAC-mínimo: las cuentas de servicio sólo emiten los derechos necesarios; los tokens son de corta vida.
Control de administración: OPA/Gatekeeper/Kyverno - enforce etiquetas, límites, infracciones de política.

5) Observability

OpenTelemetry: tracking de Ingress/Gateway → servicio → BD/caché, etiquetas obligatorias 'service', 'version', 'region', 'partner', 'api _ version'.
Registros: estructurados, sin PII/PAN; enrutamiento a almacenamiento centralizado.
Métricas: alertas RED/USE, SLO-dashboards, burn-rate.
Sintética: muestras de los países deseados/ASN; perímetro y cheques de salud internos.

6) GitOps и progressive delivery

Argo CD/Flux: el estado deseado se almacena en Git; Cada namespace es su propio repositorio/carpeta.
Promoción de artefactos: 'dev → stage → prod' a través de PR, no «kubectl apply».
Canary/Blue-Green: Argo Rollouts/Gateway API; las métricas de éxito son P95/P99, error-rate, SLI de negocios (CR de depósitos).
Giros: en Helm/Argo - en el botón; en las listas - las versiones son fijas.

7) Ayuda: mejores prácticas

7. 1 Estructura de la lista


my-service/
Chart. yaml     # name, version (SemVer), appVersion values. yaml # base values (no secrets)
values-prod. yaml # prod overrides (no secrets)
templates/
_helpers. tpl # naming, common deployment templates. yaml service. yaml hpa. yaml pdb. yaml networkpolicy. yaml serviceaccount. yaml ingress_or_gateway. yaml charts/# dependencies (opcional)
Recomendaciones:
  • 'version' es una versión de la lista (SemVer), 'appVersion' es una versión de la aplicación (imagen).
  • Nombres de recursos estrictos: '{{include "svc. fullname".}}' + etiquetas' app. kubernetes. io/`.
  • Manifiestos obligatorios: Deployment/StatefulSet, Service, ServiceAccount, HPA (si corresponde), PDB, NetworkPolicy.

7. 2 Values-estrategia

Básico 'valores. yaml' - impagos, sin secretos y entorno-especificidad.
Override: 'values- {stage' prod} .yaml' + archivos por región.
Secretos: SOPS ('valores-prod. sops. yaml ') o inyección de Vault a través de CSI.
Los parámetros de recursos y muestras están en valores con impagos «razonables».

7. 3 Dependencias y código común

Listas de bibliotecas compartidas para patrones (probes, annotations, NetworkPolicy).
Dependencias ('requirements '/' Chart. yaml ') fijar por versión; evite las «matreshkas» profundas.

7. 4 Plantillas y validación

Utilice 'required' y 'fail' en '_ helpers'. tpl 'para valores críticos.
Validación del esquema values - 'valores. schema. json`.
Las pruebas unitarias de la lista son 'helm unittest'; análisis estático - kubeconform/kubeval.
La depuración local es 'helm template' + '--values' + 'kubeconform'.

7. 5 Lanzamientos y almacenamiento

Push Chart en los registros de OCI de contenedores; etiquetas por SemVer.
Helmfile/`helmfile. d 'para orquestar divisiones multichart.
Artefactos CI: manifiestos generados + lockfile de dependencias.

8) Ejemplo: Deployment (fragmento de plantilla Helm)

yaml apiVersion: apps/v1 kind: Deployment metadata:
name: {{ include "svc. fullname". }}
labels: {{ include "svc. labels". nindent 4 }}
spec:
replicas: {{.Values. replicas      default 3 }}
strategy:
type: RollingUpdate rollingUpdate:
maxSurge: 1 maxUnavailable: 0 selector:
matchLabels: {{ include "svc. selectorLabels". nindent 6 }}
template:
metadata:
labels: {{ include "svc. selectorLabels". nindent 8 }}
annotations:
checksum/config: {{ include (print $.Template. BasePath "/configmap. yaml"). sha256sum }}
spec:
serviceAccountName: {{ include "svc. serviceAccountName". }}
securityContext:
runAsNonRoot: true containers:
- name: app image: "{{.Values. image. repository }}:{{.Values. image. tag }}"
imagePullPolicy: IfNotPresent ports:
- name: http containerPort: {{.Values. ports. http }}
resources:
requests:
cpu: {{.Values. resources. requests. cpu }}
memory: {{.Values. resources. requests. memory }}
limits:
cpu: {{.Values. resources. limits. cpu }}
memory: {{.Values. resources. limits. memory }}
readinessProbe:
httpGet:
path: /healthz port: http periodSeconds: 5 envFrom:
- secretRef:
name: {{ include "svc. secretsName". }}

9) Secretos y configuraciones

Secrets a través de CSI (Vault/KMS) o SOPS en el repositorio Git (claves GPG/KMS; prohibición de 'kubectl edit').
ConfigMap/Secret checksum anotaciones para el disparador de lanzamiento de rolling.
No almacenar PAN/PII; utilizar la tokenización.
Secrets sellados están permitidos, pero son preferibles a SOPS o CSI directo.

10) Red y perímetro

Gateway API para L7 routing, canarios y blue-green; sesiones sticky sólo cuando sea necesario.
mTLS entre servicios a través de mesh/sidecar-less (Cilium) - punto para el núcleo de pago.
Egress: lista controlada de nodos externos (PSP/KYC), NAT-IP fijo, temporizadores y presupuesto de retrés.

11) Servicios y datos de Stateful

Para OLTP-DB, utilice servicios de nube administrados o operadores (Postgres/MySQL) en clústeres individuales.
PVC/CSI con política de snapshots y backups; 'PodAntiAffinity' para réplicas.
Para colas/streaming: soluciones administradas o clústeres dedicados; en un clúster de aplicaciones «general», mantener un mínimo de estado.

12) CI/CD transportador (referencia)

1. Build & test → 2) SCA/lint → 3) Imagen en registro (SBOM, firma) →

2. Generación de Helm-chart + 'helm unittest' + kubeconform →

3. SOPS-decript en el CD rantime → 6) PR en el repositorio GitOps →

4. Argo/Flux aplica → 8) Argo Rollouts canario → 9) Auto veredicto por SLO → 10) Promoción/retroceso.

13) Métricas de madurez de plataforma

Porcentaje de lanzamientos a través de GitOps (objetivo: 100%).
Tiempo de laminación (P95) antes de la preparación, reversión MTTR.
Cobertura de Namespace's Pod Security y NetworkPolicy (objetivo: 100%).
% de los servicios con HPA y requests/limits correctos.
% de la lista con 'valores. schema. json 'y pruebas de unidad.
Incidentes causados por cambios «manuales» (objetivo: 0).

14) Lista de verificación de implementación

1. Clústeres por zona, grupo de nodos por perfil; PDB/TopologySpreadConstraints.
2. Modelo Namespace, ResourceQuota/LimitRange, RBAC mínimo.
3. Pod Security (Restricted) и default-deny NetworkPolicy.
4. Gateway API/Ingress; el control egress y la fijación NAT a los proveedores.
5. Observabilidad: Tracks OTel, RED/USE, sintéticos geo; SLO-dashboards.
6. GitOps (Argo/Flux), canario/azul-verde, promoción automática por métricas.
7. Estándares Helm: estructura, schema. json, pruebas, SOPS/Vault, registros OCI.
8. HPA/VPA, Cluster Autoscaler, warm-pool a los picos.
9. Operaciones de datos: snapshots CSI, backups, operadores/managed DB.
10. Pruebas regulares de DR/chaos y días de juego.

15) Anti-patrones

Un clúster «gigante» para todo sin aislamiento ni cuotas.
Contenedores sin restricciones de recursos, etiquetas 'latest', sin probes.
Secretos en 'valores. yaml 'en abierto,' kubectl edit 'en venta.
Lanzamientos cerca de GitOps, edición manual de manifiestos en un clúster en vivo.
La ausencia de NetworkPolicy/Pod Security es una red «plana».
Una sola señal HPA común por CPU para cargas de varios tipos.
Almacenar una BD OLTP dentro de un clúster de aplicaciones «compartido» sin operador ni respaldo.

16) Contexto iGaming/Fintech: notas prácticas

Webhooks de pago: dedicado ingress/gateway y estrecho egress a PSP; temporizadores/retraídos estrictos; una agrupación de nodos separada.
Tráfico VIP: priorización y rutas individuales; PDB y topology spread para la estabilidad.
Torneos/picos: warm-pool nodos + HPA predictivo; calentamiento de cachés/conexiones.
Informes/CDC: un clúster/grupo separado para que la ETL no afecte al plug-in.
Regulación: registros inmutables (WORM), tokenización PII, segmentación de redes.

Resultado

Una plataforma Kubernetes fuerte no es una «pila YAML», sino estándares: aislamiento, política de seguridad, recursos gestionados, observabilidad y disciplina GitOps. Las listas de ayuda son su contrato de suministro: lanzamientos predecibles, plantillas probadas, trabajo seguro con secretos y revisiones simples. Al consolidar estos principios, obtendrá clústeres que experimentan picos, aceleran las liberaciones y resisten los requerimientos del negocio y los reguladores.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Telegram
@Gamble_GC
Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.