Helm部署GitLab 14.0

环境信息

  1. Kubernetes:v1.20.6
  2. StorageClass:UFS
  3. Helm:v3.5.2

GitLib 14.x版本安装前检查工作

  1. 推荐至少预留 8vCPU 和 30GB Mem的资源
  2. 推荐 Redis 6.0 或者更高版本
  3. 依赖 PostgreSQL 13.x 或者更高版本

GitLib 14.x版本安装前准备工作

1. 申请通证书,

可以使用 https://keymanager.org/ 来申请 Let’s Encrypt 提供的免费泛域名证书

2. 创建域名证书 secret

kubectl create ns gitlab
kubectl create secret tls gitlib-secret \
    --cert=gitlab.crt \
    --key=gitlab.key \
    -n gitlab

3. 准备一个 Redis 实例

K8S集群内部署参考链接 Helm部署Redis

4. 准备一个 PostgreSQL 实例

K8S集群内署参考链接 Helm部署postgresql

5. 创建Gitlab使用的secret

定义一个Gitlab root账户管理密码,记录 Redis 认证密码,PostgreSQL DB 密码,将这些密码保存在名为gitlab-components-secret 的 secret 中

kubectl create secret generic gitlab-components-secret  \
--from-literal=gitlab="gitlabrootpwxxx" \
--from-literal=redispw="redispwxxxxx" \
--from-literal=pgpw="pgpwxxxx" \
-n gitlab

其中以上命令注释说明如下:

  • Gitlab root 密码: key: gitlab value: gitlabrootpwxxx
  • Redis 认证密码: key: redispw value: redispwxxxxx
  • PostgreSQL密码: key: pgpw value: pgpwxxxx

6. 同步海外源镜像

在国内环境部署应用,经常因为获取国外源站容器镜像超时,导致部署失败,可以提前将容器镜像同步到本地镜像仓库中,以自有镜像仓库uhub.service.ucloud.cn/ucloud_pts 为例,login仓库,执行命令: docker login uhub.service.ucloud.cn/ucloud_pts
需要同步镜像列表如下:

busybox:latest
gitlab/gitlab-runner:alpine-v14.0.0
minio/mc:RELEASE.2018-07-13T00-53-22Z
minio/minio:RELEASE.2017-12-28T01-21-00Z
registry.gitlab.com/gitlab-org/build/cng/gitaly:v14.0.5
registry.gitlab.com/gitlab-org/build/cng/kubectl:1.16.15
registry.gitlab.com/gitlab-org/build/cng/gitlab-shell:v13.19.0
registry.gitlab.com/gitlab-org/build/cng/gitlab-exporter:10.3.0
registry.gitlab.com/gitlab-org/build/cng/alpine-certificates:20191127-r2
registry.gitlab.com/gitlab-org/build/cng/gitlab-sidekiq-ce:v14.0.6
registry.gitlab.com/gitlab-org/build/cng/gitlab-task-runner-ce:v14.0.6
registry.gitlab.com/gitlab-org/build/cng/gitlab-webservice-ce:v14.0.6
registry.gitlab.com/gitlab-org/build/cng/gitlab-workhorse-ce:v14.0.6

关于docker pull tag push 操作可以参考:

7. 创建 imagePullSecrets

创建容器集群访问仓库地址 uhub.service.ucloud.cn/ucloud_pts,拉取镜像需要的 secret

kubectl create namespace gitlab
kubectl create secret docker-registry registry-secret-name \
        --namespace=db \
        --docker-server=uhub.service.ucloud.cn/ucloud_pts \
        --docker-username='xxxxxx' \
        --docker-password='xxxxxx'

8. 添加 Helm仓库

这里选用BitNami提供的chart仓库

helm repo add gitlab https://charts.gitlab.io/
helm repo update

9. 定义gitlab 配置,完成gitlab部署

