前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Helm 部署 Gitlab

使用 Helm 部署 Gitlab

作者头像
崔秀龙
发布2019-07-24 21:53:56
5.9K1
发布2019-07-24 21:53:56
举报
文章被收录于专栏:伪架构师伪架构师伪架构师

先决条件

在 Kubernetes 中的安装,自然需要一个可以运行和管理的 Kubernetes 集群,首先创建一个 Namespace 用于 Gitlab 的安装运行:

$ kubectl create ns gitlab
namespace/gitlab created
$ kubens gitlab
Context "mediumlab" modified.
Active namespace is "gitlab".

同时还要求该集群有如下能力:

  • 外网 Loadbalancer 支持
  • 镜像拉取
  • Helm 访问
  • StorageClass

Helm 仓库

Gitlab 官方提供了 Helm 仓库,添加地址之后就可以进行安装了:

$ helm repo add gitlab https://charts.gitlab.io/
"gitlab" has been added to your repositories

Helm 安装一般有两种方式:

  • helm install:需要集群端安装 Tiller,直接完成安装。
  • helm template:无需 Tiller 支持,用于生成最终的 YAML 安装文件。

这里为了使用方便,我们选择第二种,生成模板的方式。

TLS

为了提供 HTTPS 服务,不可避免的要使用 tls 的相关设置,Gitlab 给出了几个选项,本文使用两种:

自行提供泛域名证书

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...
...Successfully got an update from the "gitlab" chart repository
...Successfully got an update from the "stable" chart repository
$ helm fetch --untar gitlab/gitlab
$ helm template gitlab \
--namespace gitlab \
--name core \
--set global.edition=ce \
--set certmanager.install=false \
--set global.ingress.configureCertmanager=false \
--set global.ingress.tls.secretName=xyz \
--set global.hosts.domain=microservice.xyz \
--set gitlab-runner.install=false > gitlab-install.yaml

上面列出的几个开关,解释如下:

  • global.edition:Gitlab 分为 CE(社区版)和 EE(企业版)两个版本,这里仅涉及 CE 版本。
  • certmanager.install:使用固定证书,无需 certmanager
  • global.ingress.tls.secretName:不用 certmanger 配置 Ingress。
  • global.hosts.domain:主机域名,这里给出的是一个根域名,后续会生成形如 gitlab.microservice.xyzregistiry.microservice.xyz 形式的子域名。
  • gitlab-runner.install=false:后续步骤中会单独安装 runner。
  • global.ingress.tls.secretName=xyz:用于保存我们的泛域名证书。

cert-manager + letsencrypt

$ helm template gitlab \
--namespace gitlab \
--name core \
--set global.edition=ce \
--set global.hosts.domain=microservice.rocks \
--set certmanager-issuer.email="xampal@gmail.com" \
--set gitlab-runner.install=false

这个参数很简单:

  • global.hosts.domain:根域名。
  • certmanager-issuer.email:签发者证书。

安装

用上述命令生成的安装清单,使用 kubectl 即可完成安装。

$ kubectl apply -f gitlab-le.yaml
...
poddisruptionbudget.policy/gitlab-gitaly created
poddisruptionbudget.policy/gitlab-gitlab-shell created
...

完成动作之后,可以通过 ingresspods 的情况查看启动情况:

$ kubectl get ing -w
NAME            HOSTS                         ADDRESS   PORTS     AGE
core-minio      minio.microservice.rocks                80, 443   23s
core-registry   registry.microservice.rocks             80, 443   23s
core-unicorn    gitlab.microservice.rocks               80, 443   24s

启动完成应该有几个结果:

  • svc/Ingress 获得了地址。
  • Pod 运行。
  • PVC 全部绑定。

接下来就可以使用命令获取 root 密码:

$ kubectl get secret core-gitlab-initial-root-password -ojsonpath='{.data.password}' | base64 --decode ; echo
O3ewqaXE...NjCTYVktYghmkodF0j1c

初始化

输入 SSH 公钥

浏览器打开 /profile/keys,在其中输入公钥内容。

关闭 Auto DevOps

浏览器打开 /admin/application_settings/ci_cd,取消其中的 Default to Auto DevOps pipeline for all projects

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伪架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先决条件
  • Helm 仓库
  • TLS
    • 自行提供泛域名证书
      • cert-manager + letsencrypt
      • 安装
      • 初始化
        • 输入 SSH 公钥
          • 关闭 Auto DevOps
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档