K8S集群部署Gitlab代码仓库

0 阅读5分钟

关注公众号「Linux 容器运维」,回复【对应关键词】(如 docker/k8s/linux/ 面试),即可获取完整版干货,复制到生产环境直接使用~ 更多内容已同步至【公众号官方合集】,点击公众号主页「合集」→「kubernetes」,即可查看全部最新内容,持续更新中~


介绍

本次所有操作都是在K8S 1.26.14 上面操作。gitlab 安装包全部采用官方安装教程,需要用到的组件安装方法如下。

  • ingress 控制器安装方法点击跳转
  • ceph 存储安装方法点击跳转
  • Helm 包管理工具安装方法点击跳转,这个估计是有最先版本,看自己需要就行。
  • gitlab 官网点击跳转
  • Gitlab 安装的是当前的最新版本 17.3.1

安装说明

  • 默认 Helm 图表配置不适用于生产(我是学习环境部署的)。
  • 建议K8S集群总共至少有 8 个虚拟 CPU 和 10 GB RAM(官网写的30G以上的RAM,其实学习环境用不到)。
  • 有部分docker镜像可能需要科学上网才可以下载(有需要可以私信我)。

准备工作

设置ceph存储为默认存储

[root@master01 ~]# kubectl get sc rook-ceph-rbd 
NAME                      PROVISIONER                  RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
rook-ceph-rbd (default)   rook-ceph.rbd.csi.ceph.com   Retain          Immediate           true                   104d

修改为集群默认存储

kubectl edit sc rook-ceph-rb

这里仅展示部分代码

allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations: ## 主要添加下面这个注解,添加完保存退出即可。
    storageclass.kubernetes.io/is-default-class: "true"
  name: rook-ceph-rbd
parameters:
  clusterID: rook-ceph

将 GitLab Helm 存储库添加到helm的配置中:

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

下载gitlab安装包

helm pull gitlab/gitlab

下载好以后解压安装包

修改配置

如需要更详细配置请参考官网

vim ./gitlab/values.yaml

## 修改 51 行为 edition: ce ,默认是 ee 也就是企业版。
## 修改 63 行为 domain: example.com  修改为自己需要的域名。
## 修改 79 行为 configureCertmanager: false 默认是true,也就是自动生成域名证书,因为我自己有证书所以设置为false。
## 修改 85 86 87 行注意缩紧。
    tls:
      enabled: true
      secretName: gitlab.example.cn  ## 这个是集群的的默认证书名字,也可根据需要自己创建证书。
## 923和927行 全部修改为 false ,管理证书用的,我是用自己的证书用不到这个。
## 1134 行修改为 false 监控 gitlab用的。
## 1273 行修改为 false gitlab自己的cicd服务,用不到就关闭了。

开始安装Gitlab

全部修改好以后开始安装

## 需要在解压目录里面执行下面的命令,-n  指定是K8S 命名空间的名字,自己按需修改即可。
## 有一部分docker镜像是下载不了的,需要科学上网。
helm install gitlab -n gitlabs ./

安装好以后查看服务是否正常

[root@master01 gitlab]# kubectl get po -n gitlabs 
NAME                                               READY   STATUS    RESTARTS        AGE
gitlab-gitaly-0                                    1/1     Running   0               4h51m
gitlab-gitlab-exporter-8485cb6756-txzdj            1/1     Running   0               4h51m
gitlab-gitlab-shell-77b68487c8-qm7sq               1/1     Running   0               4h51m
gitlab-gitlab-shell-77b68487c8-zczfr               1/1     Running   0               4h51m
gitlab-kas-7b568b57d5-rznqv                        1/1     Running   3 (4h50m ago)   4h51m
gitlab-kas-7b568b57d5-ssnb6                        1/1     Running   3 (4h50m ago)   4h51m
gitlab-minio-7748b7fb5f-klqmd                      1/1     Running   0               4h51m
gitlab-nginx-ingress-controller-768649c56c-sm65k   1/1     Running   0               4h51m
gitlab-nginx-ingress-controller-768649c56c-trghh   1/1     Running   0               4h51m
gitlab-postgresql-0                                2/2     Running   0               4h51m
gitlab-redis-master-0                              2/2     Running   0               4h51m
gitlab-registry-55c4cf5884-qr9rv                   1/1     Running   0               4h51m
gitlab-registry-55c4cf5884-skdjh                   1/1     Running   0               4h51m
gitlab-sidekiq-all-in-1-v2-5c44c6c7f7-jmt68        1/1     Running   3 (4h49m ago)   4h51m
gitlab-toolbox-7d5c7b58bc-7vvdw                    1/1     Running   0               4h51m
gitlab-webservice-default-566b849499-rxz9w         2/2     Running   4 (4h49m ago)   4h51m
gitlab-webservice-default-566b849499-xvbvm         2/2     Running   4 (4h48m ago)   4h51m

查看登陆域名

[root@master01 gitlab]# kubectl get ing -n gitlabs 
NAME                        CLASS          HOSTS                   ADDRESS   PORTS     AGE
gitlab-kas                  gitlab-nginx   kas.example.cn                    80, 443   4h52m
gitlab-minio                gitlab-nginx   minio.example.cn                  80, 443   4h52m
gitlab-registry             gitlab-nginx   registry.example.cn               80, 443   4h52m
gitlab-webservice-default   gitlab-nginx   gitlab.example.cn                 80, 443   4h52m

将域名添加到host文件即可访问,用户名:root , 密码获取方式如下:

kubectl get secret -n gitlabs  gitlab-gitlab-initial-root-password -ojsonpath='{.data.password}' | base64 --decode ; echo

登陆成功以后就可以修改密码了。到此部署完成

发现问题

按照上面部署完成以后不能直接用git clone 克隆代码,解决办法如下:

修改SSH服务默认端口为其他端口,比如222,将ssh服务默认的22端口给gitlab服务使用即可正常下载。

vim /etc/ssh/sshd_config
systemctl restart sshd 

修改Gitlab服务

kubectl edit svc -n gitlabs gitlab-nginx-ingress-controller
## 仅展示部分代码
  - name: gitlab-shell
    nodePort: 22     ##  将 NodePort 端口修改为 22
    port: 22
    protocol: TCP
    targetPort: gitlab-shell
  selector:
    app: nginx-ingress
    component: controller
    release: gitlab
  sessionAffinity: None
  type: NodePort   ## 修改此处为 NodePort

修改好以后保存退出即可。