准备 GKE 资源

对于功能齐全的 GitLab 实例,在部署 gitlab chart 之前,您需要一些资源。以下是如何在 GitLab 中部署和测试这些 chart。

note Google 提供了在 Google Kubernetes Engine 上部署生产就绪 GitLab 的白皮书,包括所有步骤和外部资源配置。这些是本文档的替代品,部署的 chart 的表现略有不同。例如默认域名配置为 nip.io,这可能会由于 Let’s Encrypt 的速率限制而遇到问题。

创建 GKE 集群

为了更轻松地开始,提供了一个脚本来自动创建集群。或者,也可以手动创建集群。

先决条件:

使用脚本创建集群

一个 bootstrap 脚本已创建,自动化 GCP/GKE 上用户的大部分设置过程。

该脚本将:

  1. 创建一个新的 GKE 集群。
  2. 允许集群修改 DNS 记录。
  3. 设置 kubectl,并连接到集群。

该脚本从环境变量中读取各种参数以及分别用于 bootstrap 和清理的参数 updown

下表描述了所有变量。

变量 说明 默认值
REGION 您的集群所在的 Region us-central1
ZONE_EXTENSION 集群实例所在区域名称的扩展名(abc b
CLUSTER_NAME 集群名称 gitlab-cluster
CLUSTER_VERSION 您的 GKE 集群的版本 GKE 默认,查看 GKE 发版说明
MACHINE_TYPE 集群实例类型 n1-standard-4
NUM_NODES 需要的节点数量 2
AUTOSCALE_MIN_NODES 自动缩放器可以缩减到的最小节点数。 0
AUTOSCALE_MAX_NODES 自动缩放器可以扩展到的最大节点数。 NUM_NODES
PROJECT 您的 GCP 项目的 ID 无默认值,需要设置
ADMIN_USER 在设置期间分配集群管理员访问权限的用户 当前 gcloud 用户
RBAC_ENABLED 如果您知道您的集群是否启用了 RBAC,请设置此变量。 true
PREEMPTIBLE 更便宜,集群最多生存 24 小时。节点/磁盘上没有 SLA false
USE_STATIC_IP 为 GitLab 创建静态 IP,而不是使用托管 DNS 的临时 IP false
INT_NETWORK 要在此集群中使用的 IP 空间 default
SUBNETWORK 要在此集群中使用的子网 default

通过传入所需的参数来运行脚本。 它可以使用默认参数,除了需要的 PROJECT

PROJECT=<gcloud project id> ./scripts/gke_bootstrap_script.sh up

该脚本还可用于清理创建的 GKE 资源:

PROJECT=<gcloud project id> ./scripts/gke_bootstrap_script.sh down

集群创建完成后,继续创建 DNS 条目

手动创建集群

需要在 GCP 中创建两个资源,一个 Kubernetes 集群和一个外部 IP。

创建 Kubernetes 集群

要手动配置 Kubernetes 集群,请按照 GKE 说明

  • 我们推荐一个至少有 2 个节点的集群,每个节点有 4vCPU 和 15GB 的 RAM。
  • 记下集群的 Region,在以下步骤中将需要它。

创建外部 IP

需要外部 IP 才能访问您的集群。外部 IP 需要是区域性的,并且与集群本身位于同一区域。全局 IP 或集群区域外的 IP 不起作用

要创建固定 IP,运行以下命令:

gcloud compute addresses create ${CLUSTER_NAME}-external-ip --region $REGION --project $PROJECT

要获取新创建的 IP 的地址:

gcloud compute addresses describe ${CLUSTER_NAME}-external-ip --region $REGION --project $PROJECT --format='value(address)'

我们将在下一节中使用此 IP 与 DNS 名称绑定。

DNS 条目

如果您手动创建集群或在脚本创建中使用 USE_STATIC_IP 选项,您将需要一个公共域名,其中 A 记录通配符 DNS 条目指向我们刚刚创建的 IP。

按照 Google DNS 快速入门指南创建 DNS 条目。

下一步

一旦集群启动并运行,并且静态 IP 和 DNS 条目准备就绪,继续安装 chart