Kubernetes
Portainer ofrece una capa de administración amigable sobre Kubernetes. No reemplaza a kubectl, pero abstrae buena parte de su complejidad: desplegás aplicaciones con formularios, gestionás namespaces con cuotas y aplicás manifiestos o Helm charts desde la UI. Es especialmente útil para equipos que migran de Docker a K8s.
Conectar un cluster
Necesitás instalar el agent de Portainer dentro del cluster. Hay dos vías.
Opción A — Manifiesto (kubectl)
Aplicás el manifiesto del agent, que crea el namespace portainer y expone el agent. Con un Service tipo LoadBalancer:
kubectl apply -n portainer \
-f https://downloads.portainer.io/ce-lts/portainer-agent-k8s-lb.yaml
Si tu cluster no tiene LoadBalancer (ej. on-prem), usás la variante NodePort (portainer-agent-k8s-nodeport.yaml). Luego, en Portainer: Add environment → Kubernetes → Agent, con la dirección del agent.
Opción B — Helm (instalar Portainer completo en el cluster)
Si querés que el propio Server corra dentro de Kubernetes:
helm repo add portainer https://portainer.github.io/k8s/
helm repo update
helm upgrade --install portainer portainer/portainer \
--create-namespace -n portainer
Esto despliega Server y agent en el cluster. Accedés por el Service publicado.
flowchart TD
S["Portainer Server"] --> AG["Agent (Deployment + Service)"]
AG --> API["kube-apiserver"]
API --> NS1["namespace: app"]
API --> NS2["namespace: data"]
Desplegar una aplicación
La forma guiada: Applications → + Create from form. Completás:
- Name y namespace.
- Imagen y registry.
- Tipo de despliegue: Replicated (Deployment) o Global (DaemonSet).
- Réplicas, recursos (requests/limits), variables de entorno.
- Publicación: ClusterIP, NodePort, LoadBalancer o Ingress.
- Persistencia: PersistentVolumeClaims montados en rutas.
Portainer traduce el formulario a los objetos de K8s (Deployment, Service, PVC) y los aplica.
Desplegar desde manifiesto o Git
Create from manifest: pegás YAML de Kubernetes, lo subís o lo apuntás a un repositorio Git (con auto-update por polling/webhook, igual que los stacks). Es la vía GitOps para K8s en Portainer.
Helm charts desde la UI
Portainer integra Helm: agregás repositorios de charts y los instalás desde la UI completando los values. Útil para desplegar software empaquetado (bases de datos, ingress controllers) sin usar la CLI de Helm.
Namespaces y recursos
Los namespaces son la unidad de aislamiento y multi-tenancy en K8s. Desde Portainer:
- Creás namespaces y les asignás resource quotas (límites de CPU y memoria).
- En BE, asignás acceso por namespace a usuarios/equipos: cada equipo opera en lo suyo.
Esto convierte a un cluster compartido en algo gobernable: cada equipo tiene su namespace con su cuota.
Otros recursos visibles
Portainer expone también ConfigMaps, Secrets, Services, Ingresses y Volumes (PV/PVC) del cluster, cada uno con su vista para crear, editar y eliminar.
Límite honesto: para operaciones muy específicas de Kubernetes (CRDs, operadores, debugging avanzado de scheduling) seguirás necesitando
kubectl. Portainer cubre el 80% cotidiano, no el 100%.
Anterior → Capítulo 9: Docker Swarm · Siguiente → Capítulo 11: Edge