主要参考官方文档基于docker的部署,进行k8s文件的配置
官方文档

如果有网络不通的情况,可以考虑关闭下防火墙

1. 拉取镜像

我们使用社区版,所以需要改动官方文档里面的gitlab-ee->gitlab-ce

docker pull gitlab/gitlab-ce:latest

2. 构建DamoSet

apiVersion: apps/v1beta2
kind: DaemonSet
# ds 配置
metadata:
  name: gitlab-ds
  namespace: gitlab
# ds 描述
spec:
  # 选择标签
  selector:
    matchLabels:
      app: my-gitlab
  # pod 模板
  template:
    metadata:
      labels: # 包含标签
        app: my-gitlab
    spec:
      # volume
      volumes:
      - name: gitlab-config
        hostPath:
          path: /data/k8s/volumes/gitlab/config
          type: Directory
      - name: gitlab-logs
        hostPath:
          path: /data/k8s/volumes/gitlab/logs
          type: Directory
      - name: gitlab-data
        hostPath:
          path: /data/k8s/volumes/gitlab/data
          type: Directory
      containers:
      - name: gitlab
        image: gitlab/gitlab-ce:latest
        ports:
        # 容器内部暴露的端口
        - name: http 
          containerPort: 80
        # 卷挂载到容器文件
        volumeMounts:
        - name: gitlab-config
          mountPath: /etc/gitlab
        - name: gitlab-logs
          mountPath: /var/log/gitlab
        - name: gitlab-data
          mountPath: /var/opt/gitlab

这里本地目录需要创建好,不然可能由于找不到目录,导致容器启动失败在这里插入图片描述在这里插入图片描述
启动ds

kubectl create -f gitlab-ds.yaml

3. 创建Service暴露端口

apiVersion: v1
kind: Service
metadata:
  name: gitlab-svc
  namespace: gitlab
spec:
  # 转发容器端口 http(80) 到 80 暴露到宿主机 30001端口
  ports:
  - port: 80
    targetPort: http
    nodePort: 30001
  # 拥有此标签的pod都属于该服务
  selector:
    app: my-gitlab
  # 默认ClusterIp 改为NodePort 暴露外部端口
  type: NodePort

启动svc

kubectl create -f gitlab-svc.yaml

4. gitlab初始化

外部通过访问 宿主机ip:30001 访问。开始需要设置root密码,设置完成后使用root和密码登录即可

5. 修改clone时仓库路径

当前仓库的host是pod名称,需要改动下

git@gitlab-ds-md95x:dev/ci-test.git

修改 /data/k8s/volumes/gitlab/config/gitlab.rb 文件 将内容替换为对应ip或者域名

# http clone显示的
external_url 'http://git.xx.com'
# ssh clone显示的
gitlab_rails['gitlab_ssh_host'] = 'git.xx.com'

进入容器重启服务

kubectl exec -it gitlab-ds-j4sfk -- /bin/bash
gitlab-ctl reconfigure
gitlab-ctl restart

6. ssh clone提示密码

> $ git clone git@test.local.com:30002:xxxxx/eureka.git                                                                                                          
Cloning into 'eureka'...
git@test.local.com's password: 

测试了下,ssh确实是通的,而且可以登录gitlab

> $ ssh -vT git@test.local.com -p 30002 
......
Welcome to GitLab, @devil!
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2780, received 2864 bytes, in 0.0 seconds

网上找了一圈,好多都说要设置git用户密码啥的,后来发现路径有点诡异,公司的gitlab路径是类型这样的

ssh://git@test.local.com:30002/xxxxx/eureka.git                                                                                                          

找了下发现个gitlab.rb配置,去掉注释,重启下在gitlab页面克隆的时候,url就已经改变

# 如果是22 不会显示 ssh:// 需要改成其他的,这样的话,容器的端口也要换的
gitlab_rails['gitlab_shell_ssh_port'] = 1022

然后看了下github和gitee的路径,发现都是之前的格式也就是没有ssh。考虑可能是由于他们直接使用22端口,也就是说不加ssh而在路径里面加端口是不匹配的,所以可以修改gitlab-svc.yaml将之前映射到宿主机的30002也换成22端口,就可以了。

修改svc的yaml文件会有如下问题:provided port is not in the valid range. The range of valid ports is 30000-32767

> # vim /etc/kubernetes/manifests/kube-apiserver.yaml
# 找到 --service-cluster-ip-range 这一行,在这一行的下一行增加 如下内容
> # systemctl daemon-reload
> # systemctl restart kubelet
Logo

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

更多推荐