From efc56cb72be570b26ff03013b19a35ca48bd4114 Mon Sep 17 00:00:00 2001 From: xavor Date: Sun, 27 Apr 2025 00:13:03 +0000 Subject: [PATCH] Primer commit --- deployments/isoserver.yaml | 37 +++++++++++++++++++++++++++++++++++++ ingress/ingress.yaml | 25 +++++++++++++++++++++++++ kustomization.yaml | 6 ++++++ namespace.yaml | 4 ++++ pvc/iso-pvc.yaml | 12 ++++++++++++ readme.md | 34 ++++++++++++++++++++++++++++++++++ services/service.yaml | 20 ++++++++++++++++++++ 7 files changed, 138 insertions(+) create mode 100644 deployments/isoserver.yaml create mode 100644 ingress/ingress.yaml create mode 100644 kustomization.yaml create mode 100644 namespace.yaml create mode 100644 pvc/iso-pvc.yaml create mode 100644 readme.md create mode 100644 services/service.yaml diff --git a/deployments/isoserver.yaml b/deployments/isoserver.yaml new file mode 100644 index 0000000..3ac207b --- /dev/null +++ b/deployments/isoserver.yaml @@ -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 diff --git a/ingress/ingress.yaml b/ingress/ingress.yaml new file mode 100644 index 0000000..9b04516 --- /dev/null +++ b/ingress/ingress.yaml @@ -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 diff --git a/kustomization.yaml b/kustomization.yaml new file mode 100644 index 0000000..ebc6d8f --- /dev/null +++ b/kustomization.yaml @@ -0,0 +1,6 @@ +resources: + - namespace.yaml + - pvc/iso-pvc.yaml + - deployments/isoserver.yaml + - services/service.yaml + - ingress/ingress.yaml diff --git a/namespace.yaml b/namespace.yaml new file mode 100644 index 0000000..81bbb04 --- /dev/null +++ b/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: kubevirt diff --git a/pvc/iso-pvc.yaml b/pvc/iso-pvc.yaml new file mode 100644 index 0000000..4a00d6a --- /dev/null +++ b/pvc/iso-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: iso-pvc + namespace: kubevirt +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 800Gi + storageClassName: nfs-manabo diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..4b9b13e --- /dev/null +++ b/readme.md @@ -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 \ No newline at end of file diff --git a/services/service.yaml b/services/service.yaml new file mode 100644 index 0000000..89606b3 --- /dev/null +++ b/services/service.yaml @@ -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