• 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

    *************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
  • 相关阅读:
    pat1111-1120
    pat1101-1110
    pat1091-1100
    pat1081-1090
    pat1071-1080
    pat1061-1070
    2017华为软件精英挑战赛总结
    pat1051-1060
    【转】WPF中PasswordBox控件的Password属性的数据绑定
    Python学习-41.Python中的断言
  • 原文地址:https://www.cnblogs.com/lvzhenjiang/p/14880065.html
Copyright © 2020-2023  润新知