基于K8s部署GitLab

专栏:K8s

GitLab

创建命名空间

创建名称cicd,保持干净,便于区分

kubectl create namespace cicd

创建 PV 和 PVC 的 YAML 文件

在node2节点上创建目录

mkdir -p /data/gitlab
chmod 777 /data/gitlab   # 测试环境可宽松,生产需更严格

回到控制节点创建yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: gitlab-pv
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: ""            # 空字符串表示不绑定到任何 StorageClass
  local:
    path: /data/gitlab           # 节点上的目录
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - node2                # 替换为您的节点名称
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gitlab-pvc
  namespace: cicd
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  storageClassName: ""            # 匹配 PV 的空字符串
kubectl apply -f gitlab-pv-pvc.yaml

检查状态

kubectl get pv -n cicd
kubectl get pvc -n cicd gitlab-pvc

两者都应显示 Bound

准备配置文件 gitlab-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gitlab
  namespace: cicd
  labels:
    app: gitlab
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gitlab
  template:
    metadata:
      labels:
        app: gitlab
    spec:
      containers:
      - name: gitlab
        image: gitlab/gitlab-ce:latest
        ports:
        - containerPort: 80
        - containerPort: 22
        env:
        - name: GITLAB_OMNIBUS_CONFIG
          value: |
            external_url 'http://172.30.30.137:30080'
            gitlab_rails['gitlab_shell_ssh_port'] = 30022
        volumeMounts:
        - name: gitlab-data
          mountPath: /var/opt/gitlab
        - name: gitlab-logs
          mountPath: /var/log/gitlab
        - name: gitlab-config
          mountPath: /etc/gitlab
        resources:
          requests:
            memory: "2Gi" #如果内存充足,一定要给大!!!
            cpu: "1"
          limits:
            memory: "4Gi"
            cpu: "2"
      volumes:
      - name: gitlab-data
        persistentVolumeClaim:
          claimName: gitlab-pvc   # 引用刚才创建的 PVC
      - name: gitlab-logs
        emptyDir: {}
      - name: gitlab-config
        emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: gitlab
  namespace: cicd
spec:
  type: NodePort
  ports:
  - name: web
    port: 80
    targetPort: 80
    nodePort: 30080
  - name: ssh
    port: 22
    targetPort: 22
    nodePort: 30022
  selector:
    app: gitlab

应用并检查

# 应用配置
kubectl apply -f gitlab-deploy.yaml

# 查看 Pod 状态(刚启动需要几分钟拉取镜像)
kubectl get pods -n cicd -w

# 查看 Service
kubectl get svc -n cicd

进入容器查看初始密码

kubectl exec -n cicd -it deployment/gitlab -- cat /etc/gitlab/initial_root_password

如果服务起不来,可以重置一下

kubectl exec -n cicd deployment/gitlab -- gitlab-ctl reconfigure

0 条评论

🔒

发表评论需要 登录

还没有账号?立即注册

💬
还没有评论,来抢沙发吧!

← 返回首页