准备 GKE 资源

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

noteGoogle 提供了在 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 集群实例所在区域名称的扩展名(abcb
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