如何使用Kubernetes和Gitlab CI / CD在Google Cloud Platform中部署多个环境?

时间:2018-08-20 19:11:27

标签: kubernetes google-cloud-platform gitlab-ci google-kubernetes-engine

我想使用gitlab-ci,Kubernetes和Google Kubernetes Engine在多个环境(开发,暂存和生产)中部署我的项目(api rest,webapp,backoffice等)。

所有项目都在gitlab存储库中分开

我在gitlab上有2个分支:掌握和开发。 母版必须部署在暂存和生产环境中 开发必须部署在开发环境中

自2天以来,我阅读了多个教程和博客,但我没有找到使用kubernetes管理多个环境的最佳方法。

我必须在GKE中创建3个集群(开发,暂存,生产)? 还是我只需要创建1个集群并使用名称空间来管理我的环境?或其他解决方案?

1 /创建3个集群 在gitlab-ci(免费帐户)中,如何在dev群集上部署dev分支,在暂存/生产群集上部署master分支?配置将如何执行? 我可以在gitlab-ci.yml中设置特定的集群吗?怎么样 ? (kubectl config use-context吗?

2 /创建1个集群和3个命名空间(开发,登台,生产) 我不认为这是出于安全和性能原因的最佳方法,对吗?

谢谢

2 个答案:

答案 0 :(得分:1)

  

我想部署我的项目(api rest,webapp,backoffice   等等)在多个环境(开发,暂存和生产)中   gitlab-ci,Kubernetes和Google Kubernetes引擎。

对于每个项目,我将它们作为单独的git存储库托管,以便能够分别进行部署。

  

我在gitlab上有2个分支:掌握和开发。必须部署大师   必须在开发和生产环境中进行开发   环境

在Kubernetes中,您将使用命名空间来隔离不同的环境,每个api都会从同一命名空间调用其他api。在Jenkins中,您可以创建多分支项目以相应地部署这些分支中的每个分支。您还可以注入某种环境变量,以便每个api都知道它属于哪个环境,例如,您可以一致地使用数据存储之类的资源,例如Foo.Production.Kind1与Foo.Development.Kind1

1 / Create 3 clusters In gitlab-ci (free account), how can I deploy dev branch on dev cluster, master branch on staging/production cluster ? what will be the config to do it ?

2 / Create 1 cluster and 3 namespace (dev,staging, production) I don't think that is the best approach for security and performance reason, right ?

如果成本不成问题,则可以针对特定环境分别使用3个群集(3个项目),也可以仅使用一个群集遵循上述方法,并根据名称空间和环境变量对其进行区分。

在此处有更多详细信息: https://cloud.google.com/solutions/continuous-delivery-jenkins-kubernetes-engine

答案 1 :(得分:1)

问:我必须在GKE中创建3个集群(开发,登台,生产)?还是我只需要创建1个集群并使用名称空间来管理我的环境?或其他解决方案?

答案:使用一个群集并像开发,暂存,生产这样对它们进行命名,这将很容易管理。