La seguretat de xarxa en Kubernetes és un aspecte crític per protegir les aplicacions i dades que s'executen en un clúster. Aquest tema cobreix els conceptes i pràctiques clau per assegurar la comunicació dins del clúster i amb el món exterior.
Conceptes Clau
-
Polítiques de Xarxa (Network Policies):
- Les polítiques de xarxa permeten controlar el trànsit de xarxa entre els pods dins del clúster.
- Es defineixen utilitzant recursos de Kubernetes i poden especificar quins pods poden comunicar-se entre ells.
-
Seguretat de la Capa de Transport (TLS):
- L'ús de TLS (Transport Layer Security) és essencial per assegurar la comunicació entre serveis.
- Kubernetes pot gestionar certificats TLS per a serveis interns i externs.
-
Ingress Controllers:
- Els ingress controllers gestionen l'accés extern a serveis dins del clúster.
- Poden aplicar regles de seguretat com TLS i autenticació.
-
Firewall i Seguretat de Xarxa:
- Els firewalls poden ser configurats per protegir el clúster de trànsit no desitjat.
- Les regles de seguretat de xarxa poden ser aplicades a nivell de nodes i clúster.
Polítiques de Xarxa
Definició de Polítiques de Xarxa
Les polítiques de xarxa es defineixen utilitzant recursos de Kubernetes. Aquí teniu un exemple bàsic d'una política de xarxa que permet el trànsit ingressant només des d'un pod etiquetat com app: frontend
:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-frontend namespace: default spec: podSelector: matchLabels: app: backend ingress: - from: - podSelector: matchLabels: app: frontend
Explicació del Codi
- apiVersion: La versió de l'API de Kubernetes utilitzada per a les polítiques de xarxa.
- kind: El tipus de recurs, en aquest cas,
NetworkPolicy
. - metadata: Informació sobre la política, incloent el nom i el namespace.
- spec: La configuració específica de la política.
- podSelector: Selecciona els pods als quals s'aplica la política.
- ingress: Defineix les regles de trànsit ingressant.
- from: Especifica les fonts de trànsit permès.
Exercici Pràctic
Objectiu: Crear una política de xarxa que permeti el trànsit ingressant només des de pods amb l'etiqueta role: database
.
- Crea un fitxer YAML anomenat
network-policy.yaml
. - Defineix la política de xarxa com es mostra a continuació:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-database namespace: default spec: podSelector: matchLabels: app: backend ingress: - from: - podSelector: matchLabels: role: database
- Aplica la política de xarxa al clúster:
Solució
El fitxer network-policy.yaml
hauria de contenir la definició de la política de xarxa com es mostra a l'exemple anterior. Després d'aplicar-lo, només els pods amb l'etiqueta role: database
podran enviar trànsit ingressant als pods amb l'etiqueta app: backend
.
TLS en Kubernetes
Configuració de TLS
Per configurar TLS en Kubernetes, necessitem crear secrets que continguin els certificats i claus privades. Aquí teniu un exemple de com crear un secret TLS:
Utilització del Secret TLS en un Ingress
Un cop creat el secret TLS, podem utilitzar-lo en una definició d'Ingress:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example-ingress namespace: default spec: tls: - hosts: - example.com secretName: my-tls-secret rules: - host: example.com http: paths: - path: / pathType: Prefix backend: service: name: example-service port: number: 80
Explicació del Codi
- tls: Defineix la configuració TLS per a l'Ingress.
- hosts: Llista de dominis que utilitzaran TLS.
- secretName: El nom del secret que conté els certificats TLS.
- rules: Defineix les regles de trànsit per a l'Ingress.
- host: El domini per al qual s'aplica la regla.
- http: Configuració de les rutes HTTP.
Resum
En aquesta secció, hem après sobre la seguretat de xarxa en Kubernetes, incloent les polítiques de xarxa, la configuració de TLS i l'ús d'Ingress controllers. Aquests conceptes són fonamentals per assegurar la comunicació dins del clúster i amb el món exterior. En el proper mòdul, explorarem més sobre la seguretat de les imatges i com protegir les aplicacions des del punt de vista de la imatge del contenidor.
Curs de Kubernetes
Mòdul 1: Introducció a Kubernetes
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Mòdul 2: Components Bàsics de Kubernetes
Mòdul 3: Gestió de Configuració i Secrets
Mòdul 4: Xarxes en Kubernetes
Mòdul 5: Emmagatzematge en Kubernetes
Mòdul 6: Conceptes Avançats de Kubernetes
Mòdul 7: Monitorització i Registre
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster