在 Kubernetes 中的安装,自然需要一个可以运行和管理的 Kubernetes 集群,首先创建一个 Namespace 用于 Gitlab 的安装运行:
$ kubectl create ns gitlab
namespace/gitlab created
$ kubens gitlab
Context "mediumlab" modified.
Active namespace is "gitlab".
同时还要求该集群有如下能力:
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 安装文件。这里为了使用方便,我们选择第二种,生成模板的方式。
为了提供 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.xyz
、registiry.microservice.xyz
形式的子域名。gitlab-runner.install=false
:后续步骤中会单独安装 runner。global.ingress.tls.secretName=xyz
:用于保存我们的泛域名证书。$ 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
...
完成动作之后,可以通过 ingress
、pods
的情况查看启动情况:
$ 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
启动完成应该有几个结果:
接下来就可以使用命令获取 root
密码:
$ kubectl get secret core-gitlab-initial-root-password -ojsonpath='{.data.password}' | base64 --decode ; echo
O3ewqaXE...NjCTYVktYghmkodF0j1c
浏览器打开 /profile/keys
,在其中输入公钥内容。
浏览器打开 /admin/application_settings/ci_cd
,取消其中的 Default to Auto DevOps pipeline for all projects
。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有