Install in Kubernetes
This page aims to guide you through the process of installing Step in a Kubernetes environment using the official Helm chart and Docker images of Step.
As the Step Docker images are not published in a public Docker repository, this page will also explain how to download them and to store them into your company’s private repository.
Download the images and chart
Store the Step Docker images to your private Docker repository
If you haven’t already access to the enterprise registry of Step, follow the page Access enterprise artifacts to request your access.
Once you have access, login to the docker registry of Step:
docker login docker.exense.ch -u YOUR_USERNAME -p YOUR_PASSWORD
Then, pull the images using the below commands (mind the version tag):
docker pull docker.exense.ch/step-enterprise/controller:3.25.2-java-17
docker pull docker.exense.ch/step-enterprise/agent:3.25.2-java-17
docker pull docker.exense.ch/step-enterprise/agent:3.25.2-dotnet-8
Once done, ensure that you tag and push them to your company private Docker repository : the tag must follow below pattern to work with the Helm Chart
(below example for the Step EE Controller version 3.25.2): YOUR_COMPANY_PRIVATE_REPO/step-enterprise/controller:3.25.2-java-17
For instance:
docker tag docker.exense.ch/step-enterprise/controller:3.25.2-java-17 YOUR_COMPANY_PRIVATE_REPO/step-enterprise/controller:3.25.2-java-17
docker push YOUR_COMPANY_PRIVATE_REPO/step-enterprise/controller:3.25.2-java-17
Repeat the same process for other required Step Docker images before you continue.
Install Helm
Install the latest stable version of Helm. For information on installing Helm, refer to the official documentation available at https://helm.sh/docs/intro/install/.
Download the Helm Chart
The Helm Charts can be downloaded from the “step-chart” folder present on Step Enterprise FTP (refer to Access enterprise artifacts for accessing it). Using a single command, below example could be used (password will be asked by the prompt):
curl -u YOUR_USERNAME --output step-1.0.0.tgz https://ftps.exense.ch/step-chart/step-1.0.0.tgz
Customize the default Step values
The Chart comes with a default values file at the Chart root (step.values.yaml). You will have to customize it prior to your first deployment. In that guide, we will cover the mandatory values to be updated before being able to deploy Step to your Kubernetes cluster.
Refer to the Helm Values page for all details about the customizable values.
Below example assumes that you have stored the Chart locally and made a copy of the default step.values.yaml file.
Update the Image parameters
Image parameters needs to be updated to specify your company Docker image repository, as well as the image pull secrets to be used:
image:
repository: "YOUR_COMPANY_PRIVATE_REPO"
pullPolicy: Always
imagePullSecrets:
- name: YOUR_COMPANY_PRIVATE_REPO_PULL_SECRET
Update the Common parameters
Common parameters need to be updated to specify the Step version you want to use:
commons:
version: 3.25.2
Override agent images
Note that it is possible to override the images used by the Agents as per below:
agent:
pools:
- name: "example"
image: "myCompanyRepo.myCustomImagePath:myCustomTag"
...
Configure the license
Enterprise customers receive following licenses files:
- a step-enterprise.licenseconfig.json file
- a licenses.json file
The content of this files have to be Base64 encoded and added to the Controller licenses field, respectively:
controller:
licenseconfig: "Output of command: cat step-enterprise.licenseconfig.json | base64 -w0"
licenses: "Output of cat licenses.json | base64 -w0"
Deploy the Step Helm Chart
Create a Kubernetes namespace if necessary:
kubectl create namespace step
Deploy Step with Helm and your values file:
helm --namespace step install -f step.values.yaml step step-1.0.0.tgz
To verify the deployment status, run the following command and verify that deployed appears in the STATUS column:
helm --namespace step list
You should see an output similar to the following:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
step step 1 2024-08-07 01:46:20.801760069 +0200 CEST deployed step-1.0.0 3.25.0
To check the overall status of all the objects in the namespace, run the following command:
kubectl --namespace step get all
Access Step
Using an Ingress rule
The Controller UI can also be reached by creating an Ingress rule : this is managed via the values file under the ingress section, see below example:
ingress:
## See https://kubernetes.io/docs/concepts/services-networking/ingress/
enabled: true
## Fully qualified URL under which the Controller UI will be reachable
host: step.your-domain.ch
## Domain only
domain: your-domain.ch
## Ingress class name to be used
ingressClassName: yourIngressClassName
## Additional annotations to be added to the Ingress rule
annotations: {}
You can now navigate to http://step.your-domain.ch in your browser to access the Step Controller UI.
Using port forwarding
For debugging reasons you might want to set up port forwarding to directly access the controller service. Run the following port forwarding command to direct the Step Controller service to listen locally to the port 8080 :
kubectl --namespace step port-forward svc/enterprise-controller 8080
You can now navigate to http://localhost:8080 in your browser to access the Step Controller UI.