目录

写在前面

极狐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实例:

helm部署java helm部署gitlab_git

使用上述密码以及 root 用户名即可登录极狐GitLab实例:

helm部署java helm部署gitlab_git_02

接下来需要修改初始密码:


如何更改极狐GitLab初始密码


至此,在 Kubernetes 上成功安装了极狐GitLab实例,接下来就可以开启极狐GitLab DevOps 之旅了。

正如开头所说,如果是生产级别的使用,需要根据每个公司的具体场景需求来做一些额外的配置,比如 LDAP、SMTP 等,这些也只需要修改 values.yaml 文件进行安装即可。