带有多容器kubernetes pod的GitLab CI管道

时间:2017-03-15 16:14:35

标签: docker continuous-integration gitlab kubernetes gitlab-ci

是否可以设置配置,包括:

  1. GitLab项目#1 java-container
  2. GitLab项目#2 java-container
  3. Nginx容器
  4. Redis容器
  5. Cassandra容器
  6. Nginx出口商(普罗米修斯)
  7. Redis出口商(普罗米修斯)
  8. JMX出口商(普罗米修斯)x2
  9. 将所有这些放在kubernetes(GKE)上的一个多容器pod中并通过共享卷和localhost进行通信非常重要。

    我已经使用初始容器在kubernetes中完成了所有这些操作(以获取代码并进行编译),现在我正在寻找使用CI / CD进行此操作的方法。

    所以,如果可以使用GitLab CI完成,请将您指向正确的文档或手册页,因为我是GitLab CI中的新手,并且已经在几十篇文章中迷失了自己来自互联网。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

首先要加入所有项目,这些项目应该使用maven和(或)docker构建到GitLab的一个公共项目中。

接下来是将dockerfiles和docker build所需的所有文件添加到子项目文件夹中。

接下来在公共项目的根目录中,我们应该放置.gitlab-ci.yml和deployment.yml文件。

deployment.yml应该是通用的或所有子项目。

.gitlab-ci.yml应该包含构建每个子项目的所有阶段。因为我们不需要在每次对sime文件进行更改时都构建所有的东西,所以我们应该使用git中的标签来理解GitLab CI,在这种情况下它应该运行一个或另一个阶段。这可以通过only parameter实现:

docker-build-akka:
  stage: package
  only:
    - /^akka-.*$/
  script:
  - export DOCKER_HOST="tcp://localhost:2375"
...

在每个阶段等等。因此,如果您对所需的Dockerfile或java代码进行了更改,则应提交并使用akka-0.1.4等标记推送到gitlab,而GitLab CI runner将仅运行适当的阶段。

此外,如果您对README.md文件或任何其他更改进行了更改,那么不需要构建项目 - 它不会。

您可以找到许多有用的内容herehere

另外,看看problem,我面临在kubernetes中运行docker build阶段。这可能对我很有帮助。