Preview environments are temporary environments created automatically by Jenkins X for each Pull Request.
This is very nice, but if you start adding applications to your Jenkins X cluster, and each application repository has a few opened Pull Requests - each with a preview environment including a few dependencies - then you’ll quickly get tens of preview environments and a lot more running pods. But these pods are usually only used to run the integration tests in the Pull Request pipelines, or when someone manually visits the preview environment URL. Most of the time, these pods are just idle, waiting and using resources. What if you could easily scale them down when they are idle?
This guide will help you install Osiris in your Jenkins X cluster. Osiris is a Kubernetes component that will inject itself as a proxy in front of your applications, and scale them down when it notices that they are idle for more than a pre-configured period. And if someone wants to access your application, Osiris will receive the request, scale up the application, and forward the request to the application.
Combined with a cluster autoscaler, Osiris will help you scale down/up your cluster nodes automatically based on your workload.
Please follow the usual getting started guide for boot and helm 3 first.
The first step is to edit your main
helmfile.yaml file located in the root directory of your development environment git repository, so that it references the
helmfiles/osiris-system/helmfile.yaml file, such as:
helmfiles: - path: helmfiles/jx/helmfile.yaml - path: helmfiles/osiris-system/helmfile.yaml - path: helmfiles/tekton-pipelines/helmfile.yaml ...
The second step is to create the
helmfiles/osiris-system/helmfile.yaml file, with the following content:
namespace: osiris-system releases: - chart: osiris/osiris name: osiris
Commit and push these changes, and after a few minutes you should see a few osiris pods running in the
$ kubectl get pod -n osiris-system NAME READY STATUS RESTARTS AGE osiris-activator-696b8c85f9-99hnn 1/1 Running 0 31m osiris-endpoints-controller-67f4877645-k4pxv 1/1 Running 0 31m osiris-endpoints-hijacker-686586df7c-72cmx 1/1 Running 0 31m osiris-proxy-injector-847f6f46c6-bjjtp 1/1 Running 0 31m osiris-zeroscaler-5d757dcb98-kl7ts 1/1 Running 0 31m
Osiris requires specific annotations to be added to your application’s Deployment and Service, otherwise, it won’t do anything. You can read the Osiris documentation to see which annotations you need to add to your resources.
The configuration is defined in a “values file” stored in the Jenkins X Version Stream.
If you want to change anything from the default configuration, you can either:
- submit a Pull Request if you believe this change is beneficial for everybody
- or create a new values file in your development environment git repositor:
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.