在Gitlab CI中部署Helm图表时,如何将节点主机名修复太长时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Gitlab CI中部署Helm图表时,如何将节点主机名修复太长时间相关的知识,希望对你有一定的参考价值。

我要实现的目标

嗨,我目前正在尝试通过gitlab CI作业部署一个postgresql-ha(更具体地说是bitnami / postgresql-ha)掌舵图。

我可以在本地取得的成就

在本地运行helm install postgresql ./postgresql-ha时,我可以在远程Kubernetes群集上成功创建图表,而不会出现任何错误。

[./postgresql-habitnami/postgresql-ha的未修改提取。

当我通过CI运行它时会发生什么

[当我尝试在Gitlab的CI中运行相同的命令,并正确设置了helmkubectl时,出现此错误:

Release "postgresql" does not exist. Installing it now.
Error: template: postgresql-ha/templates/NOTES.txt:60:4: executing "postgresql-ha/templates/NOTES.txt" at <include "postgresql-ha.validateValues" .>: error calling include: template: postgresql-ha/templates/_helpers.tpl:682:51: executing "postgresql-ha.validateValues" at <fail>: error calling fail: 
VALUES VALIDATION:
postgresql-ha: Nodes hostnames
    PostgreSQL nodes hostnames exceeds the characters limit for Pgpool: 128.
    Consider using a shorter release name or namespace.

第一行验证kubectl / helm配置。

。gitlab-ci.yml文件

##########
# Stages #
##########

stages:
  - deploy charts

########
# Jobs #
########

deploy_postgresql-ha:
  image: dtzar/helm-kubectl:3.0.0
  stage: deploy charts
  environment:
    name: production
  script:
    - helm upgrade --install postgresql ./postgresql-ha

Kubernetes集群是通过Gitlab的Kubernetes集成工具创建的,因此已经按照this Gitlab Documentation page进行了设置。

感谢您的帮助!

答案

似乎在pgpool上有一个bug:

ping探测由于缓冲区太小而导致长主机名失败pgpool调用“ ping -q -c3”并解析结果以确定主机是启动还是关闭。不幸的是,它使用了一个很小的缓冲区来读取输出,并且ping命令的最后一行会被截断。这意味着pgpool假定主机已关闭。

https://pgpool.net/mantisbt/print_all_bug_page_word.php?search=&sort=&dir=DESC&type_page=html&export=-1&show_flag=0

Bitnami升级了代码,因此现在不再允许使用长主机名。 Nodehostname由以下组件组成,因此可以进行调整:

$nodeHostname := printf "%s-00.%s.%s.svc.%s:1234" $postgresqlFullname $postgresqlHeadlessServiceName $releaseNamespace $clusterDomain }}

https://github.com/bitnami/charts/blob/master/bitnami/postgresql-ha/templates/_helpers.tpl

以上是关于在Gitlab CI中部署Helm图表时,如何将节点主机名修复太长时间的主要内容,如果未能解决你的问题,请参考以下文章

k8s中helm安装部署,升级和回滚(chart,helm,tiller,StorageClass)

由于禁止的秘密访问规则,无法在 gitlab-runner 中使用 helm upgrade

通过 Terraform Helm 提供程序和 Azure DevOps 部署 helm 图表,同时从 ACR 获取 helm 图表

[后端]gitlab之gitlab-ci自动部署

使用 Gitlab CI 将每个构建部署到服务器

如何利用Gitlab-ci持续部署到远程机器?