Deploy Seeker Server on Kubernetes

Build and deploy prepackaged server Docker images on Kubernetes.

Note: You can build Docker images using the Seeker Linux installers for both x86_64 and ARM64 architectures.
Prerequisites
  1. A Seeker installer file, for example, seeker-server-linux64-2024.10.0.sh or seeker-server-linux-arm64-2024.10.0.sh, has been copied to the /seeker_docker/images/installer/ folder.
  2. You have run the installer on Linux, and have access to:
    • A Kubernetes cluster version 1.19 or higher
    • A Docker registry with push authorization
    • Helm version 2.x/3.x

After you have chosen the Kubernetes/Docker Compose deployment option in the installer, the Seeker Docker deployment package is downloaded and extracted into the seeker_docker subfolder of the installation folder.

Note: You can customize any settings in the Dockerfiles, .yaml and .sh files.

To deploy the Seeker server on Kubernetes, perform the following steps:

Build the Seeker Docker images.
  1. Set the DOCKER_REGISTRY environment variable to your Docker registry host name, for example, my-registry.azurecr.io, and run the build script to build and publish all the images to your registry.
    cd images
    export DOCKER_REGISTRY=my-registry.azurecr.io
    ./build.sh
Deploy the Seeker images to a Kubernetes cluster.
  1. Navigate to the Seeker Helm chart folder.
    cd orchestrators/kubernetes/seeker
  2. Create the Seeker namespace.
    kubectl create ns seeker
  3. As of version 2022.8.0, a database password is required for every deployment. Create a secret to hold your database password.
    1. Create a secret.yaml file with the following content, substituting the dbpass value with your password encoded with base64.
      apiVersion: v1
      kind: Secret
      metadata:
        name: seeker-dbpass
        namespace: seeker
      type: Opaque
      data:
        dbpass: dGVzdAo=
    2. Deploy secret.yaml.
      kubectl -n seeker apply -f secret.yaml
  4. Choose one of the installation options:
    • Install the Seeker chart (default).
      helm install --namespace seeker --set registry=${DOCKER_REGISTRY} --set externalDatabasePasswordSecret=seeker-dbpass seeker .
    • Install with sizing restrictions.

      Depending on your Seeker deployment size, use the following command with the corresponding file name, for example, medium.yaml.

      helm install --namespace seeker --set registry=${DOCKER_REGISTRY} --set externalDatabasePasswordSecret=seeker-dbpass -f medium.yaml seeker .

      For recommendations regarding deployment sizes, see Sizing Guidelines.

    • Install with a user-managed database.
      helm install \
            --namespace seeker \
            --set registry=${DOCKER_REGISTRY} \
            --set seekerManagedDatabase.enabled=false \
            --set externalDatabaseHost=database-host \
            --set externalDatabasePort=5432 \
            --set externalDatabaseName=seeker-db \
            --set externalDatabaseUsername=seeker-user \
            --set externalDatabasePasswordSecret=seeker-dbpass \
            -f medium.yaml \
            seeker .
Next Steps
The deployment might take a few minutes to complete. Once completed, verify its results.
kubectl get pods -n seeker
You should see an output similar to this:
NAME                               READY   STATUS    RESTARTS   AGE
seeker-nginx-d744bdf9d-jz2q6       1/1     Running   0          50s
seeker-postgres-7ccb44cdd7-6wqq5   1/1     Running   0          50s
seeker-sensor-5c474bf4f-dw2dr      1/1     Running   0          50s
seeker-server-67df999d68-m7zjt     1/1     Running   0          50s
Note:
  • If you are using a single-node Kubernetes cluster, such as the one available when running Docker on a personal computer, the Seeker container exposes the 30080 (HTTP) and 30443 (HTTPS) ports of your cluster.
  • For multi-node Kubernetes clusters, configure your ingress controller to route external traffic to the Seeker service inside your cluster.

If you need to upgrade your Seeker server deployment from versions before 2022.8.0, see Upgrade on Kubernetes.