Note:Gitpod不是一个类似于web shop app的简单的Kubernetes应用。它更像是一个基础设施工具,类似于一个构建系统,它大量利用 Kubernetes 内部来构建和部署映像、控制 Kubernetes 容器(工作区)等。这就是为什么它在 Kubernetes 中需要比简单的 Web 应用程序更多的权限。

1. Kubernetes 专业知识

  • 一些k8s基础知识【官网doc

  • 3小时快速上手+实战视频,这个量力而行,很多需要本地内存支持或者云端氪金【视频地址

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)