JumpServer is a Privileged Access Management (PAM) Complying with 4A Protocol of Operation and Security Auditing. JumpServer provides features include authentication, authorization, accounting and auditing.
This article is about how to use Helm to install JumpServer on Kubernetes (K8S).
Prerequisites
Kubernetes (K8S)
Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.
For more information about installing and using Kubernetes (K8s), see the Kubernetes (K8s) Docs.
StorageClass
A StorageClass provides a way for administrators to describe the “classes” of storage they offer. Different classes might map to quality-of-service levels, or to backup policies, or to arbitrary policies determined by the cluster administrators. Kubernetes itself is unopinionated about what classes represent. This concept is sometimes called “profiles” in other storage systems.
$ kubectl get pods -n bitnami-mysql NAME READY STATUS RESTARTS AGE mysql-0 1/1 Running 0 40h
Create JumpServer database
Remember to replace <Your JumpServer Database Password> within your password.
1 2 3 4 5 6 7 8 9 10 11 12 13
# Enter into bitnami-mysql container $ kubectl exec -i -t -n bitnami-mysql mysql-0 -c mysql -- sh -c "clear; (bash || ash || sh)" # Enter into MySQL shell $ mysql -u root -p
create database jumpserver default character set utf8 collate utf8_general_ci;
create user 'jumpserver'@'localhost' identified by '<Your JumpServer Database Password>';
create user 'jumpserver'@'%' identified by '<Your JumpServer Database Password>';
grant all privileges on 'jumpserver'.* to 'jumpserver'@'%' identified by '<Your JumpServer Database Password>';
# helm-charts/values.yaml at main · jumpserver/helm-charts # https://github.com/jumpserver/helm-charts/blob/main/charts/jumpserver/values.yaml
## @param global.imageRegistry Global Docker image registry ## @param global.imagePullSecrets Global Docker registry secret names as an array ## @param global.storageClass Global StorageClass for Persistent Volume(s) ## @param global.redis.password Global Redis™ password (overrides `auth.password`) ## global: storageClass:"{{ .Values.global.storageClass }}"
## If the MySQL database included in the chart is disabled, JumpServer will ## use below parameters to connect to an external MySQL server. ## externalDatabase: engine:mysql host:mysql.bitnami-mysql port:3306 user:jumpserver password:"{{ .Values.externalDatabase.password }}" database:jumpserver
## If the Redis database included in the chart is disabled, JumpServer will ## use below parameters to connect to an external Redis server. ## externalRedis: host:redis-master.bitnami-redis-jumpserver port:6379 password:"{{ .Values.externalRedis. }}"
config: # Generate a new random secret key by execute `cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50` secretKey:"{{ .Values.core.config.secretKey }}" # Generate a new random bootstrap token by execute `cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24` bootstrapToken:"{{ .Values.core.config.bootstrapToken }}"