KoKo 环境部署

1 KoKo 组件简述

Koko 是 Go 版本的 coco,重构了 coco 的 SSH/SFTP 服务和 Web Terminal 服务。

1.1 环境要求

NameKoKoGoNodeRedis Client
Versionv3.10.11.1816.5>= 6.0

1.2 选择部署方式

源代码部署使用 Release

  • 下载源代码。
  • 从项目网站下载 Source code.tar.gz 源代码,通过命令行中提取该存档:
  1. cd /opt
  2. mkdir /opt/koko-v3.10.1
  3. wget -O /opt/koko-v3.10.1.tar.gz https://github.com/jumpserver/koko/archive/refs/tags/v3.10.1.tar.gz
  4. tar -xf koko-v3.10.1.tar.gz -C /opt/koko-v3.10.1 --strip-components 1
  • 安装 Node。
  • Node 官方网站参考文档部署 Node.js,请根据 环境要求,通过命令行中判断是否安装完成。
  1. node -v

v16.5

  • 安装 Client 依赖。

Ubuntu 20.04

  1. apt-get update
  2. apt install software-properties-common
  3. add-apt-repository -y ppa:redislabs/redis
  4. apt-get install -y mariadb-client bash-completion redis-tools
  5. cd /opt
  6. mkdir /opt/kubectl-aliases
  7. wget http://download.jumpserver.org/public/kubectl_aliases.tar.gz -O kubectl_aliases.tar.gz
  8. tar -xf kubectl_aliases.tar.gz -C /opt/kubectl-aliases
  • 安装 Go。
  • Go 官方网站参考文档部署 golang,请根据 环境要求,通过命令行中判断是否安装完成:

Ubuntu 20.04

  1. cd /opt
  2. wget https://golang.google.cn/dl/go1.18.7.linux-amd64.tar.gz
  3. tar -xf go1.18.7.linux-amd64.tar.gz -C /usr/local/
  4. chown -R root:root /usr/local/go
  5. export PATH=/usr/local/go/bin:$PATH
  6. echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc
  1. go version

go version go1.18.7 linux/amd64

  • 编译。
OSArchCommand
Linuxamd64make linux
macOSamd64make darwin
  1. cd /opt/koko-v3.10.1
  2. make
  3. cp build/koko-v3.10.1-linux-amd64.tar.gz /opt

构建完成后, 生成在 build 目录下

  • 下载 Release 文件。
  • Github 网站上获取最新的 Release 副本。这些版本是最新代码的稳定快照。
OSArchName
Linuxamd64koko-v3.10.1-linux-amd64.tar.gz
Linuxarm64koko-v3.10.1-linux-arm64.tar.gz
linuxloong64koko-v3.10.1-linux-loong64.tar.gz
Darwinamd64koko-v3.10.1-darwin-amd64.tar.gz
Darwinarm64koko-v3.10.1-darwin-arm64.tar.gz

Linux/amd64Linux/arm64

  1. cd /opt
  2. wget https://download.jumpserver.org/public/kubectl-linux-amd64.tar.gz -O kubectl.tar.gz
  3. tar -xf kubectl.tar.gz
  4. mv kubectl /usr/local/bin/rawkubectl
  5. wget https://download.jumpserver.org/public/helm-v3.9.0-linux-amd64.tar.gz
  6. tar -xf helm-v3.9.0-linux-amd64.tar.gz
  7. mv linux-amd64/helm /usr/local/bin/rawhelm
  8. chmod 755 /usr/local/bin/rawkubectl /usr/local/bin/rawhelm
  9. chown root:root /usr/local/bin/rawkubectl /usr/local/bin/rawhelm
  10. rm -rf linux-amd64
  11. wget https://github.com/jumpserver/koko/releases/download/v3.10.1/koko-v3.10.1-linux-amd64.tar.gz
  12. tar -xf koko-v3.10.1-linux-amd64.tar.gz -C /opt
  13. cd koko-v3.10.1-linux-amd64
  14. mv kubectl /usr/local/bin/kubectl
  1. cd /opt
  2. wget https://download.jumpserver.org/public/kubectl-linux-arm64.tar.gz -O kubectl.tar.gz
  3. tar -xzf kubectl.tar.gz
  4. mv kubectl /usr/local/bin/rawkubectl
  5. wget https://download.jumpserver.org/public/helm-v3.9.0-linux-arm64.tar.gz
  6. tar -xf helm-v3.9.0-linux-arm64.tar.gz
  7. mv linux-arm64/helm /usr/local/bin/rawhelm
  8. chmod 755 /usr/local/bin/rawkubectl /usr/local/bin/rawhelm
  9. chown root:root /usr/local/bin/rawkubectl /usr/local/bin/rawhelm
  10. rm -rf linux-arm64
  11. wget https://github.com/jumpserver/koko/releases/download/v3.10.1/koko-v3.10.1-linux-arm64.tar.gz
  12. tar -xf koko-v3.10.1-linux-arm64.tar.gz -C /opt
  13. cd koko-v3.10.1-linux-arm64
  14. mv kubectl /usr/local/bin/kubectl

