目录
写在前面
极狐GitLab 在 Kubernetes 上的安装
前提条件
Chart 准备
values.yaml 定制
Helm 安装
在前面的文章中分别演示了如何用安装包、 docker 在不同 OS(Ubuntu、CentOS)上安装和运行极狐GitLab实例,以及极狐GitLab Runner 的各种花式玩法。详细内容可以查看公众号文章极狐GitLab安装系列教程大合集(附视频)。
每一种玩法都有相应的视频,而且相应的文章、视频都在极狐GitLab相关的媒体账号下,感兴趣的小伙伴可以扫描下面的极狐GitLab媒体账号合集,来关注不同的内容呈现形式:
写在前面
本文的主要目的是演示极狐GitLab在 Kubernetes 上的安装使用。如果要用云原生的方式安装生产可用的极狐GitLab实例,需要做好相应的规划,诸如 Kubernetes 集群的高可用性、极狐GitLab不同组件的高可用性、数据的可靠性、数字证书配置等等,如果有需要可以联系极狐GitLab专业团队获取相应的帮助。
极狐GitLab 在 Kubernetes 上的安装
前提条件
- 一个运行良好的 Kubernetes 集群,版本为 1.16 到 1.21(本文用单节点集群)
- kubectl 的版本为 1.16 或更高
- Helm v3(3.3.1 或更高版本)
- 极狐GitLab Helm Chart(已经上线,可查看 https://artifacthub.io/packages/helm/gitlab-jh/gitlab,同时在官网文档 https://docs.gitlab.cn/charts 中有详细使用指南)
本文演示的环境信息如下:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
10.0.0.16 Ready <none> 24h v1.20.6-tke.12
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5", GitCommit:"aea7bbadd2fc0cd689de94a54e5b7b758869d691", GitTreeState:"clean", BuildDate:"2021-09-15T21:10:45Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"20+", GitVersion:"v1.20.6-tke.12", GitCommit:"1cb721e6058b081fee879989b8616081cf147bb6", GitTreeState:"clean", BuildDate:"2022-01-14T02:05:16Z", GoVersion:"go1.15.10", Compiler:"gc", Platform:"linux/amd64"}
$ helm version
version.BuildInfo{Version:"v3.6.3", GitCommit:"d506314abfb5d21419df8c7e7e68012379db2354", GitTreeState:"clean", GoVersion:"go1.16.5"}
Chart 准备
先要添加极狐GitLab的 Helm Repo
$ helm repo add jh-gitlab https://charts.gitlab.cn/
"jh-gitlab" has been added to your repositories
查看是否添加成功:
$ helm repo list
NAME URL
jh-gitlab https://charts.gitlab.cn/
查看极狐GitLab Helm Repo 包含的内容:
$ helm search repo jh-gitlab
NAME CHART VERSION APP VERSION DESCRIPTION
jh-gitlab/gitlab 5.7.0 14.7.0 Web-based Git-repository manager with wiki and ...
可以看到极狐GitLab Chart 的版本是 5.7.0,对应的极狐GitLab版本是 14.7.0。
values.yaml 定制
由于极狐GitLab包含多个组件,包括核心组件(诸如 Registry、Gitaly 等)、可选依赖组件(诸如 PostgreSQL、Redis 等)、可选附件组件(Prometheus、Grafana 等),整体的 values.yaml 文件比较复杂,详细内容可以查看极狐GitLab Helm Chart values.yaml 文件。
本次演示所用的 values.yaml 文件内容如下:
gitlab:
gitaly:
persistence:
size: 10Gi
postgresql:
persistence:
size: 10Gi
image:
tag: 12.7.0
redis:
master:
persistence:
size: 10Gi
minio:
persistence:
size: 10Gi
prometheus:
install: false
gitlab-runner:
install: false
文件对于要做数据持久化的一些组件的 PVC 做了一些限制,同时 disable 了 prometheus 和 Runner 的安装(Runner 的安装非常灵活,可以查看文章开头所提的极狐GitLab 安装大合集文章)。接下来就可以用这个 values.yaml 文件来安装极狐GitLab实例了。
上述文件只做演示用,实际实践需要根据自己的需求来决定安装哪些组件以及 PVC 的大小。
Helm 安装
先创建一个名为 jh 的 namespace:
$ kubectl create ns jh
使用 helm install 命令即可完成安装:
$ helm install jh jh-gitlab/gitlab --namespace jh --version 5.7.0 --set global.hosts.domain=xiaomage.cn,certmanager-issuer.email=jhma@gitlab.cn -f jh-values.yaml
NAME: jh
LAST DEPLOYED: Thu Jan 27 21:24:23 2022
NAMESPACE: jh
STATUS: deployed
REVISION: 1
NOTES:
NOTICE: The minimum required version of PostgreSQL is now 12. See https://gitlab.com/gitlab-org/charts/gitlab/-/blob/master/doc/installation/upgrade.md for more details.
Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=helm&release=14-7
NOTICE: The in-chart NGINX Ingress Controller has the following requirements:
- Kubernetes version must be 1.19 or newer.
- Ingress objects must be in group/version `networking.k8s.io/v1`.
上述命令在 jh namespace 下,以 jh-gitlab/gitlab 为 Chart 安装了一个名为 jh 的 Release,可以查看极狐GitLab 相关组件的 pod 状态:
$ kubectl -n jh get pods
NAME READY STATUS RESTARTS AGE
jh-certmanager-65f6db7b98-cs28b 1/1 Running 0 2m34s
jh-certmanager-cainjector-7547dc9f6c-mktb6 1/1 Running 0 2m34s
jh-certmanager-webhook-f5f7cb774-n4m5f 1/1 Running 0 2m34s
jh-gitaly-0 1/1 Running 0 2m31s
jh-gitlab-exporter-578fcbd446-vc2sv 1/1 Running 0 2m34s
jh-gitlab-shell-79656578b-4xcfg 1/1 Running 0 2m34s
jh-gitlab-shell-79656578b-m8zg7 1/1 Running 0 2m16s
jh-issuer-1-svljr 0/1 Completed 0 2m31s
jh-migrations-1-4nm4m 0/1 Completed 0 2m30s
jh-minio-7749cb9b5f-6mvgq 1/1 Running 0 2m33s
jh-minio-create-buckets-1-cvzgk 0/1 Completed 0 2m30s
jh-nginx-ingress-controller-7c755cdd7f-kgmg4 1/1 Running 0 2m33s
jh-nginx-ingress-controller-7c755cdd7f-zvh8t 1/1 Running 0 2m33s
jh-nginx-ingress-defaultbackend-7c9dc8695b-w6mfj 1/1 Running 0 2m33s
jh-postgresql-0 2/2 Running 0 2m31s
jh-redis-master-0 2/2 Running 0 2m31s
jh-registry-69687b758b-2c5z4 1/1 Running 0 2m32s
jh-registry-69687b758b-gvt6f 1/1 Running 0 2m16s
jh-sidekiq-all-in-1-v2-58ff448759-gpp62 1/1 Running 0 2m34s
jh-toolbox-78b4b78498-qtlnv 1/1 Running 0 2m33s
jh-webservice-default-6db8bc57d9-cdpmh 2/2 Running 0 2m33s
jh-webservice-default-6db8bc57d9-flh2k 2/2 Running 0 2m16s
查看 ing:
$ kubectl -n jh get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
jh-minio jh-nginx minio.xiaomage.cn 124.156.122.184 80, 443 2m51s
jh-registry jh-nginx registry.xiaomage.cn 124.156.122.184 80, 443 2m51s
jh-webservice-default jh-nginx gitlab.xiaomage.cn 124.156.122.184 80, 443 2m51s
可以用 https://gitlab.xiaomage.cn 来登陆拉起的极狐GitLab实例:
使用上述密码以及 root 用户名即可登录极狐GitLab实例:
接下来需要修改初始密码:
如何更改极狐GitLab初始密码
至此,在 Kubernetes 上成功安装了极狐GitLab实例,接下来就可以开启极狐GitLab DevOps 之旅了。
正如开头所说,如果是生产级别的使用,需要根据每个公司的具体场景需求来做一些额外的配置,比如 LDAP、SMTP 等,这些也只需要修改 values.yaml 文件进行安装即可。