GitLab 9.x Kubernetes 集成

GitLab 9.x Kubernetes Integration

我的公司已经 运行 Kuberenetes 一年多了,GitLab 大约 6 个月了。我们最近升级到 GitLab 9.x 并且在试图弄清楚围绕 CI + Kube 应用程序配置的决定时遇到了问题。这个功能很棒,很想让它在我们的环境中工作。

似乎 GitLab 希望您只有一个集群设置,该集群内的所有环境都按命名空间划分,这等于您的 service/application 和应用程序,这等于您的环境。这就是 GitLab 希望我的 Kuberenetes 环境看起来像一个集群,您的服务被分解成命名空间:

namespace = hello-world
app = development
app = qa
app = production

在现实世界的例子中,我们更愿意使用相反的方法,它也适用于单个集群

DEVELOPMENT CLUSTER
namespace = development
app = hello-world

QA CLUSTER
namespace = qa
app = hello-world

PRODUCTION CLUSTER
namespace = production
app = hello-world

将命名空间作为应用程序,将应用程序作为环境,如果不全部升级,我们将无法升级到最新版本的 kube。也许我遗漏了一些东西,但根据我正在阅读的内容和测试后,看起来这就是它的设计方式。

作为参考,这是我的 CI 现在的样子,以使部署板 + 终端满意

development:
    <<: *deploy_definition
    stage: development
    environment: hello-world
    script:
        deploy.sh -a "hello-world"

但它应该是这样的

development:
    <<: *deploy_definition
    stage: development
    environment: development
    script:
        deploy.sh -a "hello-world"

为了增加这种混乱,他们在集成选项卡中只给你一个 Kubernetes master 连接。

这是正确的,还是我遗漏了什么?

你是对的。我也觉得很沮丧。

但即使没有 kubernetes 集成,您也可以使用环境

development:
    <<: *deploy_definition
    stage: development
    environment:
      name: development
      url: https://development.yourdomain.com
    script:
        deploy.sh -a "hello-world"

查看我最近写的 post 关于从 gitlab 自动部署到 kubernetes 的配置。

http://blog.lwolf.org/post/how-to-create-ci-cd-pipeline-with-autodeploy-k8s-gitlab-helm/