Warning
This documentation is actively being updated as the project evolves and may not be complete in all areas.
Service¶
This section explains how to install and configure the Jumpstarter service in your Kubernetes cluster. The service enables centralized management of your Jumpstarter environment. Before installing, ensure you have:
A Kubernetes cluster available
kubectl
installed and configured to access your clusterHelm (version 3.x or newer)
Administrator access to your cluster (required for CRD installation)
Domain name for service endpoints (or use
nip.io
for local testing)
Note
global.baseDomain
creates these service hostnames with jumpstarter.example.com
:
grpc.jumpstarter.example.com
router.jumpstarter.example.com
(for router endpoints)
Kubernetes with Helm¶
Install Jumpstarter on a standard Kubernetes cluster using Helm:
$ helm upgrade jumpstarter --install oci://quay.io/jumpstarter-dev/helm/jumpstarter \
--create-namespace --namespace jumpstarter-lab \
--set global.baseDomain=jumpstarter.example.com \
--set global.metrics.enabled=true \
--set jumpstarter-controller.grpc.mode=ingress \
--version=0.6.0-rc1
OpenShift with Helm¶
Install Jumpstarter on an OpenShift cluster using Helm:
$ helm upgrade jumpstarter --install oci://quay.io/jumpstarter-dev/helm/jumpstarter \
--create-namespace --namespace jumpstarter-lab \
--set global.baseDomain=jumpstarter.example.com \
--set global.metrics.enabled=true \
--set jumpstarter-controller.grpc.mode=route \
--version=0.6.0-rc1
OpenShift with ArgoCD¶
First, create and label a namespace for Jumpstarter:
$ kubectl create namespace jumpstarter-lab
$ kubectl label namespace jumpstarter-lab argocd.argoproj.io/managed-by=openshift-gitops
For ArgoCD to manage Jumpstarter CRDs, create this ClusterRole and ClusterRoleBinding:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
argocds.argoproj.io/name: openshift-gitops
argocds.argoproj.io/namespace: openshift-gitops
name: openshift-gitops-argocd-appcontroller-crd
rules:
- apiGroups:
- 'apiextensions.k8s.io'
resources:
- 'customresourcedefinitions'
verbs:
- '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
argocds.argoproj.io/name: openshift-gitops
argocds.argoproj.io/namespace: openshift-gitops
name: openshift-gitops-argocd-appcontroller-crd
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: openshift-gitops-argocd-appcontroller-crd
subjects:
- kind: ServiceAccount
name: openshift-gitops-argocd-application-controller
namespace: openshift-gitops
Create an ArgoCD Application to deploy Jumpstarter:
Warning
The secrets jumpstarter-controller.controllerSecret
and jumpstarter-controller.routerSecret
must be unique for each installation. While Helm can auto-generate these, ArgoCD cannot -
you must manually create these in your Jumpstarter namespace.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: jumpstarter
namespace: openshift-gitops
spec:
destination:
name: in-cluster
namespace: jumpstarter-lab
project: default
source:
chart: jumpstarter
helm:
parameters:
- name: global.baseDomain
value: devel.jumpstarter.dev
- name: global.metrics.enabled
value: "true"
- name: jumpstarter-controller.controllerSecret
value: "pick-a-secret-DONT-USE-THIS-DEFAULT"
- name: jumpstarter-controller.routerSecret
value: "again-pick-a-secret-DONT-USE-THIS-DEFAULT"
- name: jumpstarter-controller.grpc.mode
value: "route"
repoURL: quay.io/jumpstarter-dev/helm
targetRevision: "0.6.0-rc1"
Local cluster with Minikube¶
Minikube runs local Kubernetes clusters using VMs or container “nodes”. It works across several platforms and supports different hypervisors, making it ideal for local development and testing.
Find more information on the minikube website.
Create a minikube cluster¶
Expand the default NodePort range to include the Jumpstarter ports:
$ minikube start --extra-config=apiserver.service-node-port-range=8000-9000
Install Jumpstarter with the CLI¶
The Jumpstarter CLI’s jmp admin install
command simplifies installation in
your Kubernetes cluster.
Use the minikube IP address when installing with the CLI:
$ jmp admin install --ip $(minikube ip)
For complete documentation of the jmp admin install
command and all available
options, see the MAN pages.
Install Jumpstarter with Helm¶
For manual installation with Helm, use these commands:
$ export IP=$(minikube ip)
$ export BASEDOMAIN="jumpstarter.${IP}.nip.io"
$ export GRPC_ENDPOINT="grpc.${BASEDOMAIN}:8082"
$ export GRPC_ROUTER_ENDPOINT="router.${BASEDOMAIN}:8083"
$ helm upgrade jumpstarter --install oci://quay.io/jumpstarter-dev/helm/jumpstarter \
--create-namespace --namespace jumpstarter-lab \
--set global.baseDomain=${BASEDOMAIN} \
--set jumpstarter-controller.grpc.endpoint=${GRPC_ENDPOINT} \
--set jumpstarter-controller.grpc.routerEndpoint=${GRPC_ROUTER_ENDPOINT} \
--set global.metrics.enabled=false \
--set jumpstarter-controller.grpc.nodeport.enabled=true \
--set jumpstarter-controller.grpc.nodeport.port=8082 \
--set jumpstarter-controller.grpc.nodeport.routerPort=8083 \
--set jumpstarter-controller.grpc.mode=nodeport \
--version=0.6.0-rc1
Local cluster with kind¶
To try the Jumpstarter Controller on your local machine, run a local Kubernetes cluster for development purposes.
kind is a tool for running local Kubernetes clusters using Podman or Docker container “nodes”.
Tip
Consider minikube for environments requiring untrusted certificates.
Find more information on the kind website.
Create a kind cluster¶
First, create a kind cluster config that enables nodeports to host the Services.
Save this as kind_config.yaml
:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
kubeadmConfigPatches:
- |
kind: ClusterConfiguration
apiServer:
extraArgs:
"service-node-port-range": "3000-32767"
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 80
hostPort: 5080
protocol: TCP
- containerPort: 30010
hostPort: 8082
protocol: TCP
- containerPort: 30011
hostPort: 8083
protocol: TCP
- containerPort: 443
hostPort: 5443
protocol: TCP
Next, create a kind cluster using the config you created:
$ kind create cluster --config kind_config.yaml
Install Jumpstarter with the CLI¶
The Jumpstarter CLI provides the jmp admin install
command to automatically
run Helm with the correct arguments, simplifying installation in your Kubernetes
cluster.
Install Jumpstarter with default options:
$ jmp admin install
For complete documentation of the jmp admin install
command and all available
options, see the MAN pages.
Install Jumpstarter with Helm¶
If you prefer manual installation with Helm, use the following commands:
$ export IP="X.X.X.X"
$ export BASEDOMAIN="jumpstarter.${IP}.nip.io"
$ export GRPC_ENDPOINT="grpc.${BASEDOMAIN}:8082"
$ export GRPC_ROUTER_ENDPOINT="router.${BASEDOMAIN}:8083"
$ helm upgrade jumpstarter --install oci://quay.io/jumpstarter-dev/helm/jumpstarter \
--create-namespace --namespace jumpstarter-lab \
--set global.baseDomain=${BASEDOMAIN} \
--set jumpstarter-controller.grpc.endpoint=${GRPC_ENDPOINT} \
--set jumpstarter-controller.grpc.routerEndpoint=${GRPC_ROUTER_ENDPOINT} \
--set global.metrics.enabled=false \
--set jumpstarter-controller.grpc.nodeport.enabled=true \
--set jumpstarter-controller.grpc.mode=nodeport \
--version=0.6.0-rc1