暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【技术突破】Helm部署GitLab:开启你的DevOps超速之旅!

Linux运维智行录 2024-12-10
80

在当今的软件开发领域,快速迭代和高效的团队协作成为了企业成功的关键。作为一款集成了CI/CD、问题跟踪和项目管理功能的全能型平台,GitLab已经成为众多开发者心中的理想选择。然而,对于想要自建GitLab实例的企业和个人来说,传统的安装配置过程往往复杂且耗时。现在,借助Kubernetes及其应用包管理器Helm的力量,这一切变得异常简单。本文将带您了解如何利用Helm一键部署GitLab,让您的代码管理和开发流程更加顺畅高效。

持续集成,持续部署,快速响应市场变化


01
Helm与GitLab的完美结合

Helm通过“charts”(即预配置的Kubernetes资源包)简化了应用的部署和管理。对于GitLab这样的复杂应用,Helm提供了一个预先配置好的chart,使得部署变得异常简单。你只需几个命令,就能在Kubernetes集群上部署一个完整的GitLab实例。


02
部署前的准备

1、kubernets+helm环境已正常运行

2、Redis运行正常

3、Postgresql运行正常

4、持久化(StorageClass)已配置

5、nginx-ingress运行正常

6、certmanager运行正常

Tip:以上服务往前都有介绍过。如有不清楚,请翻阅过往文章。


03
部署GitLab

1、创建postgresql用户以及库

$ psql -h 172.139.20.188 -p 9999 
Password for user postgres:
psql (14.10)
Type "help" for help.

postgres=# CREATE USER gitlab WITH PASSWORD '123456';

postgres=# CREATE DATABASE gitlab_production;
CREATE DATABASE

postgres=# ALTER DATABASE gitlab_production OWNER TO gitlab;
ALTER DATABASE


2、下载gilab chart包

$ sudo helm pull oci://core.jiaxzeng.com/plugins/gitlab --version 7.11.10 --untar --untardir etc/kubernetes/addons/
Pulled: core.jiaxzeng.com/plugins/gitlab:7.11.10
Digest: sha256:f92c7098ca2f0787a1ed078bba1032f1450ba4871e8ca06548cd6c89d67cdf08


3、创建gitlab配置文件

$ cat <<'EOF' | sudo tee etc/kubernetes/addons/gitlab-values.yaml > dev/null
global:

 edition: ce

 hosts:

   domain: jiaxzeng.com

   https: false

 psql:

   host: 172.139.20.188

   port: 9999

   username: gitlab

   database: gitlab_production

   password:

     secret: gitlab-password

     key: postgres

 redis:

   host: 172.139.20.199

   port: 6379

   auth:

     secret: gitlab-password

     key: redis

 ingress:

   class: nginx

   configureCertmanager: false

   annotations:

     cert-manager.io/cluster-issuer: ca-cluster-issuer

 monitoring:

   enabled: true

 certificates:

   image:

     repository: core.jiaxzeng.com/library/gitlab/certificates

 kubectl:

   image:

     repository: core.jiaxzeng.com/library/gitlab/kubectl

 gitlabBase:

   image:

     repository: core.jiaxzeng.com/library/gitlab/gitlab-base

 communityImages:

   migrations:

     repository: core.jiaxzeng.com/library/gitlab/gitlab-toolbox-ce

   sidekiq:

     repository: core.jiaxzeng.com/library/gitlab/gitlab-sidekiq-ce

   toolbox:

     repository: core.jiaxzeng.com/library/gitlab/gitlab-toolbox-ce

   webservice:

     repository: core.jiaxzeng.com/library/gitlab/gitlab-webservice-ce

   workhorse:

     repository: core.jiaxzeng.com/library/gitlab/gitlab-workhorse-ce


shared-secrets:

 selfsign:

   image:

     repository: core.jiaxzeng.com/library/gitlab/cfssl-self-sign


