Gitlab 简介

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它由Ruby写成。后来,一些部分用Go语言重写,现今并在国内外大中型互联网公司广泛使用。

git、gitlab、GitHub的简单区别
  • git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面
  • gitlab 是一个基于git实现的在线代码仓库软件,提供web可视化管理界面,通常用于企业团队内部协作开发
  • github 是一个基于git实现的在线代码托管仓库,亦提供可视化管理界面,同时免费账户和提供付费账户,提供开放和私有的仓库,大部分的开源项目都选择github作为代码托管仓库

Gitlab 部署

  • gitlab的helm的配置清单
helm  fetch stable/gitlab-ce
tar xf gitlab-ce-0.2.1.tgz
  • 集群中的 StorageClass
# 查询集群有哪些可用的 StorageClass
[root@gitlab-ce]# kubectl get sc
NAME                      PROVISIONER                  RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)      rancher.io/local-path        Delete          WaitForFirstConsumer   false                  4d21h
rook-ceph-retain-bucket   ceph.rook.io/bucket          Retain          Immediate              false                  4d2h
rook-ceph-block           rook-ceph.rbd.csi.ceph.com   Delete          Immediate              false                  4d

Rook Ceph 部署文档: https://www.cnblogs.com/vpc123/articles/14397126.html

  • 配置 PV & PVC
    修改 helm 文件中所有的 values.yaml 中存储的配置,包括子 charts 中的配置如果使用到了存储,就改成本地的动态存储即可:

  • Helm 部署
helm install -n 命名空间 gitlab-ce gitlab-ce
helm status gitlab-ce
# 设置访问地址
helm upgrade gitlab-ce --set externalUrl=http://your-domain.com stable/gitlab-ce
# 将gitlab的svc改成nodeport(毕竟没有使用SLB服务)
kubectl  patch svc  gitlab-ce  -p  '{"spec":{"type":"NodePort"}}'

  • gitlab的ingress
    Ingress 模板:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{ .Values.ingress.name }}
  namespace: {{ .Release.Namespace }}
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: {{ .Values.ingress.host }}
    http:
      paths:
      - backend:
          serviceName: {{ .Values.service.name }}
          servicePort: {{ .Values.global.nginx.port }}

查询 gitlab 的 service 进行服务暴露:

gitlab-ingress.yaml 文件如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gitlab
  namespace: default
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: traefik.gitlab.io 
    http:
      paths:
      - backend:
          serviceName: gitlab-ce-gitlab-ce
          servicePort: 80
kubectl apply -f gitlab-ingress.yaml
kubectl get ingress -A | grep git

注: 更改 helm 中的 gitlab 地址同 ingress 对应上,如果对应不上,是没有办法访问的

  • gitlab页面访问

拓展阅读

gitlab & svn 对比: https://blog.csdn.net/xb565517830/article/details/80742073
gitlab 的参考命令: https://www.cnblogs.com/ray-mmss/p/10861703.html
helm 化 gitlab 参考地址: https://github.com/vpc123/CloudMiddleware/tree/main/helm/gitlab-ce

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