Despliega Visual Studio Code en tu Kubernetes: IDE Cloud con code-server
¿Imaginas poder acceder a tu entorno de desarrollo Visual Studio Code desde cualquier lugar, usando solo tu navegador?
Hoy te enseñaré a desplegar code-server, la versión en navegador de VSCode, ¡directamente sobre tu clúster de Kubernetes en tu VPS!
Este es un proyecto ideal para quienes buscan aumentar su productividad y flexibilidad, sin preocuparse por perder configuraciones entre dispositivos.
¿Por qué desplegar Code-Server en Kubernetes?
- Entorno de desarrollo consistente: trabaja siempre con la misma configuración y extensiones, estés donde estés.
- Seguro y personalizable: controla el acceso tú mismo mediante autenticación y TLS.
- Escalable: ideal tanto para equipos pequeños como para múltiples desarrolladores, con la infraestructura robusta de K8s.
Qué vamos a desplegar
Nuestro despliegue Kubernetes incluirá:
- Un Deployment de code-server con persistencia de datos.
- Un Service tipo
LoadBalanceroNodePortpara exponer el IDE. - Un Secret para la contraseña de acceso.
- (Opcional, Alta seguridad) Un Ingress con TLS para acceso seguro por dominio.
Manos a la obra: Ficheros YAML completos
1. Secret para la contraseña de acceso
apiVersion: v1
kind: Secret
metadata:
name: code-server-secret
type: Opaque
data:
password: aG9sYXBhc3dvcmQ= # 'holapassword' en base64 (¡cámbiala por seguridad!)
Para otra contraseña: ejecuta echo -n 'tu_password_supersecreta' | base64 y sustituye el valor.
2. PersistentVolumeClaim (almacenamiento de usuario)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: code-server-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
3. Deployment principal de Code-Server
apiVersion: apps/v1
kind: Deployment
metadata:
name: code-server
spec:
replicas: 1
selector:
matchLabels:
app: code-server
template:
metadata:
labels:
app: code-server
spec:
containers:
- name: code-server
image: codercom/code-server:4.89.1
ports:
- containerPort: 8080
env:
- name: PASSWORD
valueFrom:
secretKeyRef:
name: code-server-secret
key: password
volumeMounts:
- mountPath: /home/coder/project
name: code-server-storage
volumes:
- name: code-server-storage
persistentVolumeClaim:
claimName: code-server-pvc
4. Servicio para exponer tu IDE
apiVersion: v1
kind: Service
metadata:
name: code-server
spec:
type: NodePort # Cambia a LoadBalancer si tu cloud lo admite
ports:
- port: 80
targetPort: 8080
nodePort: 30080
selector:
app: code-server
Accede a http://tu-vps:30080. Si usas un Ingress, sigue al siguiente paso.
5. (Opcional) Ingress con dominio y TLS
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: code-server
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- code.vps-tu-dominio.com
secretName: code-server-tls
rules:
- host: code.vps-tu-dominio.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: code-server
port:
number: 80
¡A celebrar! VSCode en el navegador, listo para hackear
Tan pronto despliegues estos YAMLs, podrás acceder y trabajar en tu VPS desde cualquier lugar. Personaliza con tus plugins favoritos, temas y hasta integra Git directamente desde la interfaz. ¿Y lo mejor? ¡Toda tu configuración persiste!
Consejos extra & troubleshooting
- Contraseña segura: cámbiala por defecto y no la publiques accidentalmente en tu repositorio.
- Permisos en el PVC: si tienes problemas para guardar archivos, asegúrate de que las carpetas dentro del volumen tengan permisos para el usuario
coder. - HTTPS recomendado: expón tu Ingress por HTTPS; code-server no expone por defecto un login multiusuario, TLS es esencial para evitar fugas de credenciales.
- Escalabilidad: para proyectos multiusuario o más complejos, investiga Coder OSS o Gitpod, pero code-server es excelente para desarrolladores individuales o equipos pequeños.
- Extensiones y sincronización: inicia sesión con tu cuenta de Microsoft/Github dentro de code-server para sincronizar configuraciones y plugins.
¿Tienes problemas? ¡Déjame un comentario! Mañana desplegaremos otra herramienta original en Kubernetes.
¡Sígueme para no perdértelo!
