在线安装

国内可以使用由 华为云 提供的容器镜像服务

区域镜像仓库地址配置文件 /opt/jumpserver/config/config.txtKubernetes values.yamlOS/ARCH
华北-北京一swr.cn-north-1.myhuaweicloud.comDOCKER_IMAGE_PREFIX=swr.cn-north-1.myhuaweicloud.comrepository: swr.cn-north-1.myhuaweicloud.comlinux/amd64
华南-广州swr.cn-south-1.myhuaweicloud.comDOCKER_IMAGE_PREFIX=swr.cn-south-1.myhuaweicloud.comrepository: swr.cn-south-1.myhuaweicloud.comlinux/amd64
华北-北京四swr.cn-north-4.myhuaweicloud.comDOCKER_IMAGE_PREFIX=swr.cn-north-4.myhuaweicloud.comrepository: swr.cn-north-4.myhuaweicloud.comlinux/arm64
华东-上海一swr.cn-east-3.myhuaweicloud.comDOCKER_IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.comrepository: swr.cn-east-3.myhuaweicloud.comlinux/arm64
西南-贵阳一swr.cn-southwest-2.myhuaweicloud.comDOCKER_IMAGE_PREFIX=swr.ap-southeast-1.myhuaweicloud.comrepository: swr.ap-southeast-1.myhuaweicloud.comlinux/loong64

1 环境要求

  • Kubernetes 1.20+
  • Helm 3.0

2 安装部署

2.1 添加 JumpServer 的 Helm 源地址

  1. helm repo add jumpserver https://jumpserver.github.io/helm-charts
  2. helm repo list

