This functionality is experimental and may be changed or removed completely in a future release. Elastic will take a best effort approach to fix any issues, but experimental features are not subject to the support SLA of official GA features.
The Elastic Maps Server Docker image contains only a few zoom levels of data. To get the map data up to the highest zoom level, Elastic Maps Server needs a basemap file mounted into its container.
You have to download the basemap ahead of time on a machine that is not air-gapped and populate a volume that can be mounted into the Elastic Maps Server Pods. See also the Elastic Maps Server documentation.
The procedure on how to get a Kubernetes volume populated with that data is outside the scope of this document, as it depends on your specific Kubernetes setup and choice of volume provisioner. This is a possible approach that works for most setups:
Download the basemap zip archive using the link shown in the Elastic Maps Server UI or extracted from the
Create a PersistentVolumeClaim of sufficient size (> 90G) and a temporary Pod to mount the corresponding volume.
--- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ems-basemap spec: storageClassName: "standard" accessModes: - ReadWriteOnce resources: requests: storage: 250G --- kind: Pod apiVersion: v1 metadata: name: ems-data-setup spec: terminationGracePeriodSeconds: 0 volumes: - name: ems-storage persistentVolumeClaim: claimName: ems-basemap containers: - name: ems-setup image: ubuntu command: [bash, -c, "apt-get update && apt-get install unzip && while true; do sleep 10; done"] volumeMounts: - mountPath: "/usr/share/planet" name: ems-storage
kubectlto copy the basemap data into the volume
kubectl cp planet.zip ems-data-setup:/usr/share/planet/planet.zip
Unzip the archive on the temporary Pod
kubectl exec ems-data-setup -- unzip /usr/share/data/planet.zip -d /usr/share/planet
Delete the temporary Pod and remount the volume into the Elastic Maps Server Pods as described in Pod configuration.
kubectl delete pod ems-data-setup
You can customize the Elastic Maps Server Pod using a Pod template.
The following example demonstrates how to create a Elastic Maps Server deployment which mounts a data volume with the complete basemap.
apiVersion: maps.k8s.elastic.co/v1alpha1 kind: ElasticMapsServer metadata: name: quickstart spec: version: 7.14.1 elasticsearchRef: name: "quickstart" count: 1 podTemplate: spec: containers: - name: maps volumeMounts: - name: map-data readOnly: true mountPath: /usr/src/app/data volumes: - name: map-data persistentVolumeClaim: claimName: ems-basemap
The name of the container in the Pod template must be