gitlab:

 gitaly:

   image:

     repository: core.jiaxzeng.com/library/gitlab/gitaly

   persistence:

     storageClass: ceph-fs-storage

 gitlab-exporter:

   enabled: true

   image:

     repository: core.jiaxzeng.com/library/gitlab/gitlab-exporter

 gitlab-shell:

   image:

     repository: core.jiaxzeng.com/library/gitlab/gitlab-shell

 kas:

   image:

     repository: core.jiaxzeng.com/library/gitlab/gitlab-kas

   ingress:

     tls:

       secretName: kas-cert-secret

 webservice:

   ingress:

     tls:

       secretName: gitlab-cert-secret


minio:

 persistence:

   storageClass: ceph-fs-storage

 image: core.jiaxzeng.com/library/gitlab/minio

 minioMc:

   image: core.jiaxzeng.com/library/gitlab/mc

 ingress:

   tls:

     secretName: minio-cert-secret


gitlab-runner:

 image:

   registry: core.jiaxzeng.com

   image: library/gitlab/gitlab-runner

 volumeMounts:

 - mountPath: home/gitlab-runner/.gitlab-runner/certs

   name: runner-certs

 volumes:

 - secret:

     secretName: gitlab-cert-secret

     items:

     - key: tls.crt

       path: gitlab.jiaxzeng.com.crt

   name: runner-certs

 runners:

   privileged: true


registry:

 enabled: true

 image:

   repository: core.jiaxzeng.com/library/gitlab/gitlab-container-registry

 ingress:

   tls:

     secretName: registry-cert-secret


nginx-ingress:

 enabled: false

certmanager:

 install: false

postgresql:

 install: false

redis:

 install: false

prometheus:

 install: false

EOF


4、gitlab连接redis、postgresql的密码

$ kubectl -n gitlab create secret generic gitlab-password --from-literal=redis=123456 --from-literal=postgres=123456
secret/gitlab-password created


5、部署gitlab

$ kubectl create namespace gitlab

$ helm -n gitlab install gitlab -f etc/kubernetes/addons/gitlab-values.yaml etc/kubernetes/addons/gitlab


04
验证服务

1、查看pod的状态

$ kubectl -n gitlab get pod
NAME                                         READY   STATUS             RESTARTS       AGE
gitlab-gitaly-0                              1/1     Running            0              77m
gitlab-gitlab-exporter-74c6bc4cdf-bnnpj      1/1     Running            0              77m
gitlab-gitlab-runner-cbcf4564f-6wmdm         1/1     Running            0              77m
gitlab-gitlab-shell-55dcb87759-hfn4b         1/1     Running            0              76m
gitlab-gitlab-shell-55dcb87759-zfmdj         1/1     Running            0              77m
gitlab-kas-569f4f557f-2p6w8                  1/1     Running            0              77m
gitlab-kas-569f4f557f-nlqnd                  1/1     Running            0              76m
gitlab-migrations-1c03495-hrch8              0/1     Completed          0              77m
gitlab-minio-69cdcb94d5-jjfpd                1/1     Running            0              77m
gitlab-minio-create-buckets-3c122f0-mkdnd    0/1     Completed          0              87m
gitlab-minio-create-buckets-ea296a0-smjvz    0/1     Completed          0              77m
gitlab-registry-55bbdff779-5rwx4             1/1     Running            0              76m
gitlab-registry-55bbdff779-6jc2p             1/1     Running            0              77m
gitlab-sidekiq-all-in-1-v2-5d5c59645-rcfk9   1/1     Running            0              77m
gitlab-sidekiq-all-in-1-v2-5d5c59645-zj7kw   1/1     Running            0              75m
gitlab-toolbox-b98f86d5b-zjc7g               1/1     Running            0              77m
gitlab-webservice-default-77669c555-542p5    2/2     Running            0              77m
gitlab-webservice-default-77669c555-gjqpp    2/2     Running            0              76m

2、浏览访问gitlab


05
总结

综上所述,通过Helm部署GitLab不仅简化了传统安装过程中遇到的各种挑战,还赋予了用户更多的自主权和灵活性。在这个过程中,我们见证了从基础环境的搭建到最终个性化配置的完整流程,体验到了现代化工具带来的便利。对于那些渴望提升团队协作效率、加速DevOps转型的企业和个人而言,掌握这项技能无疑是迈向成功的一步。希望今天的分享能激发您的灵感,也期待更多人加入到这个充满创新精神的技术社区中来,共同探索无限可能。


别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

END

文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论