K8s 部署 Gitlab
阿新 • • 發佈:2021-08-22
- K8s 版本:
1.20.6
- 這裡使用的映象不是官方的,而是 Gitlab 容器化中使用非常多的一個第三方映象:
sameersbn/gitlab
,基本上和官方保持同步更新。地址:http://www.damagehead.com/docker-gitlab/
1. Redis
apiVersion: apps/v1 kind: Deployment metadata: name: redis namespace: gitlab labels: name: redis spec: replicas: 1 selector: matchLabels: name: redis template: metadata: name: redis labels: name: redis spec: containers: - name: redis image: sameersbn/redis imagePullPolicy: IfNotPresent ports: - name: redis containerPort: 6379 volumeMounts: - mountPath: /var/lib/redis name: data livenessProbe: exec: command: - redis-cli - ping initialDelaySeconds: 30 timeoutSeconds: 5 readinessProbe: exec: command: - redis-cli - ping initialDelaySeconds: 5 timeoutSeconds: 1 volumes: - name: data emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: redis namespace: gitlab labels: name: redis spec: ports: - name: redis port: 6379 targetPort: redis selector: name: redis
2. Postgresql
apiVersion: v1 kind: PersistentVolume metadata: name: gitlab-postgresql-data labels: type: gitlab-postgresql-data spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: nfs nfs: path: /data/nfs/gitlab/pg_data server: south-200 # * --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: gitlab-postgresql-data-pvc namespace: gitlab spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: nfs selector: matchLabels: type: gitlab-postgresql-data --- apiVersion: apps/v1 kind: Deployment metadata: name: postgresql namespace: gitlab labels: name: postgresql spec: replicas: 1 selector: matchLabels: name: postgresql template: metadata: name: postgresql labels: name: postgresql spec: containers: - name: postgresql image: sameersbn/postgresql:10 imagePullPolicy: IfNotPresent env: - name: DB_USER value: gitlab - name: DB_PASS value: "..." # * - name: DB_NAME value: gitlab_production - name: DB_EXTENSION value: pg_trgm ports: - name: postgres containerPort: 5432 volumeMounts: - mountPath: /var/lib/postgresql name: postgresql livenessProbe: exec: command: - pg_isready - -h - localhost - -U - postgres initialDelaySeconds: 30 timeoutSeconds: 5 readinessProbe: exec: command: - pg_isready - -h - localhost - -U - postgres initialDelaySeconds: 5 timeoutSeconds: 1 volumes: - name: postgresql persistentVolumeClaim: claimName: gitlab-postgresql-data-pvc --- apiVersion: v1 kind: Service metadata: name: postgresql namespace: gitlab labels: name: postgresql spec: ports: - name: postgres port: 5432 targetPort: postgres selector: name: postgresql
3. Gitlab
apiVersion: v1 kind: PersistentVolume metadata: name: gitlab-data labels: type: gitlab-data spec: capacity: storage: 30Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: nfs nfs: path: /data/nfs/gitlab/data server: south-200 # * --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: gitlab-data-pvc namespace: gitlab spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: nfs selector: matchLabels: type: gitlab-data --- apiVersion: apps/v1 kind: Deployment metadata: name: gitlab namespace: gitlab labels: name: gitlab spec: replicas: 1 selector: matchLabels: name: gitlab template: metadata: name: gitlab labels: name: gitlab spec: nodeName: 192.168.102.22 # * containers: - name: gitlab image: sameersbn/gitlab:11.8.1 imagePullPolicy: IfNotPresent env: - name: TZ value: Asia/Shanghai - name: GITLAB_TIMEZONE value: Beijing - name: GITLAB_SECRETS_DB_KEY_BASE value: long-and-random-alpha-numeric-string # * - name: GITLAB_SECRETS_SECRET_KEY_BASE value: long-and-random-alpha-numeric-string # * - name: GITLAB_SECRETS_OTP_KEY_BASE value: long-and-random-alpha-numeric-string # * - name: GITLAB_ROOT_PASSWORD value: admin123 # * - name: GITLAB_ROOT_EMAIL value: [email protected] # * - name: GITLAB_HOST value: gitlab.south.com # * - name: GITLAB_PORT value: "80" - name: GITLAB_SSH_HOST value: k8s-22.host.com # * - name: GITLAB_SSH_PORT value: "30022" - name: GITLAB_NOTIFY_ON_BROKEN_BUILDS value: "true" - name: GITLAB_NOTIFY_PUSHER value: "false" - name: GITLAB_BACKUP_SCHEDULE value: daily - name: GITLAB_BACKUP_TIME value: 01:00 - name: DB_TYPE value: postgres - name: DB_HOST value: postgresql - name: DB_PORT value: "5432" - name: DB_USER value: gitlab - name: DB_PASS value: "..." # * - name: DB_NAME value: gitlab_production - name: REDIS_HOST value: redis - name: REDIS_PORT value: "6379" ports: - name: http containerPort: 80 - name: ssh containerPort: 22 volumeMounts: - mountPath: /home/git/data name: data livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 180 timeoutSeconds: 5 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 timeoutSeconds: 1 volumes: - name: data persistentVolumeClaim: claimName: gitlab-data-pvc --- apiVersion: v1 kind: Service metadata: name: gitlab namespace: gitlab labels: name: gitlab spec: ports: - name: http port: 80 targetPort: http - name: ssh port: 22 targetPort: ssh nodePort: 30022 type: NodePort selector: name: gitlab --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: gitlab namespace: gitlab annotations: kubernetes.io/ingress.class: traefik spec: rules: - host: gitlab.south.com http: paths: - path: / pathType: Prefix backend: service: name: gitlab port: number: 80
建立:
$ kubectl create -f redis.yaml
$ kubectl create -f postgresql.yaml
$ kubectl create -f gitlab.yaml
$ kubectl get all -n gitlab -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/gitlab-7b894fcff-mnkb4 1/1 Running 0 16m 172.20.1.27 192.168.102.22 <none> <none>
pod/postgresql-6b6b478f-s6nj7 1/1 Running 0 16m 172.20.1.10 192.168.102.22 <none> <none>
pod/redis-7db89c7d46-fqdr5 1/1 Running 0 16m 172.20.0.9 192.168.102.21 <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/gitlab NodePort 10.254.169.244 <none> 80:31993/TCP,22:30022/TCP 35m name=gitlab
service/postgresql ClusterIP 10.254.110.37 <none> 5432/TCP 46h name=postgresql
service/redis ClusterIP 10.254.209.159 <none> 6379/TCP 46h name=redis