k8s部署gitlab

该文描述了如何在Kubernetes集群中部署Gitlab,包括下载Docker镜像,创建Service暴露端口,定义StorageClass进行持久化存储,使用StatefulSet管理容器实例,设置环境变量配置Gitlab,以及创建Ingress实现外部访问。
摘要由CSDN通过智能技术生成

Gitlab以容器方式运行,需要持久化如下几个目录中的数据:

持久化本地位置

容器位置

使用

${sc}/data

/var/opt/gitlab

用于存储应用程序数据。

${sc}/logs

/var/log/gitlab

用于存储日志。

${sc}/config

/etc/gitlab

用于存储

GitLab 配置

文件。

1、下载镜像

docker pull gitlab/gitlabce:14.6.0-ce.0

2、创建Service

这个用于对接jenkins使用,因为我没有正式的公网域名,如果有就不用配置了

kind: Service
apiVersion: v1
metadata:
  name: gitlab-svc 
  namespace: ops
  labels:
    app: gitlab
spec:
  ports:
  - name: http
    port: 80
    targetPort: 80
    nodePort: 30999    
  - name: https
    port: 443
    targetPort: 443
    nodePort: 30443    
  selector:
    app: gitlab
  type: NodePort

3、创建存储,采用storageclass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: gitlab-storageclass
provisioner: nfs-storage-01
allowVolumeExpansion: true
reclaimPolicy: Retain

4、创建StatefulSet

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: gitlab
  namespace: ops
spec:
  serviceName: "gitlab-svc"
  selector:
    matchLabels:
      app: gitlab
  template:
    metadata:
      labels:
        app: gitlab
    spec:
      imagePullSecrets:
      - name: harbor-admin
      containers:
      - name: gitlab-ce
        image: gitlab/gitlab-ce:14.6.0-ce.0
        imagePullPolicy: IfNotPresent
        env:
        - name: GITLAB_ROOT_PASSWORD
          value: "admin123"
        - name: GITLAB_OMNIBUS_CONFIG
          value: |
            external_url "http://gitlab.ws.net"
            gitlab_rails['time_zone'] = 'Asia/Shanghai'
            node_exporter['enable'] = false
            redis_exporter['enable'] = false
            postgres_exporter['enable'] = false
            gitlab_exporter['enable'] = false
            grafana['enable'] = false
            grafana['reporting_enabled'] = false
            prometheus['enable'] = false
            prometheus['monitor_kubernetes'] = false
        ports:
        - name: http
          containerPort: 80
        - name: https
          containerPort: 443
        volumeMounts:
        - name: data
          mountPath: /etc/gitlab
          subPath: config
        - name: data
          mountPath: /var/opt/gitlab
          subPath: data
        - name: data
          mountPath: /var/log/gitlab
          subPath: logs

  volumeClaimTemplates:         # pvc
  - metadata:
      name: data
    spec:
      accessModes: ["ReadWriteMany"]
      storageClassName: "gitlab-storageclass"
      resources:
        requests:
          storage: 5Gi

5、创建Ingress

在本地绑定ip 和域名之后就能直接访问了,这个用于日常登录使用

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: gitlab-ingress
  namespace: ops
spec:
  ingressClassName: "nginx"
  rules:
  - host: "gitlab.ws.net"
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: gitlab-svc
            port:
              name: http

6、访问Gitlab

账号密码
root/admin123

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值