Primer commit

This commit is contained in:
2025-04-27 00:13:03 +00:00
commit efc56cb72b
7 changed files with 138 additions and 0 deletions

View File

@ -0,0 +1,37 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: iso-server
namespace: kubevirt
spec:
replicas: 1
selector:
matchLabels:
app: iso-server
template:
metadata:
labels:
app: iso-server
spec:
containers:
- name: httpd
image: httpd:2.4
ports:
- containerPort: 80
volumeMounts:
- name: iso-storage
mountPath: /usr/local/apache2/htdocs
- name: samba
image: dperson/samba
args: ["-p", "-s", "isos;/share;yes;no"]
ports:
- containerPort: 445
securityContext:
runAsUser: 0
volumeMounts:
- name: iso-storage
mountPath: /share
volumes:
- name: iso-storage
persistentVolumeClaim:
claimName: iso-pvc

25
ingress/ingress.yaml Normal file
View File

@ -0,0 +1,25 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: iso-server
namespace: kubevirt
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
# nginx.ingress.kubernetes.io/whitelist-source-range: "192.168.1.0/24"
spec:
ingressClassName: nginx
tls:
- hosts:
- isoserver.manabo.org
secretName: isoserver-tls
rules:
- host: isoserver.manabo.org
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: iso-server
port:
number: 80

6
kustomization.yaml Normal file
View File

@ -0,0 +1,6 @@
resources:
- namespace.yaml
- pvc/iso-pvc.yaml
- deployments/isoserver.yaml
- services/service.yaml
- ingress/ingress.yaml

4
namespace.yaml Normal file
View File

@ -0,0 +1,4 @@
apiVersion: v1
kind: Namespace
metadata:
name: kubevirt

12
pvc/iso-pvc.yaml Normal file
View File

@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: iso-pvc
namespace: kubevirt
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 800Gi
storageClassName: nfs-manabo

34
readme.md Normal file
View File

@ -0,0 +1,34 @@
# Manifiestos para servidor HTTP de imágenes ISO (KubeVirt ISO Server)
Este repositorio contiene los manifiestos necesarios para desplegar un servidor HTTP basado en Apache (httpd:2.4) que sirve una carpeta compartida con archivos ISO, accesible por KubeVirt para instalar sistemas operativos en máquinas virtuales.
>El almacenamiento se expone desde un servidor externo NFS (por ejemplo, niflheim) con las imágenes ISO ubicadas en /mnt/Iso.
## Requisitos:
- El servidor NFS debe exportar la ruta /mnt/Iso con permisos RO (solo lectura) para la red del clúster.
- Las ISOs deben estar copiadas dentro de /mnt/Iso.
- Debes tener configurado nfs-common en todos los nodos del clúster.
### Despliegue manual:
Entra al repositorio:
cd ~/k3s/k8s-kubevirt-isoserver
Aplica los manifiestos en orden:
kubectl apply -f namespace.yaml
kubectl apply -f pv/iso-pv.yaml
kubectl apply -f pv/iso-pvc.yaml
kubectl apply -f deployments/httpd.yaml
kubectl apply -f services/httpd.yaml
### Acceso:
El servicio httpd queda expuesto por un NodePort que puedes consultar con:
kubectl get svc -n iso-server
>Despues de pasarlo por npm, puedes montar esta URL como cdrom o disk en tus VirtualMachine (VM) manifests, usando por ejemplo:
http://iso-server.manabo.org/windows.iso

20
services/service.yaml Normal file
View File

@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: iso-server
namespace: kubevirt
spec:
type: NodePort
selector:
app: iso-server
ports:
- name: http
port: 80
targetPort: 80
nodePort: 30088 # Puerto externo HTTP
- name: samba
port: 445
targetPort: 445
nodePort: 30445 # Puerto externo Samba
externalIPs:
- 192.168.1.9