准备 EKS 资源
对于功能齐全的 GitLab 实例,在部署 gitlab
图表之前,您需要一些资源。
创建 EKS 集群
为了更轻松地开始,提供了一个脚本来自动创建集群。或者,也可以手动创建集群。
先决条件:
使用脚本创建集群
bootstrap 脚本 已创建,用于自动化 EKS 用户的大部分设置过程。在执行脚本之前,您需要克隆这个仓库。
使用脚本可以:
- 创建新的 EKS 集群。
- 设置
kubectl
,并将其连接到集群。
为了进行身份验证,eksctl
使用与 AWS 命令行相同的选项。 请参阅 AWS 文档了解如何使用环境变量或配置文件。
脚本从环境变量中读取各种参数,或者命令行参数和一个参数
up
或 down
分别用于 bootstrap 和清理。
下表描述了所有变量。
变量 | 描述 | 默认值 |
---|---|---|
REGION
| 您的集群所在的 Region | us-east-2
|
CLUSTER_NAME
| 集群名称 | gitlab-cluster
|
CLUSTER_VERSION
| 您的 EKS 集群的版本 | 1.21
|
NUM_NODES
| 要求的节点数量 | 2
|
MACHINE_TYPE
| 要部署的节点类型 | m5.xlarge
|
通过传入所需的参数来运行脚本。 它可以使用默认参数。
./scripts/eks_bootstrap_script up
该脚本还可用于清理创建的 EKS 资源:
./scripts/eks_bootstrap_script down
手动创建集群
- 我们建议使用 8vCPU 和 30GB RAM 的集群。
有关最新的说明,请参考 EKS 入门指南。
管理员可能还需要考虑新的 AWS Service Operator for Kubernetes 来简化这个过程。
持久卷管理
在 Kubernetes 上管理卷声明有两种方法:
- 手动创建持久卷。
- 通过动态配置自动创建持久卷。
我们目前建议使用手动配置持久卷。Amazon EKS 集群默认跨越多个区域。使用动态配置时,如果未配置为使用锁定到特定区域的 storage class,则会导致 pod 可能存在于与存储卷不同的区域中并且无法访问数据的情况。
需要在多个区域部署的管理员在定义他们的存储解决方案时,应该熟悉如何设置集群存储 并查看相关的 storage class 文档 。
外部访问
默认情况下,安装 GitLab Chart 将部署一个 Ingress,它将创建一个关联的 Elastic Load Balancer (ELB)。由于无法提前知道 ELB 的 DNS 名称,因此很难利用 Let’s Encrypt 自动提供 HTTPS 证书。
我们建议使用您自己的证书,然后使用 CNAME 记录将您想要的 DNS 名称映射到创建的 ELB。由于必须先创建 ELB,然后才能检索其主机名,因此请按照以下说明安装 GitLab。
下一步
一旦集群启动并运行,继续安装 chart。通过 global.hosts.domain
选项设置域名,但通过global.hosts.externalIP
选项省略静态 IP 设置,除非您打算使用现有的弹性IP。
安装 Helm 后,您可以使用以下命令获取 ELB 的主机名以放置在 CNAME 记录中:
kubectl get ingress/RELEASE-webservice-default -ojsonpath='{.status.loadBalancer.ingress[0].hostname}'
RELEASE
应该替换为 helm install <RELEASE>
中使用的版本名称。