Space Cloud lets you leverage all the capabilities of Kubernetes without having to learn the Kubernetes API. This guide shows how you can deploy your code to Space Cloud.
If you want an interactive and step-by-step guide to deploy your code, follow this Space Cloud Basic guide
To deploy your code, it should have these two files:
Dockerfile - To build the docker image since Space Cloud can only deploy docker containers.service.yaml - To describe the service configuration (example: resources, auto-scaling, ports)If you already have these two files, you can straight away jump to deploying the service.
space-cli has a built-in command to generate both of these. It automatically generates a Dockerfile for us and a service.yaml as well with suitable defaults by asking us only a few required questions.
Checkout into the root folder of your code and just run the following command:
space-cli deploy --prepareIt asks you the following bunch of questions to auto-generate the config file. Most notable questions are:
v1) to identify the different versions of your service.This will generate a Dockerfile and a service.yaml file if these files did not exist before. Feel free to explore and change both these files before finally deploying the service. The service.yaml file looks something like this:
api: /v1/runner/{project}/services/{id}/{version}
meta:
id: basic-test
project: myproject
version: v1
spec:
autoScale:
coolDownInterval: 120
maxReplicas: 100
minReplicas: 1
pollingInterval: 15
triggers:
- authRef: null
metadata:
target: "50"
name: Request per second
type: requests-per-second
statsInclusionPrefixes: http.inbound,cluster_manager,listener_manager
tasks:
- docker:
cmd: []
image: dockerhub/myproject-basic-test:v1
imagePullPolicy: pull-if-not-exists
secret: ""
env: {}
id: basic-test
ports:
- name: http
port: 8080
protocol: http
resources:
cpu: 250
memory: 512
runtime: image
secrets: []
upstreams:
- projectId: myproject
service: '*'
whitelists:
- projectId: myproject
service: '*'
type: serviceGreat! Your service now has everything that is required to deploy it.
Before we can deploy our service, we need to make sure that you have configured your Space Cloud project for which container registry to publish the docker images to.
If you are using the Docker setup of Space Cloud, then space-cli has a built-in command to spin up a container registry at localhost:5000 for you and configure Space Cloud to publish images to this registry. Here’s the command to do it:
In a production environment we recommend using a managed container registry (example: Google Container Registry), Checkout the docs for using a custom container registry to do so.
space-cli --project <project-id> add registrySince we have everything ready now, we are now going to build and publish the Docker image for our service and deploy it to Space Cloud with the config specified in its service.yaml file. We are going to use the deploy command of space-cli to do all of these.
Just run the following command from within your service folder:
space-cli deployYou may have to run the above command with sudo privileges if your
dockeris not in the sudoer group.
This will first build the docker image for our service and publish it to the configured container registry. The published docker image will be of the following format:
<docker-registry>/<project-id>-<service-id>:<service-version>space-cli then automatically instructs the Space Cloud to deploy the published docker image of the service with the config specified in the service.yaml file.
That’s it! You have successfully deployed your code using space-cli.