This Helm chart deploys a pygeoapi instance, a server that publishes geospatial data using Open Geospatial Consortium (OGC) standards and the OGC API Features. This chart is designed to be flexible and easy to configure, allowing you to customize the deployment to fit your needs. 🚀
To install this chart locally, you'll need a Kubernetes cluster running on your machine, such as kind, minikube, CRC/OpenShift Local, or Docker Desktop with Kubernetes enabled. Once your local cluster is up and running, you can install the chart directly from your local file system.
First, navigate to the chart's directory:
cd path/to/your/pygeoapi-helm-chart
Next, use the helm install
command, specifying the release name and the local chart path (.
) :
helm install [YOUR_RELEASE_NAME] .
To customize the installation, you can create a custom values.yaml
file and pass it during installation:
helm install [YOUR_RELEASE_NAME] . -f my-custom-values.yaml
- In deploys directory, there's an example of a customized values for a CRC/OpenShift Local cluster.
This will deploy the pygeoapi application to your local cluster, allowing you to test configurations and verify functionality before pushing it to a production environment.
This chart is configured via the values.yaml
file. Below is a detailed description of each available parameter.
Parameter | Description | Default Value |
---|---|---|
replicaCount |
The number of pygeoapi replicas. Increase for higher availability and processing capacity. | 1 |
image.repository |
The Docker image repository for pygeoapi to be used. | docker.io/ndscprm/pygeoapi |
image.pullPolicy |
The image pull policy. IfNotPresent prevents downloading if the image already exists locally. |
IfNotPresent |
image.tag |
The specific Docker image tag for the pygeoapi version. | "0.21.0-rootless" |
imagePullSecrets |
A list of authentication secrets for pulling images from private repositories. | [] |
nameOverride |
Overrides the chart name when creating Kubernetes resources. | "" |
fullnameOverride |
Overrides the full chart name when creating Kubernetes resources. | "" |
- This helm chart uses a modified pygeoapi image, because of OpenShift's security requirements. To use official pygeoapi image (v0.21.0), it's required to run the container as root.
Parameter | Description | Default Value |
---|---|---|
serviceAccount.create |
If true , a Service Account is created for the application. |
true |
serviceAccount.automount |
If true , automatically mounts the Service Account's credentials. |
true |
serviceAccount.annotations |
Annotations to be added to the Service Account. | {} |
serviceAccount.name |
The name of the Service Account to use. If empty, a name is generated. | "" |
Parameter | Description | Default Value |
---|---|---|
podAnnotations |
Annotations to be added to the Pod. | {} |
podLabels |
Labels to be added to the Pod. | {} |
podSecurityContext |
The security context for the Pod. For example, fsGroup to define the filesystem group ID. |
{} |
securityContext |
The security context for the container. For example, runAsNonRoot to ensure the process does not run as root. |
{} |
Parameter | Description | Default Value |
---|---|---|
service.type |
The Kubernetes service type to expose pygeoapi. | ClusterIP |
service.port |
The service port where pygeoapi will be exposed. | 8080 |
Parameter | Description | Default Value |
---|---|---|
ingress.enabled |
If true , an Ingress is created to expose pygeoapi externally. |
false |
ingress.className |
The name of the Ingress class to be used. | "" |
ingress.annotations |
Additional annotations for the Ingress. Useful for integrations like cert-manager . |
{} |
ingress.hosts |
A list of hosts and paths to route traffic to pygeoapi. | [] |
ingress.tls |
A list of TLS secrets and associated hosts to encrypt traffic. | [] |
Parameter | Description | Default Value |
---|---|---|
settings.config.enabled |
If true , mounts the pygeoapi configuration file (local.config.yml ). |
true |
settings.config.name |
The name of the ConfigMap or Secret containing the configuration. | pygeoapi-config |
settings.config.isEncrypted |
If true , reads the configuration from a Secret; otherwise, from a ConfigMap. |
false |
settings.config.mountPath |
The full path where the configuration file will be mounted inside the container. | /pygeoapi/local.config.yml |
settings.config.readOnly |
If true , mounts the file as read-only. |
true |
settings.openapi |
The path to the pygeoapi OpenAPI file. | /tmp/pygeoapi-openapi.yml |
settings.serverAdmin |
Enables or disables the server's administration interface. | false |
settings.hotReload |
Enables hot-reloading of the server. | false |
settings.wsgi.workers |
The number of workers for the WSGI server (Gunicorn). | 3 |
settings.wsgi.workerTimeout |
The worker timeout (in milliseconds). | 6000 |
settings.wsgi.workerClass |
The worker class to be used by the WSGI server. | gevent |
Parameter | Description | Default Value |
---|---|---|
resources |
Definition of resource limits and requests (CPU and memory) for the container. | {} |
autoscaling.enabled |
If true , enables the Horizontal Pod Autoscaler (HPA) to manage the number of replicas. |
false |
autoscaling.minReplicas |
The minimum number of replicas when autoscaling is enabled. | 1 |
autoscaling.maxReplicas |
The maximum number of replicas when autoscaling is enabled. | 5 |
autoscaling.targetCPUUtilizationPercentage |
The CPU utilization percentage the HPA will try to maintain. | 80 |
autoscaling.targetMemoryUtilizationPercentage |
The memory utilization percentage the HPA will try to maintain. | 80 |
Parameter | Description | Default Value |
---|---|---|
volumes |
A list of additional volumes to be added to the Deployment definition. | [] |
volumeMounts |
A list of additional volume mounts for the containers. | [] |
Parameter | Description | Default Value |
---|---|---|
nodeSelector |
Node labels for selecting which nodes the Pod will be scheduled on. | {} |
tolerations |
Tolerations to schedule the Pod on nodes with taints. | [] |
affinity |
Affinity and anti-affinity rules to control Pod scheduling. | {} |
For a complete list of all parameters and their default values, please refer to the values.yaml
file in the chart repository.