K8s部署Gitlab

编程

  • 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: 164343992@qq.com # *

- 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

参考:在 Kubernetes 上安装 Gitlab-阳明的博客

以上是 K8s部署Gitlab 的全部内容, 来源链接: utcz.com/z/519880.html

回到顶部