gitpod Self-Hosted安装前的先导知识
Note:Gitpod不是一个类似于web shop app的简单的Kubernetes应用。它更像是一个基础设施工具,类似于一个构建系统,它大量利用 Kubernetes 内部来构建和部署映像、控制 Kubernetes 容器(工作区)等。这就是为什么它在 Kubernetes 中需要比简单的 Web 应用程序更多的权限。
1. Kubernetes 专业知识
2. 兼容的 Kubernetes 集群
Gitpod 是一个 Kubernetes 应用程序,它大量使用各种 Kubernetes 功能。强烈建议有足够的 Kubernetes 经验才能安装 Gitpod。这些文档希望您能够自行创建和维护符合我们要求的 Kubernetes 集群。
2.1 集群要求
Kubernetes 集群必须具有应用了以下标签的节点:
gitpod.io/workload_meta=true
gitpod.io/workload_ide=true
gitpod.io/workload_workspace_services=true
gitpod.io/workload_workspace_regular=true
gitpod.io/workload_workspace_headless=true
以下是每个节点上预期的组件:
- Ubuntu Linux
- Calico for the networking overlay and network policy
- Containerd
- At least 4 vCPU and 16GB of RAM
Kubernetes 特权要求:
Kubernetes集群必须允许gitpod使用特权pods,因为gitpod以来这些权限提供workspace的独立性
负载均衡器要求:
Gitpod 使用负载均衡器类型的服务来公开桌面 IDE 使用的 Gitpod 仪表板、基于浏览器的 IDE 和 SSH 连接。 Kubernetes 集群必须能够为负载均衡器类型的服务预置第 4 层或第 7 层负载均衡器,这些服务可以将 HTTP(S) 连接路由到 Gitpod 服务。如果您打算使用桌面 IDE 或 SSH 连接到工作区,则集群还必须能够预置可将 SSH 连接路由到 Gitpod 服务的第 4 层负载均衡器。
本次任务主要是基于Azure的Kubernetes:参考链接
Bucket Storage
默认情况下,MinIO 安装在群集中以存储静态内容并备份群集内映像注册表。在安装过程中,您还可以将 Gitpod 配置为使用 S3 等外部存储提供程序。
Database
Gitpod使用MySQL来存储用户数据。默认情况下,Gitpod 内置了一个 MySQL 数据库,数据使用 Kubernetes PersistentVolume 存储。对于生产设置,建议运行自己的 MySQL 数据库(版本 v5.7 或更高版本)。可以在安装过程中配置使用哪个数据库。
镜像仓库
Gitpod 依靠映像注册表来存储用于启动工作区的映像。默认情况下,群集中会安装由 MiniIO 支持的基于 docker 的映像注册表(可以在安装过程中进行配置)。但是,Gitpod 也与任何实现 Docker Registry HTTP API V2 规范的注册表兼容。
源头控制管理系统
Gitpod希望连接到源代码控制管理系统(SCM),如GitLab才能运行。您可以在“集成”部分找到有关支持哪些 SCM 以及如何连接到它们的更多信息。首次访问 Gitpod 安装后,还将指导您连接 SCM。
3. Cert-Manager
必须先在集群中安装证书管理器,然后才能安装 Gitpod。它用于创建和管理保护各种内部 Gitpod 组件之间通信所需的证书。例如,它还可用于从Let’s Encrypt获取Gitpod实例的TLS证书。有关如何安装它的证书管理器文档,请考虑cert-manager - cert-manager Documentation。
4. DNS设置
对于 Gitpod 安装,您需要一个正确配置的域。域本身和通配符子域 *.example.com
、*.ws.example.com
(将 example.com 替换为 Gitpod 域)需要指向集群入口。
5. Gitpod product license
安装Gitpod需要一个license,license获取地址:Community License (gitpod.io)