Primer commit
This commit is contained in:
37
deployments/isoserver.yaml
Normal file
37
deployments/isoserver.yaml
Normal 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
25
ingress/ingress.yaml
Normal 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
6
kustomization.yaml
Normal 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
4
namespace.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: kubevirt
|
12
pvc/iso-pvc.yaml
Normal file
12
pvc/iso-pvc.yaml
Normal 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
34
readme.md
Normal 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
20
services/service.yaml
Normal 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
|
Reference in New Issue
Block a user