猪齿鱼部署-gitlab无法启动

  • Choerodon平台版本: 0.20.0

  • 遇到问题的执行步骤:
    分步部署,gitlab部署到helm install gitlab这一步,安装参数如下(具体ip删掉了)

helm install c7n/gitlab
–set persistence.enabled=true
–set persistence.existingClaim=gitlab-pvc
–set env.config.GITLAB_EXTERNAL_URL=http://ip56:8030
–set env.config.GITLAB_TIMEZONE=Asia/Shanghai
–set env.config.CHOERODON_OMNIAUTH_ENABLED=false
–set env.config.GITLAB_DEFAULT_CAN_CREATE_GROUP=true
–set env.config.DB_ADAPTER=postgresql
–set env.config.DB_HOST=gitlab-postgresql-postgresql.c7n-system.svc
–set env.config.DB_PORT=5432
–set env.config.DB_USERNAME=postgres
–set env.config.DB_PASSWORD=NH_d55.96x@_
–set env.config.DB_DATABASE=gitlabhq_production
–set env.config.REDIS_HOST=gitlab-redis.c7n-system.svc
。。。stmp相关参数省略,未修改,也未打算启动
–set env.config.GITLAB_EMAIL_FROM=git.sys@example.choerodon.io
–set env.config.SMTP_ENABLE_STARTTLS_AUTO=true
–set env.config.SMTP_TLS=true
–set env.config.PROMETHEUS_ENABLE=false
–set env.config.NODE_EXPORTER_ENABLE=false
–set env.config.UNICORN_WORKERS=3
–set env.config.UNICORN_TIMEOUT=60
–set service.enabled=true
–set service.ssh.nodePort=32222
–set ingress.enabled=false
–version 0.5.3
–name gitlab
–namespace c7n-system

  • 文档地址:
    http://choerodon.io/zh/docs/installation-configuration/steps/install/parts/base/gitlab/

  • 报错日志:
    无错误日志

  • 原因分析:

    整体已经部署完毕,由于gitlab的release里的一个url参数设置错误,遂升级,但是升级时状态一直不ready,具体错误信息和上面一致。于是删除干净和gitlab相关的内容,包括 pvc,redis,pgsql重新赶紧部署,到了install gitlab这一步还是出现相同错误。

  • 疑问:

    提出您对于遇到和解决该问题时的疑问

您好,请将ip更换为域名安装后,再修改名为 gitlab-cm 的 configmap ,将域名更换为 ip:port ,再重启gitlab即可

问题解决了,我在这里做一下记录,方便后续的同学处理问题。

前提,为什么我要使用ip+端口的方式来部署gitlab以及猪齿鱼?

客户内网限制,且客户无法提供外网映射以及内网域名,所以只能使用ip+端口的形式。(我个人就想到这个方案,如果有其他方案欢迎讨论)。所以,后续的问题也都是因为gitlab的访问地址被限制为ip+端口的形式而导致。

问题分析:将gitlab的GITLAB_EXTERNAL_URL设置为ip+端口会导致什么问题?

在GITLAB_EXTERNAL_URL这个参数配置为ip+端口的时候,会导致pod启动时gitlab程序自检访问的端口和实际容器映射的端口不一致。比如我这里配置的是ip:8030,这时候pod内容生效的端口就是8030,但是pod的config中默认的是80,gitlab实际也会尝试去访问80端口,导致一直卡在那一步,pod的状态也一直处于非ready状态。

如果设置为假域名是可以正常启动pod的(比如删掉对应的覆盖配置,使用默认的假域名),此时会导致另外一个问题,gitlab跳转到猪齿鱼登录时提供的目标跳转地址也会变为这个假域名,所以登陆成功后回跳的时候,就因为地址不匹配而无法返回gitlab。

解决方案其实很简单,两个步骤:

  1. GITLAB_EXTERNAL_URL的地址不变,还是ip+端口,比如我这里的ip56:8030。先helm install
  2. 接着手动修改Deployment的配置,具体位置见截图,修改那两个端口80为指定端口8030。接着使用kubectl scale命令重启对应的pod即可。

解释:8030是我外部代理的端口,只有讲GITLAB_EXTERNAL_URL设置为外部访问的ip+端口,git项目clone的url地址才可以正确的显示,这个其实也是前提条件之一。

遗留问题:ssh端口不匹配问题

此时gitlab启动,跳转猪齿鱼登陆都已经没有问题,但是会发现项目的ssh协议的git地址端口为32222,和实际期望的有出入。这个可以在helm的values中覆盖,有对应参数。如果忘记覆盖也没关系,手动修改gitlab的configMap即可,添加如下截图中的内容。我这里是8222的外部代理端口,所以我就改成8222。