cat > gitlab-values.yaml << EOF
global:
  edition: ce
  hosts:
    domain: onwalk.net
    https: true
    externalIP: 106.75.117.4 
  ingress:
    enabled: true
    class: nginx
    tls:
      enabled: true
      secretName: gitlib-secret
    configureCertmanager: false
  initialRootPassword:
    secret: gitlab-components-secret 
    key: gitlab
  minio:
    enabled: true
    image: uhub.service.ucloud.cn/ucloud_pts/minio
    imageTag: 'RELEASE.2017-12-28T01-21-00Z'
  communityImages:
    migrations:
      repository: uhub.service.ucloud.cn/ucloud_pts/gitlab-task-runner-ce
    sidekiq:
      repository: uhub.service.ucloud.cn/ucloud_pts/gitlab-sidekiq-ce
    task-runner:
      repository: uhub.service.ucloud.cn/ucloud_pts/gitlab-task-runner-ce
    webservice:
      repository: uhub.service.ucloud.cn/ucloud_pts/gitlab-webservice-ce
    workhorse:
      repository: uhub.service.ucloud.cn/ucloud_pts/gitlab-workhorse-ce
  psql:
    password:
      secret: gitlab-components-secret
      key: pgpw
    host: gitlab-db-postgresql 
    port: 5432
    username: postgres
    database: gitlab-db
  redis:
    password:
      enabled: true
      secret: gitlab-components-secret
      key: redispw 
    host: gitlab-cache-redis-master 
    port: 6379
  kubectl:
    image:
      repository: uhub.service.ucloud.cn/ucloud_pts/kubectl 
      tag: 1.16.15
      pullSecrets: 
       - name: registry-secret-name
  busybox:
    image:
      repository: uhub.service.ucloud.cn/ucloud_pts/busybox
      tag: latest
      pullSecrets: 
       - name: registry-secret-name
  certificates:
    image:
      repository: uhub.service.ucloud.cn/ucloud_pts/alpine-certificates 
      tag: 20191127-r2
      pullSecrets: 
       - name: registry-secret-name
registry:
  enabled: false
nginx-ingress:
  enabled: false
  tcpExternalConfig: "true"
  controller:
    image:
      repository: uhub.service.ucloud.cn/ucloud_pts/controller
      tag: v0.41.2
      digest: sha256:8aa4fda472ec83ae59fe0ce9720684d769ed277ff9bdcbb0169178dc9d1f8e85 
  defaultBackend:
    image:
      repository: uhub.service.ucloud.cn/ucloud_pts/defaultbackend-amd64 
      tag: 1.5
  imagePullSecrets:
    - name: registry-secret-name
prometheus:
  install: false
certmanager:
  install: false
redis:
  install: false
postgresql:
  install: false
gitlab-runner:
  enabled: true
  imagePullSecrets:
    - name: registry-secret-name
  image: uhub.service.ucloud.cn/ucloud_pts/gitlab-runner:alpine-v14.0.0
  gitlabUrl: https://gitlab.onwalk.net
  runnerRegistrationToken: vuAg5bjxKYp2bbzk26JU 
  runners:
    privileged: true
minio:
  pullSecrets: 
    - name: registry-secret-name
  image: uhub.service.ucloud.cn/ucloud_pts/minio
  imageTag: 'RELEASE.2017-12-28T01-21-00Z'
  minioMc:
    image: uhub.service.ucloud.cn/ucloud_pts/mc
    tag: RELEASE.2018-07-13T00-53-22Z 
gitlab:
  ingress: nginx
  gitlab-exporter:
    image:
      pullSecrets: 
        - name: registry-secret-name
      repository: uhub.service.ucloud.cn/ucloud_pts/gitlab-exporter
      tag: '10.3.0'
  gitaly:
    image:
      pullSecrets: 
        - name: registry-secret-name
      repository: uhub.service.ucloud.cn/ucloud_pts/gitaly
      tag: v14.0.5 
  gitlab-shell:
    image:
      pullSecrets: 
        - name: registry-secret-name
      repository: uhub.service.ucloud.cn/ucloud_pts/gitlab-shell
      tag: v13.19.0
EOF

helm upgrade --install  gitlab gitlab/gitlab -f gitlab-values.yaml -n gitlab

单独部署gitlab-runner

cat > gitlab-runner-value.yaml << EOF
enabled: true
imagePullSecrets:
  - name: registry-secret-name
image: uhub.service.ucloud.cn/ucloud_pts/gitlab-runner:alpine-v14.0.0
gitlabUrl: https://gitlab.onwalk.net
runnerRegistrationToken: vuAg5bjxKYp2bbzk26JU
runners:
  privileged: true
EOF
 helm upgrade --install ci-runner gitlab/gitlab-runner -f gitlab-runner-value.yaml -n gitlab

使用公共的 ingress-nginx 网关服务

需要开启 22 端口映射,可以在 ingress-value.yaml 文件追加如下配置:

tcp:
  22: "gitlab/gitlab-gitlab-shell:22"

然后执行更新即可:

helm upgrade --install ingress-nginx ingress/ingress-nginx \
-n ingress-nginx --values=ingress-value.yaml

参考

https://gitlab.com/gitlab-org/charts/gitlab/-/blob/master/doc/index.md#installation
https://docs.gitlab.com/runner/install/kubernetes.html
https://docs.gitlab.com/charts/advanced/external-nginx/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容