2.2 编辑 JumpServer values.yaml 文件

  1. vi values.yaml
  1. # 模板 https://github.com/jumpserver/helm-charts/blob/main/charts/jumpserver/values.yaml
  2. # Default values for jumpserver.
  3. # This is a YAML-formatted file.
  4. # Declare variables to be passed into your templates.
  5. nameOverride: ""
  6. fullnameOverride: ""
  7. ## @param global.imageRegistry Global Docker image registry
  8. ## @param global.imagePullSecrets Global Docker registry secret names as an array
  9. ## @param global.storageClass Global StorageClass for Persistent Volume(s)
  10. ## @param global.redis.password Global Redis™ password (overrides `auth.password`)
  11. ##
  12. global:
  13. imageRegistry: "docker.io" # 国内可以使用华为云加速
  14. imageTag: v3.10.1 # 版本号
  15. ## E.g.
  16. # imagePullSecrets:
  17. # - name: harborsecret
  18. #
  19. # storageClass: "jumpserver-data"
  20. ##
  21. imagePullSecrets: []
  22. # - name: yourSecretKey
  23. storageClass: "" # (*必填) NFS SC
  24. ## Please configure your MySQL server first
  25. ## Jumpserver will not start the external MySQL server.
  26. ##
  27. externalDatabase: # (*必填) 数据库相关设置
  28. engine: mysql
  29. host: localhost
  30. port: 3306
  31. user: root
  32. password: ""
  33. database: jumpserver
  34. ## Please configure your Redis server first
  35. ## Jumpserver will not start the external Redis server.
  36. ##
  37. externalRedis: # (*必填) Redis 设置
  38. host: localhost
  39. port: 6379
  40. password: ""
  41. serviceAccount:
  42. # Specifies whether a service account should be created
  43. create: false
  44. # The name of the service account to use.
  45. # If not set and create is true, a name is generated using the fullname template
  46. name:
  47. ingress:
  48. enabled: true # 不使用 ingress 可以关闭
  49. annotations:
  50. # kubernetes.io/tls-acme: "true"
  51. compute-full-forwarded-for: "true"
  52. use-forwarded-headers: "true"
  53. kubernetes.io/ingress.class: nginx
  54. nginx.ingress.kubernetes.io/configuration-snippet: |
  55. proxy_set_header Upgrade "websocket";
  56. proxy_set_header Connection "Upgrade";
  57. hosts:
  58. - "test.jumpserver.org" # 对外域名
  59. tls: []
  60. # - secretName: chart-example-tls
  61. # hosts:
  62. # - chart-example.local
  63. core:
  64. enabled: true
  65. labels:
  66. app.jumpserver.org/name: jms-core
  67. config:
  68. # Generate a new random secret key by execute `cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`
  69. # secretKey: "B3f2w8P2PfxIAS7s4URrD9YmSbtqX4vXdPUL217kL9XPUOWrmy"
  70. secretKey: "" # (*必填) 加密敏感信息的 secret_key, 长度推荐大于 50 位
  71. # Generate a new random bootstrap token by execute `cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`
  72. # bootstrapToken: "7Q11Vz6R2J6BLAdO"
  73. bootstrapToken: "" # (*必填) 组件认证使用的 token, 长度推荐大于 24 位
  74. # Enabled it for debug
  75. debug: false
  76. log:
  77. level: ERROR
  78. replicaCount: 1
  79. image:
  80. registry: docker.io
  81. repository: jumpserver/core
  82. tag: v3.10.1
  83. pullPolicy: IfNotPresent
  84. command: []
  85. env:
  86. # See: https://docs.jumpserver.org/zh/master/admin-guide/env/#core
  87. SESSION_EXPIRE_AT_BROWSER_CLOSE: true
  88. # SESSION_COOKIE_AGE: 86400
  89. # SECURITY_VIEW_AUTH_NEED_MFA: true
  90. livenessProbe:
  91. failureThreshold: 30
  92. httpGet:
  93. path: /api/health/
  94. port: web
  95. readinessProbe:
  96. failureThreshold: 30
  97. httpGet:
  98. path: /api/health/
  99. port: web
  100. podSecurityContext: {}
  101. # fsGroup: 2000
  102. securityContext: {}
  103. # capabilities:
  104. # drop:
  105. # - ALL
  106. # readOnlyRootFilesystem: true
  107. # runAsNonRoot: true
  108. # runAsUser: 1000
  109. service:
  110. type: ClusterIP
  111. web:
  112. port: 8080
  113. resources: {}
  114. # We usually recommend not to specify default resources and to leave this as a conscious
  115. # choice for the user. This also increases chances charts run on environments with little
  116. # resources, such as Minikube. If you do want to specify resources, uncomment the following
  117. # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  118. # limits:
  119. # cpu: 1000m
  120. # memory: 2048Mi
  121. # requests:
  122. # cpu: 500m
  123. # memory: 1024Mi
  124. persistence:
  125. storageClassName: jumpserver-data
  126. accessModes:
  127. - ReadWriteMany
  128. size: 100Gi
  129. # annotations: {}
  130. finalizers:
  131. - kubernetes.io/pvc-protection
  132. # subPath: ""
  133. # existingClaim:
  134. volumeMounts: []
  135. volumes: []
  136. nodeSelector: {}
  137. tolerations: []
  138. affinity: {}
  139. koko:
  140. enabled: true
  141. labels:
  142. app.jumpserver.org/name: jms-koko
  143. config:
  144. log:
  145. level: ERROR
  146. replicaCount: 1
  147. image:
  148. registry: docker.io
  149. repository: jumpserver/koko
  150. tag: v3.10.1
  151. pullPolicy: IfNotPresent
  152. command: []
  153. env: []
  154. # See: https://docs.jumpserver.org/zh/master/admin-guide/env/#koko
  155. # LANGUAGE_CODE: zh
  156. # REUSE_CONNECTION: true
  157. # ENABLE_LOCAL_PORT_FORWARD: true
  158. # ENABLE_VSCODE_SUPPORT: true
  159. livenessProbe:
  160. failureThreshold: 30
  161. httpGet:
  162. path: /koko/health/
  163. port: web
  164. readinessProbe:
  165. failureThreshold: 30
  166. httpGet:
  167. path: /koko/health/
  168. port: web
  169. podSecurityContext: {}
  170. # fsGroup: 2000
  171. securityContext:
  172. privileged: true
  173. # capabilities:
  174. # drop:
  175. # - ALL
  176. # readOnlyRootFilesystem: true
  177. # runAsNonRoot: true
  178. # runAsUser: 1000
  179. service:
  180. type: ClusterIP
  181. web:
  182. port: 5000
  183. ssh:
  184. port: 2222
  185. resources: {}
  186. # We usually recommend not to specify default resources and to leave this as a conscious
  187. # choice for the user. This also increases chances charts run on environments with little
  188. # resources, such as Minikube. If you do want to specify resources, uncomment the following
  189. # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  190. # limits:
  191. # cpu: 100m
  192. # memory: 128Mi
  193. # requests:
  194. # cpu: 100m
  195. # memory: 128Mi
  196. persistence:
  197. storageClassName: jumpserver-data
  198. accessModes:
  199. - ReadWriteMany
  200. size: 10Gi
  201. # annotations: {}
  202. finalizers:
  203. - kubernetes.io/pvc-protection
  204. volumeMounts: []
  205. volumes: []
  206. nodeSelector: {}
  207. tolerations: []
  208. affinity: {}
  209. lion:
  210. enabled: true
  211. labels:
  212. app.jumpserver.org/name: jms-lion
  213. config:
  214. log:
  215. level: ERROR
  216. replicaCount: 1
  217. image:
  218. registry: docker.io
  219. repository: jumpserver/lion
  220. tag: v3.10.1
  221. pullPolicy: IfNotPresent
  222. command: []
  223. env:
  224. # See: https://docs.jumpserver.org/zh/master/admin-guide/env/#lion
  225. JUMPSERVER_ENABLE_FONT_SMOOTHING: true
  226. # JUMPSERVER_COLOR_DEPTH: 32
  227. # JUMPSERVER_ENABLE_WALLPAPER: true
  228. # JUMPSERVER_ENABLE_THEMING: true
  229. # JUMPSERVER_ENABLE_FULL_WINDOW_DRAG: true
  230. # JUMPSERVER_ENABLE_DESKTOP_COMPOSITION: true
  231. # JUMPSERVER_ENABLE_MENU_ANIMATIONS: true
  232. livenessProbe:
  233. failureThreshold: 30
  234. httpGet:
  235. path: /lion/health/
  236. port: web
  237. readinessProbe:
  238. failureThreshold: 30
  239. httpGet:
  240. path: /lion/health/
  241. port: web
  242. podSecurityContext: {}
  243. # fsGroup: 2000
  244. securityContext: {}
  245. # capabilities:
  246. # drop:
  247. # - ALL
  248. # readOnlyRootFilesystem: true
  249. # runAsNonRoot: true
  250. # runAsUser: 1000
  251. service:
  252. type: ClusterIP
  253. web:
  254. port: 8081
  255. resources: {}
  256. # We usually recommend not to specify default resources and to leave this as a conscious
  257. # choice for the user. This also increases chances charts run on environments with little
  258. # resources, such as Minikube. If you do want to specify resources, uncomment the following
  259. # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  260. # limits:
  261. # cpu: 100m
  262. # memory: 512Mi
  263. # requests:
  264. # cpu: 100m
  265. # memory: 512Mi
  266. persistence:
  267. storageClassName: jumpserver-data
  268. accessModes:
  269. - ReadWriteMany
  270. size: 50Gi
  271. # annotations: {}
  272. finalizers:
  273. - kubernetes.io/pvc-protection
  274. volumeMounts: []
  275. volumes: []
  276. nodeSelector: {}
  277. tolerations: []
  278. affinity: {}
  279. magnus:
  280. enabled: true
  281. labels:
  282. app.jumpserver.org/name: jms-magnus
  283. config:
  284. log:
  285. level: ERROR
  286. replicaCount: 1
  287. image:
  288. registry: docker.io
  289. repository: jumpserver/magnus
  290. tag: v3.10.1
  291. pullPolicy: IfNotPresent
  292. command: []
  293. env: []
  294. livenessProbe:
  295. failureThreshold: 30
  296. tcpSocket:
  297. port: 9090
  298. readinessProbe:
  299. failureThreshold: 30
  300. tcpSocket:
  301. port: 9090
  302. podSecurityContext: {}
  303. # fsGroup: 2000
  304. securityContext: {}
  305. # capabilities:
  306. # drop:
  307. # - ALL
  308. # readOnlyRootFilesystem: true
  309. # runAsNonRoot: true
  310. # runAsUser: 1000
  311. service:
  312. type: ClusterIP
  313. mysql:
  314. port: 33061
  315. mariadb:
  316. port: 33062
  317. redis:
  318. port: 63790
  319. postgresql:
  320. port: 54320
  321. oracle:
  322. ports: 30000-30100
  323. resources: {}
  324. # We usually recommend not to specify default resources and to leave this as a conscious
  325. # choice for the user. This also increases chances charts run on environments with little
  326. # resources, such as Minikube. If you do want to specify resources, uncomment the following
  327. # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  328. # limits:
  329. # cpu: 100m
  330. # memory: 512Mi
  331. # requests:
  332. # cpu: 100m
  333. # memory: 512Mi
  334. persistence:
  335. storageClassName: jumpserver-data
  336. accessModes:
  337. - ReadWriteMany
  338. size: 10Gi
  339. # annotations: {}
  340. finalizers:
  341. - kubernetes.io/pvc-protection
  342. volumeMounts: []
  343. volumes: []
  344. nodeSelector: {}
  345. tolerations: []
  346. affinity: {}
  347. xpack:
  348. enabled: false # 企业版本打开此选项
  349. omnidb:
  350. labels:
  351. app.jumpserver.org/name: jms-omnidb
  352. config:
  353. log:
  354. level: ERROR
  355. replicaCount: 1
  356. image:
  357. registry: registry.fit2cloud.com
  358. repository: jumpserver/omnidb
  359. tag: v3.10.1
  360. pullPolicy: IfNotPresent
  361. command: []
  362. env: []
  363. livenessProbe:
  364. failureThreshold: 30
  365. tcpSocket:
  366. port: web
  367. readinessProbe:
  368. failureThreshold: 30
  369. tcpSocket:
  370. port: web
  371. podSecurityContext: {}
  372. # fsGroup: 2000
  373. securityContext: {}
  374. # capabilities:
  375. # drop:
  376. # - ALL
  377. # readOnlyRootFilesystem: true
  378. # runAsNonRoot: true
  379. # runAsUser: 1000
  380. service:
  381. type: ClusterIP
  382. web:
  383. port: 8082
  384. resources: {}
  385. # We usually recommend not to specify default resources and to leave this as a conscious
  386. # choice for the user. This also increases chances charts run on environments with little
  387. # resources, such as Minikube. If you do want to specify resources, uncomment the following
  388. # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  389. # limits:
  390. # cpu: 100m
  391. # memory: 128Mi
  392. # requests:
  393. # cpu: 100m
  394. # memory: 128Mi
  395. persistence:
  396. storageClassName: jumpserver-data
  397. accessModes:
  398. - ReadWriteMany
  399. size: 10Gi
  400. # annotations: {}
  401. finalizers:
  402. - kubernetes.io/pvc-protection
  403. volumeMounts: []
  404. volumes: []
  405. nodeSelector: {}
  406. tolerations: []
  407. affinity: {}
  408. razor:
  409. labels:
  410. app.jumpserver.org/name: jms-razor
  411. config:
  412. log:
  413. level: ERROR
  414. replicaCount: 1
  415. image:
  416. registry: registry.fit2cloud.com
  417. repository: jumpserver/razor
  418. tag: v2.28.6
  419. pullPolicy: IfNotPresent
  420. command: []
  421. env: []
  422. livenessProbe:
  423. failureThreshold: 30
  424. tcpSocket:
  425. port: rdp
  426. readinessProbe:
  427. failureThreshold: 30
  428. tcpSocket:
  429. port: rdp
  430. podSecurityContext: {}
  431. # fsGroup: 2000
  432. securityContext: {}
  433. # capabilities:
  434. # drop:
  435. # - ALL
  436. # readOnlyRootFilesystem: true
  437. # runAsNonRoot: true
  438. # runAsUser: 1000
  439. service:
  440. type: ClusterIP
  441. rdp:
  442. port: 3389
  443. resources: {}
  444. # We usually recommend not to specify default resources and to leave this as a conscious
  445. # choice for the user. This also increases chances charts run on environments with little
  446. # resources, such as Minikube. If you do want to specify resources, uncomment the following
  447. # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  448. # limits:
  449. # cpu: 100m
  450. # memory: 128Mi
  451. # requests:
  452. # cpu: 100m
  453. # memory: 128Mi
  454. persistence:
  455. storageClassName: jumpserver-data
  456. accessModes:
  457. - ReadWriteMany
  458. size: 50Gi
  459. # annotations: {}
  460. finalizers:
  461. - kubernetes.io/pvc-protection
  462. volumeMounts: []
  463. volumes: []
  464. nodeSelector: {}
  465. tolerations: []
  466. affinity: {}
  467. web:
  468. enabled: true
  469. labels:
  470. app.jumpserver.org/name: jms-web
  471. replicaCount: 1
  472. image:
  473. registry: docker.io
  474. repository: jumpserver/web
  475. tag: v3.10.1
  476. pullPolicy: IfNotPresent
  477. command: []
  478. env: []
  479. # nginx client_max_body_size, default 4G
  480. # CLIENT_MAX_BODY_SIZE: 4096m
  481. livenessProbe:
  482. failureThreshold: 30
  483. httpGet:
  484. path: /api/health/
  485. port: web
  486. readinessProbe:
  487. failureThreshold: 30
  488. httpGet:
  489. path: /api/health/
  490. port: web
  491. podSecurityContext: {}
  492. # fsGroup: 2000
  493. securityContext: {}
  494. # capabilities:
  495. # drop:
  496. # - ALL
  497. # readOnlyRootFilesystem: true
  498. # runAsNonRoot: true
  499. # runAsUser: 1000
  500. service:
  501. type: ClusterIP
  502. web:
  503. port: 80
  504. resources: {}
  505. # We usually recommend not to specify default resources and to leave this as a conscious
  506. # choice for the user. This also increases chances charts run on environments with little
  507. # resources, such as Minikube. If you do want to specify resources, uncomment the following
  508. # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  509. # limits:
  510. # cpu: 100m
  511. # memory: 128Mi
  512. # requests:
  513. # cpu: 100m
  514. # memory: 128Mi
  515. persistence:
  516. storageClassName: jumpserver-data
  517. accessModes:
  518. - ReadWriteMany
  519. size: 1Gi
  520. # annotations: {}
  521. finalizers:
  522. - kubernetes.io/pvc-protection
  523. volumeMounts: []
  524. volumes: []
  525. nodeSelector: {}
  526. tolerations: []
  527. affinity: {}

2.3 安装 JumpServer

  1. helm install jms-k8s jumpserver/jumpserver -n default -f values.yaml

2.4 卸载 JumpServer

  1. helm uninstall jms-k8s -n default