写点什么

在 Kubernetes 上安装和运行极狐 GitLab 实例

作者:极狐GitLab
  • 2022 年 1 月 28 日
  • 本文字数:3637 字

    阅读完需:约 12 分钟

在 Kubernetes 上安装和运行极狐GitLab实例

在前面的文章中分别演示了如何用安装包、 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 nodesNAME        STATUS   ROLES    AGE   VERSION10.0.0.16   Ready    <none>   24h   v1.20.6-tke.12 $ kubectl versionClient 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 versionversion.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 listNAME      URLjh-gitlab https://charts.gitlab.cn/
复制代码


查看极狐 GitLab Helm Repo 包含的内容:


$ helm search repo jh-gitlabNAME                CHART VERSION    APP VERSION    DESCRIPTIONjh-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.yamlNAME: jhLAST DEPLOYED: Thu Jan 27 21:24:23 2022NAMESPACE: jhSTATUS: deployedREVISION: 1NOTES: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 podsNAME                                               READY   STATUS      RESTARTS   AGEjh-certmanager-65f6db7b98-cs28b                    1/1     Running     0          2m34sjh-certmanager-cainjector-7547dc9f6c-mktb6         1/1     Running     0          2m34sjh-certmanager-webhook-f5f7cb774-n4m5f             1/1     Running     0          2m34sjh-gitaly-0                                        1/1     Running     0          2m31sjh-gitlab-exporter-578fcbd446-vc2sv                1/1     Running     0          2m34sjh-gitlab-shell-79656578b-4xcfg                    1/1     Running     0          2m34sjh-gitlab-shell-79656578b-m8zg7                    1/1     Running     0          2m16sjh-issuer-1-svljr                                  0/1     Completed   0          2m31sjh-migrations-1-4nm4m                              0/1     Completed   0          2m30sjh-minio-7749cb9b5f-6mvgq                          1/1     Running     0          2m33sjh-minio-create-buckets-1-cvzgk                    0/1     Completed   0          2m30sjh-nginx-ingress-controller-7c755cdd7f-kgmg4       1/1     Running     0          2m33sjh-nginx-ingress-controller-7c755cdd7f-zvh8t       1/1     Running     0          2m33sjh-nginx-ingress-defaultbackend-7c9dc8695b-w6mfj   1/1     Running     0          2m33sjh-postgresql-0                                    2/2     Running     0          2m31sjh-redis-master-0                                  2/2     Running     0          2m31sjh-registry-69687b758b-2c5z4                       1/1     Running     0          2m32sjh-registry-69687b758b-gvt6f                       1/1     Running     0          2m16sjh-sidekiq-all-in-1-v2-58ff448759-gpp62            1/1     Running     0          2m34sjh-toolbox-78b4b78498-qtlnv                        1/1     Running     0          2m33sjh-webservice-default-6db8bc57d9-cdpmh             2/2     Running     0          2m33sjh-webservice-default-6db8bc57d9-flh2k             2/2     Running     0          2m16s
复制代码


查看 ing:


$ kubectl -n jh get ingNAME                    CLASS      HOSTS                  ADDRESS           PORTS     AGEjh-minio                jh-nginx   minio.xiaomage.cn      124.156.122.184   80, 443   2m51sjh-registry             jh-nginx   registry.xiaomage.cn   124.156.122.184   80, 443   2m51sjh-webservice-default   jh-nginx   gitlab.xiaomage.cn     124.156.122.184   80, 443   2m51s
复制代码


可以用 https://gitlab.xiaomage.cn 来登陆拉起的极狐 GitLab 实例:



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



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


<iframe src="//player.bilibili.com/player.html?aid=549410227&bvid=BV1Hq4y1g7tz&cid=447981478&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
复制代码


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


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


发布于: 刚刚阅读数: 2
用户头像

极狐GitLab

关注

开源开放,人人贡献 2021.05.19 加入

开放式一体化DevOps平台,助力行业高速协同增长!

评论

发布
暂无评论
在 Kubernetes 上安装和运行极狐GitLab实例