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

持续集成,持续部署,快速响应市场变化
Helm通过“charts”(即预配置的Kubernetes资源包)简化了应用的部署和管理。对于GitLab这样的复杂应用,Helm提供了一个预先配置好的chart,使得部署变得异常简单。你只需几个命令,就能在Kubernetes集群上部署一个完整的GitLab实例。
1、kubernets+helm环境已正常运行
2、Redis运行正常
3、Postgresql运行正常
4、持久化(StorageClass)已配置
5、nginx-ingress运行正常
6、certmanager运行正常
Tip:以上服务往前都有介绍过。如有不清楚,请翻阅过往文章。
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
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

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





