zoukankan      html  css  js  c++  java
  • helm 轻松完爆 gitlab

    一、版本说明

    本文使用 helm 3。helm 仓库信息如下。此外,本文用到了 nginx-ingress,且设置 nginx-ingress 的 hostPath 为 true。所以如果你没有使用 nginx-ingress 的话,建议参考k8s进阶——落地实践之旅首先安装 nginx-ingress。

    $ helm repo list
    NAME            URL
    stable          http://mirror.azure.cn/kubernetes/charts
    aliyun          https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    jetstack        https://charts.jetstack.io
    minio           http://192.168.99.1:9001/helm-repo
    nginx-stable    https://helm.nginx.com/stable
    

    二、下载gitlab-ce

    $ mkdir -p /root/helm/charts && cd /root/helm/charts/
    $ helm search repo gitlab-ce
    NAME                    CHART VERSION   APP VERSION     DESCRIPTION
    aliyun/gitlab-ce        0.2.1                           GitLab Community Edition
    stable/gitlab-ce        0.2.3           9.4.1           GitLab Community Edition
    
    $ helm pull stable/gitlab-ce
    

    三、配置gitlab-ce

    $ tar -zxvf gitlab-ce-0.2.2.tgz
    $ vim gitlab-ce/values.yaml
    

    values.yaml修改这四项:

    image: gitlab/gitlab-ce:10.6.2-ce.0 # 默认版本 9.4.1-ce.0 有问题 
    externalUrl: gitlab.lvzhenjiang.com # 给 gitlab 配置一个域名。【可选】
    gitlabRootPassword: # 登录密码
    serviceType: ClusterIP
    ingress.enabled: true
    ingress.url: gitlab.lvzhenjiang.com
    

    2021-06-13_111853

    四、创建gitlab-ce命名空间

    $ kubectl create ns gitlab-ce
    

    五、安装 gitlab-ce

    $ cd /root/helm/charts/
    $ helm install gitlab-ce --namespace gitlab-ce gitlab-ce
    # 第一个 gitlab-ce 是 release 名,第二个是命名空间,第三个是 chart 解压后的目录
    

    注意:如果你的 k8s 版本低于 16,那么恭喜,你的安装过程会很顺利,你可以放心大胆地跳过。如果很不幸,你跟我一样有报错,你需要接着往下看!

    5.1 修改 deployment 版本

    2021-06-13_112455

    错误原因是现有 k8s 不支持 gitlab-ce 的 deployment apiVersion。

    定位要修改的文件:

    $ grep -irl "extensions/v1beta1" gitlab-ce | grep deployment
    # 选项 i 表示大小写不敏感;r 表示支持子目录递归搜索;l 打印出匹配文件
    

    2021-06-13_112733

    完爆语句如下:

    $ grep -irl "extensions/v1beta1" gitlab-ce | grep deploy | xargs sed -i 's#extensions/v1beta1#apps/v1#g'
    # xargs 把管道符 ‘|’前面命令的输出结果作为后面 sed 命令的输入。
    # sed 命令是替换,替换内容是将 extensions/v1beta1 替换为 apps/v1
    

    5.2 修改 deployment 选择符(selector)

    再次安装,执行结果依然报错。

    2021-06-13_112927

    错误原因是现有 k8s 不支持 gitlab-ce 的 deployment spec。定位要修改的文件:

    $ grep -irl "apps/v1" gitlab-ce | grep deployment
    # 注意:搜索内容变了,不是 extenstions/v1beta1
    

    2021-06-13_113051

    依次完爆上述文件:

    $ vim gitlab-ce/templates/deployment.yaml
    

    添加:

      replicas: 1      # 在这行下添加以下内容
      selector:
        matchLabels:
          app: {{ template "gitlab-ce.fullname" . }}
    

    2021-06-13_113421

    $ vim gitlab-ce/charts/postgresql/templates/deployment.yaml
    

    添加:

    spec:    # 在这行下添加以下内容
      selector:
        matchLabels:
          app: {{ template "postgresql.fullname" . }}
    

    2021-06-13_113700

    $ vim gitlab-ce/charts/redis/templates/deployment.yaml
    

    添加:

    spec:    # 在这行下添加以下内容
      selector:
        matchLabels:
          app: {{ template "redis.fullname" . }}
    

    2021-06-13_113947

    再次执行安装:

    2021-06-13_114037

    gitlab-ce 安装成功。但是安装成功不代表运行成功。就跟你买了一个有快速震动功能的高科技生活用品,不安装南孚,它照样不能让你爽是一个道理。

    六、创建gitlab-ce存储

    $ kubectl get all -n gitlab-ce
    

    2021-06-13_114151

    发现 pod 一直是 pending 状态。原因是 gitlab-ce 等你为它创建存储;专业地说,是 pvc 没绑定 pv;再文艺一点就是 pvc 不操(c) pv 就不愿意干活。懂了没!

    2021-06-13_114251

    查看处于 pending 状态的 pvc。发现它们的喜好有 2 个规格。A 杯(1Gi) 和 C 杯(10Gi)。

    $ kubectl edit pvc -n gitlab-ce gitlab-ce-gitlab-ce-etc
    

    2021-06-13_114528

    $ kubectl edit pvc -n gitlab-ce gitlab-ce-gitlab-ce-data
    

    2021-06-13_114615

    6.1 创建资源文件

    $ mkdir -p /root/helm/charts/gitlab-ce/manifest/pv
    $ cd /root/helm/charts/gitlab-ce/manifest/pv
    $ touch pv-gitlab-10g.yaml
    $ touch pv-gitlab-1g.yaml
    

    pv-gitlab-1g.yaml 文件如下:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: gitlab-etc
    spec:
      capacity:
        storage: 1Gi
      volumeMode: Filesystem
      accessModes:
      -  ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      hostPath:
          path: /data/gitlab/etc
    

    pv-gitlab-10g.yaml 文件如下:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: gitlab-data1
    spec:
      capacity:
        storage: 10Gi
      volumeMode: Filesystem
      accessModes:
      -  ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      hostPath:
          path: /data/gitlab/data
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: gitlab-data2
    spec:
      capacity:
        storage: 10Gi
      volumeMode: Filesystem
      accessModes:
      -  ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      hostPath:
          path: /data/gitlab/data
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: gitlab-data3
    spec:
      capacity:
        storage: 10Gi
      volumeMode: Filesystem
      accessModes:
      -  ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      hostPath:
          path: /data/gitlab/data
    

    6.2 创建存储目录

    这里为了减少不必要的麻烦,使用了 hostPath 本地存储类型。如果你 k8s 集群有多个工作节点的话,记得每个工作节点都需要创建目录 /data/gitlab/etc、/data/gitlab/data

    $ mkdir -pv /data/gitlab/{etc,data}
    

    spacer.gif6.3 创建 pv

    $ kubectl apply -f pv-gitlab-1g.yaml
    $ kubectl apply -f pv-gitlab-10g.yaml
    

    2021-06-13_115319

    创建完查看 pvc 和 pv。你会发现 pvc 各个都像脱缰的野狗一样,疯狂地奔向 pv。它们云雨地很和谐。

    $ kubectl get pvc -n gitlab-ce
    $ kubectl get pv
    

    2021-06-13_115450

    查看 gitlab-ce,发现一切岁月静好。

    2021-06-13_115544

    七、访问 gitlab-ce

    安装 gitlab-ce 时,我们指定 service 类型是 ClusterIP。

    2021-06-13_115719

    查看 ingress 信息:

    2021-06-13_115820

    八、绑定 hosts

    打开浏览器,输入 http://gitlab.lvzhenjiang.com/。注意:gitlab.lvzhenjiang.com 需要在当前浏览器所在主机的 hosts 文件中指定,其 ip 必须是 nginx-ingress-controller pod 所在主机。

    2021-06-13_120255

    九、访问 gitlab-ce

    2021-06-13_123826

    *************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
  • 相关阅读:
    204. Count Primes (Integer)
    203. Remove Linked List Elements (List)
    202. Happy Number (INT)
    201. Bitwise AND of Numbers Range (Bit)
    200. Number of Islands (Graph)
    199. Binary Tree Right Side View (Tree, Stack)
    198. House Robber(Array; DP)
    191. Number of 1 Bits (Int; Bit)
    190. Reverse Bits (Int; Bit)
    189. Rotate Array(Array)
  • 原文地址:https://www.cnblogs.com/lvzhenjiang/p/14880065.html
Copyright © 2011-2022 走看看