1.3 修改配置文件

  1. cp config_example.yml config.yml
  2. vi config.yml
  1. # 项目名称, 会用来向Jumpserver注册, 识别而已, 不能重复
  2. # NAME: {{ Hostname }}
  3. # Jumpserver项目的url, api请求注册会使用
  4. CORE_HOST: http://127.0.0.1:8080 # Core 的地址
  5. # Bootstrap Token, 预共享秘钥, 用来注册coco使用的service account和terminal
  6. # 请和jumpserver 配置文件中保持一致,注册完成后可以删除
  7. BOOTSTRAP_TOKEN: ******** # 和 Core config.yml 的值保持一致
  8. # 启动时绑定的ip, 默认 0.0.0.0
  9. BIND_HOST: 0.0.0.0
  10. # 监听的SSH端口号, 默认2222
  11. SSHD_PORT: 2222 # 使用 0.0.0.0:2222
  12. # 监听的HTTP/WS端口号,默认5000
  13. HTTPD_PORT: 5000 # 使用 0.0.0.0:5000
  14. # 项目使用的ACCESS KEY, 默认会注册,并保存到 ACCESS_KEY_STORE中,
  15. # 如果有需求, 可以写到配置文件中, 格式 access_key_id:access_key_secret
  16. # ACCESS_KEY: null
  17. # ACCESS KEY 保存的地址, 默认注册后会保存到该文件中
  18. # ACCESS_KEY_FILE: data/keys/.access_key
  19. # 设置日志级别 [DEBUG, INFO, WARN, ERROR, FATAL, CRITICAL]
  20. LOG_LEVEL: DEBUG # 开发建议设置 DEBUG, 生产环境推荐使用 ERROR
  21. # SSH连接超时时间 (default 15 seconds)
  22. # SSH_TIMEOUT: 15
  23. # 语言 [en,zh]
  24. # LANGUAGE_CODE: zh
  25. # SFTP的根目录, 可选 /tmp, Home其他自定义目录
  26. # SFTP_ROOT: /tmp
  27. # SFTP是否显示隐藏文件
  28. # SFTP_SHOW_HIDDEN_FILE: false
  29. # 是否复用和用户后端资产已建立的连接(用户不会复用其他用户的连接)
  30. # REUSE_CONNECTION: true
  31. # 资产加载策略, 可根据资产规模自行调整. 默认异步加载资产, 异步搜索分页; 如果为all, 则资产全部加载, 本地搜索分页.
  32. # ASSET_LOAD_POLICY:
  33. # zip压缩的最大额度 (单位: M)
  34. # ZIP_MAX_SIZE: 1024M
  35. # zip压缩存放的临时目录 /tmp
  36. # ZIP_TMP_PATH: /tmp
  37. # 向 SSH Client 连接发送心跳的时间间隔 (单位: 秒),默认为30, 0则表示不发送
  38. # CLIENT_ALIVE_INTERVAL: 30
  39. # 向资产发送心跳包的重试次数,默认为3
  40. # RETRY_ALIVE_COUNT_MAX: 3
  41. # 会话共享使用的类型 [local, redis], 默认local
  42. # SHARE_ROOM_TYPE: local
  43. # Redis配置
  44. # REDIS_HOST: 127.0.0.1 # 如果需要部署多个 koko, 需要通过 redis 来保持会话
  45. # REDIS_PORT: 6379
  46. # REDIS_PASSWORD:
  47. # REDIS_CLUSTERS:
  48. # REDIS_DB_ROOM:

1.4 启动 KoKo

  1. ./koko