GeoNode Cloud is an advanced implementation of the GeoNode platform in the cloud, focused on maximizing the use of native or adapted technologies for cloud environments. This solution is designed to be deployed on Kubernetes, which facilitates its scalability, management and resilience. GeoNode Cloud incorporates the GeoServer Cloud project, which provides robust support for the publication, editing and management of geospatial data, thus reinforcing its purpose of offering a modern and efficient infrastructure for the management of geospatial information in the cloud. With GeoNode Cloud, organizations can benefit from greater flexibility, reduced operational costs, and seamless integration with other cloud-native tools and services.
The project structure for deploying GeoNode Cloud and GeoServer Cloud on Kubernetes is organized into key directories that contain the manifests required to configure and operate the applications. Within the following repository is the project that contains all the manifests that will be used to perform the deployment.
Main Directories
- gn-cloud
- gs-cloud
- configs
- database
The solution architecture is divided into the following components:
- Geonode Cloud Core
- GeoNode Cloud Mapstore Client
- Rabbitmq
- GeoServer Cloud
- Postgres with PostGis extension
- Nginx
- Flower
Specifically Geonode Cloud Core contains the following main technological components for its operation:
- Django Framework
- Memcached
- Geonode Import
- pyCSW
- Celery
- Geoserver App Django - ACL Capability
The architecture is based on the use of microservices, where it is planned to incorporate new microservices that today are in the monolithic component of Django.
Docker images for all the services are available on DockerHub, under the KAN Territory & IT organization.
You can find production-suitable deployment files for docker-compose and podman under the docs/deploy folder.
Please read the contribution guidelines before contributing pull requests to the Geonode Cloud project.
Follow the developer's guide to know more about the project's technical details.
Read the changelog for more information.
GeoNode Cloud's issue tracking is at this Issues GitHub repository.
TDB
For the deployment of Geonode Cloud we can deploy it on different Kubernete platforms, here are the details of the deployment on MickoK8S
- MicroK8S.
- Ingress module.
- DNS module.
- Cert-manager module.
sudo snap install microk8s --classicmicrok8s enable ingress
microk8s enable cert-managermicrok8s kubectl apply -f - <<EOF
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
email: YOUREMAIL@DOMAIN.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
# Secret resource that will be used to store the account's private key.
name: letsencrypt-account-key
# Add a single challenge solver, HTTP01 using nginx
solvers:
- http01:
ingress:
class: public
EOFgit clone https://github.com/Kan-T-IT/geonode-cloud.git && cd geonode-cloudKUBERNETES_SITE_URL=GEONODE_CLOUD_FINAL_URL # i.e.: cloud.mygeonode.com
KUBERNETES_NODE_NAME=YOUR_CLUSTER_NAME_NAME # usually host machine name
KUBERNETES_VOL_DIR=YOUR_DESIRED_LOCATION # this path shold exist
CLUSTER_ISSUER_NAME=YOUR_CLUSTER_ISSUER_NAME # created earlier in this guide
SERVER_PUBLIC_IP=YOU.RPU.BLI.CIP # the public ipv4 of the server
GEONODE_PASSWORD=admin # password for geonode admin user
GEOSERVER_PASSWORD=geoserver # password for geoserver admin user
