Implementación en EKS
1. Configuración de Proveedores OIDC e IAM para EKS
Asociar el proveedor OIDC al clúster testGeonode
:
eksctl utils associate-iam-oidc-provider --region us-east-1 --cluster testGeonode --approve
2. Creación de la Cuenta de Servicio IAM para AWS Load Balancer Controller
Para crear la cuenta de servicio IAM y la política requerida para el AWS Load Balancer Controller:
Crear la política IAM desde el archivo de política:
curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/install/iam_policy.json
aws iam create-policy --policy-name AWSLoadBalancerControllerIAMPolicy --policy-document file://iam_policy.json
Crear la cuenta de servicio IAM:
eksctl create iamserviceaccount \
--cluster=testGeonode \
--namespace=kube-system \
--name=aws-load-balancer-controller \
--attach-policy-arn=arn:aws:iam::XXX:policy/AWSLoadBalancerControllerIAMPolicy \
--override-existing-serviceaccounts \
--approve
3. Instalación del AWS Load Balancer Controller mediante Helm
Agregar el repositorio de Helm de EKS y actualizar:
helm repo add eks https://aws.github.io/eks-charts
helm repo update
testGeonode
:
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \
-n kube-system \
--set clusterName=testGeonode \
--set serviceAccount.create=false \
--set serviceAccount.name=aws-load-balancer-controller \
--set region=us-west-1 \
--set vpcId=vpc-XXX \
--set replicaCount=2
kubectl get deployment -n kube-system aws-load-balancer-controller
4. Instalación y Configuración del Controlador EBS CSI
Instalar el addon EBS CSI Driver en el clúster testGeonode
:
eksctl create addon --name aws-ebs-csi-driver --cluster testGeonode --region us-east-1
Migrar a identidad de pod (si es necesario):
eksctl utils migrate-to-pod-identity --cluster testGeonode --region us-east-1 --approve
Verificar los pods del EBS CSI Driver:
kubectl get pods -n kube-system -l app.kubernetes.io/name=aws-ebs-csi-driver
5. Creación de Secretos de Kubernetes para Registro de Docker
Crear un secreto de registro Docker:
kubectl create secret docker-registry registrykey \
--docker-server=registry.kan.com.ar \
--docker-username=XXX \
--docker-password=XXX \
--docker-email=XXX
6. Despliegue de Recursos Kubernetes
Para desplegar estos archivos en orden, sigue este flujo:
- Cluster y StorageClass
cluster.yaml
enclusterEksctl
(si el clúster aún no está creado).local-storageclass.yaml
enconfigs/storageclass
(para configurar StorageClass antes de crear volúmenes).
- Base de datos
- ConfigMap:
gndatabase-configmap.yaml
endatabase/configmaps
. - PVC:
dbdata-pvc.yaml
endatabase/volumes
. - Deployment:
gndatabase-deployment.yaml
endatabase/deployments
. - Service:
gndatabase-service.yaml
endatabase/services
.
- ConfigMap:
- gn-cloud Componentes
- ConfigMaps en
gn-cloud/configmaps
(para que todas las configuraciones estén disponibles). - PVC:
statics-pvc.yaml
ytmp-pvc.yaml
engn-cloud/volumes
. - Deployments: despliega
celery
,django
,mapstore
,memcache
yredis
engn-cloud/deployments
. - Services para cada componente en
gn-cloud/services
.
- ConfigMaps en
- gs-cloud Componentes
- ConfigMaps en
gs-cloud/configmaps
(para garantizar que todas las configuraciones estén listas). - PVC:
geowebcache-data-persistentvolumeclaim.yaml
yrabbitmq-data-persistentvolumeclaim.yaml
engs-cloud/volumes
. - Deployments: despliega
acl
,gateway
,gwc
,rabbitmq
,rest
,wcs
,webui
,wfs
ywms
engs-cloud/deployments
. - Services en
gs-cloud/services
.
- ConfigMaps en
- Ingress
- Finalmente, aplica
geonode-ingress.yaml
enconfigs/ingress
para exponer los servicios al exterior.
- Finalmente, aplica
Después de realizar estos pasos, verificar el estado de los pods y servicios.