Setting up
Prerequisites
Warning
API Deployer is not responsible for starting and managing your Kubernetes cluster, which must already exist.
The prerequisites for deploying API services on Kubernetes are:
-
You need to have an existing Kubernetes cluster. The “kubectl” command on the API Deployer node must be fully functional and usable by the user running DSS.
-
The local “docker” command must be usable by the user running DSS. That includes the permission to build images, and thus access to a Docker socket
-
You need to have an image registry, accessible by your Kubernetes cluster
-
The local “docker” command must have permission to push images to your image registry
Limitations
-
The MacOS installation of DSS does not support Kubernetes
-
API services using conda-based code environments are not supported
-
Your DSS machine must have direct outgoing Internet access in order to install packages
-
Your containers must have direct outgoing Internet access in order to install packages
Build the base image
Before you can deploy to Kubernetes, a “base image” must be constructed. Each API Deployer deployment will then create a final Docker image made of:
-
The base image
-
An additional layer containing the API Service data and settings
Each Deployment infrastructure on the API Deployer can use a different base image. If you don’t configure anything specific, all infrastructures will use a default base image.
Warning
After each upgrade of DSS, you must rebuild all base images
From the DSS Datadir, run
./bin/dssadmin build-base-image --type api-deployer
For more details on building base images and customizing base images, please see Initial setup and Customization of base images .
Create the Kubernetes infrastructure in DSS
-
Go to API Deployer > Infrastructures
-
Create a new infra with type Kubernetes
-
Go to Settings > Kubernetes cluster
The elements you may need to customize are:
-
Kubectl context: if your kubectl configuration file has several contexts, you need to indicate which one DSS will target - this allows you to target multiple Kubernetes cluster from a single API Deployer by using several kubectl contexts
-
Kubernetes namespace: all elements created by DSS in your Kubernetes cluster will be created in that namespace
-
Registry host