1、部署GitLab(3分)
​ 将GitLab部署到Kubernetes集群中,设置GitLab服务root用户的密码,使用Service暴露服务,并将提供的项目包导入到GitLab中。

​ 在Kubernetes集群中新建命名空间gitlab-ci,将GitLab部署到该命名空间下,Deployment和Service名称均为gitlab,以NodePort方式将80端口对外暴露为30880,设置GitLab服务root用户的密码为admin@123,将项目包demo-2048.tar.gz导入到GitLab中并命名为demo-2048。(需要用到的软件包:CICD-Runners-demo2048.tar.gz)

# 上传解压文件
tar -zxvf Gitlab-CI.tar.gz

# 导入镜像
ctr -n k8s.io image import gitlab-ci/images/images.tar
docker load < gitlab-ci/images/images.tar

# 新建空间
kubectl create ns gitlab-ci

# 进入命名空间
cd gitlab-ci

# 部署GitLab
vi gitlab-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: gitlab
  namespace: gitlab-ci
  labels:
    name: gitlab
spec:
  selector:
    matchLabels:
      name: gitlab
  template:
    metadata:
      name: gitlab
      labels:
        name: gitlab
    spec:
      containers:
      - name: gitlab
        image: gitlab/gitlab-ce:latest
        imagePullPolicy: IfNotPresent
        env:
        - name: GITLAB_ROOT_PASSWORD
          value: Abc@1234
        - name: GITLAB_ROOT_EMAIL
          value: 123456@qq.com
        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
      volumes:
      - name: gitlab-config
        hostPath:
          path: /home/gitlab/conf
      - name: gitlab-logs
        hostPath:
          path: /home/gitlab/logs
      - name: gitlab-data
        hostPath:
          path: /home/gitlab/data

# 创建server服务释放端口
vi gitlab-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: gitlab
  namespace: gitlab-ci
  labels:
    name: gitlab
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: http
      nodePort: 30880
  selector:
    name: gitlab

# 执行yaml创建
kubectl apply -f gitlab-deploy.yaml
kubectl apply -f gitlab-svc.yaml

# 查看pod
kubectl -n gitlab-ci get pods

# 查看GitLab Pod的IP地址
kubectl -n gitlab-ci get pods -owide

# 在集群中自定义hosts添加gitlab Pod的解析
kubectl edit configmap coredns -n kube-system
........
apiVersion: v1
data:
  Corefile: |
    .:53 {
        
        
        errors
        health {
        
        
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
        
        
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
           ttl 30
        }
## 添加以下字段
        hosts {
        
        
            10.244.1.43 gitlab-7b54df755-6ljtp
            fallthrough
        }
        prometheus :9153
##删除以下三行字段
        forward . /etc/resolv.conf {
        
        
           max_concurrent 1000
        }
        
        cache 30
        loop
        reload
        loadbalance
    }
........

# 执行
kubectl -n kube-system rollout restart deploy coredns

# 进入gitlab pod中
kubectl exec -ti -n gitlab-ci gitlab-7b54df755-6ljtp bash

# 在首行添加(ip为pod IP地址)
external_url 'http://10.244.1.43:80'

# 重启
reboot

# 退出
exit

# 查看service
kubectl -n gitlab-ci get svc

# 通过http://10.24.2.14:30880访问GitLab,用户名123456@qq.com,密码Abc@1234,
# 点击“Create a project”按钮
# 点击“Create blank project”创建项目demo-2048,可见等级选择“Public”
# 点击“Create project”,进入项目
# 将源代码推送到项目中

# 进入demo-2048
cd /root/gitlab-ci/demo-2048

# 配置用户名
git config --global user.name "administrator"