k8s 通过 helm 集成 gitlab

发布于 2022-06-14  21 次阅读


helm 安装

helm 安装文档

helm 更新gitlab源

# 添加源
helm repo add gitlab-jh https://charts.gitlab.cn
helm repo update

下载helm包并修改

# 下载
helm pull gitlab-jh/gitlab --version=5.6.2
# 解压
tar xf gitlab-5.6.2.tgz  && cd gitlab
# 修改values.yaml文件[以下仅为需要修改的部分,其余不变]
vim values.yaml

global:
  hosts:
    domain: beyourself.com
    https: false
    tls:
      enabled: false
  ingress:
    tls:
      enabled: false
nginx-ingress:
  service:
    type: NodePort
prometheus:
  install: false
certmanager-issuer:
  email: newrain_wang@163.com

vim charts/nginx-ingress/values.yaml
controller:
  service:
    #type: LoadBalancer
    type: NodePort
    nodePorts:
      http: 32080
      https: 32443
      tcp:
        8080: 32808

部署pv

# mkdir -pv /data/gitlab/{gitaly,minio,postgresql,redis}

apiVersion: v1
kind: PersistentVolume
metadata:
  name: gitlab-gitaly
  labels:
    app: gitlab
    component: gitaly
spec:
  capacity:
    storage: 50Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 192.168.96.134
    path: /data/gitlab/gitaly

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: gitlab-minio
  labels:
    app: gitlab
    component: minio
spec:
  capacity:
    storage: 10Gi
  accessModes: 
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 192.168.96.134
    path: /data/gitlab/minio

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: gitlab-postgresql
  labels:
    app: gitlab
    component: postgresql
spec:
  capacity:
    storage: 8Gi
  accessModes: 
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 192.168.96.134
    path: /data/gitlab/postgresql

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: gitlab-redis
  labels:
    app: gitlab
    component: redis
spec:
  capacity:
    storage: 8Gi
  accessModes: 
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 192.168.96.134
    path: /data/gitlab/redis

kubectl apply -f gitlab_pv.yaml

执行部署

helm install gitlab ./gitlab --namespace=gitlab --create-namespace
kubectl get pod 
# 等待所有容器启动,可能会比较久
[root@k8s-master opt]# kubectl get svc
NAME                                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                   AGE
gitlab-certmanager                        ClusterIP   10.110.33.220    <none>        9402/TCP                                  3m2s
gitlab-certmanager-webhook                ClusterIP   10.96.120.173    <none>        443/TCP                                   3m1s
gitlab-gitaly                             ClusterIP   None             <none>        8075/TCP                                  3m2s
gitlab-gitlab-exporter                    ClusterIP   10.96.164.124    <none>        9168/TCP                                  3m2s
gitlab-gitlab-shell                       ClusterIP   10.106.45.122    <none>        22/TCP                                    3m2s
gitlab-minio-svc                          ClusterIP   10.105.202.254   <none>        9000/TCP                                  3m2s
gitlab-nginx-ingress-controller           NodePort    10.103.46.12     <none>        80:31387/TCP,443:31925/TCP,22:30004/TCP   3m1s
gitlab-nginx-ingress-controller-metrics   ClusterIP   10.99.28.1       <none>        10254/TCP                                 3m1s
gitlab-nginx-ingress-defaultbackend       ClusterIP   10.98.244.140    <none>        80/TCP                                    3m1s
gitlab-postgresql                         ClusterIP   10.101.240.207   <none>        5432/TCP                                  3m2s
gitlab-postgresql-headless                ClusterIP   None             <none>        5432/TCP                                  3m2s
gitlab-postgresql-metrics                 ClusterIP   10.97.182.30     <none>        9187/TCP                                  3m1s
gitlab-prometheus-server                  ClusterIP   10.99.96.207     <none>        80/TCP                                    3m2s
gitlab-redis-headless                     ClusterIP   None             <none>        6379/TCP                                  3m2s
gitlab-redis-master                       ClusterIP   10.111.165.249   <none>        6379/TCP                                  3m2s
gitlab-redis-metrics                      ClusterIP   10.101.18.193    <none>        9121/TCP                                  3m2s
gitlab-registry                           ClusterIP   10.110.207.6     <none>        5000/TCP                                  3m2s
gitlab-webservice-default                 ClusterIP   10.96.75.143     <none>        8080/TCP,8181/TCP                         3m1s
kubernetes                                ClusterIP   10.96.0.1        <none>        443/TCP                                   21d

访问

# 需要先在访问端做本地解析
http://gitlab.beyourself.com:32080
# 默认账号: root
# 默认密码:kubectl get secret gitlab-gitlab-initial-root-password -o jsonpath={.data.password} | base64 -d


gitlab 运行runner

# 修改内容即可
values.yaml
global:
  runner:
    registrationToken: {}
    secret: gitlab-gitlab-runner-secret
gitlab-runner:
  install: true
  rbac:
    create: true
  runners:
    config: |
      [[runners]]
        [runners.kubernetes]
          image = "ubuntu:18.04"
          dns_policy = "none"
        [runners.kubernetes.dns_config]
          nameservers = ["8.8.8.8"]
    privileged: true
  podAnnotations:
    gitlab.com/prometheus_scrape: "true"
    gitlab.com/prometheus_port: 9252

# 修改内容即可
charts/gitlab-runner/values.yaml
gitlabUrl: http://gitlab-webservice-default.gitlab.svc:8080/

# 生成secret <name> 修改为namespace名称
kubectl create secret generic <name>-gitlab-runner-secret --from-literal=runner-registration-token=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64)

# 更新helm
helm upgrade gitlab ./ --namespace=gitlab

查看gitlab-runner

file