【问题标题】:Questions on setting up Jenkins in GKE关于在 GKE 中设置 Jenkins 的问题
【发布时间】:2019-09-23 16:44:19
【问题描述】:

https://cloud.google.com/solutions/jenkins-on-kubernetes-engine-tutorial中所述,我正在使用稳定的舵图(https://github.com/helm/charts/tree/master/stable/jenkins)在 GKE 中设置 Jenkins

我是kubernetes/GKE的初学者,想知道如何实现以下几点:

  1. 我希望 $JENKINS_HOME 数据即使在我启动新的 GKE 集群并在那里部署 jenkins 时也可以访问。为此,我需要 NFS 服务器。 Cloud Filestore 是一个不错的选择,还是我应该自己创建 NFS 服务器?
  2. 我们如何为 Jenkins master pod 实现 HA?
  3. 我应该将 Jenkins ServiceType 保留为 LoadBalancer,还是应该使用 Ingress Controller 并将 Jenkins 服务定义为 ClusterIP。两者相比有什么优势?

【问题讨论】:

    标签: jenkins kubernetes google-kubernetes-engine kubernetes-helm


    【解决方案1】:
    1. 文件存储应该没问题。您可以使用静态 PersistentVolume 或使用动态配置,例如 that。我猜在 Jenkins 的情况下,您需要像 that 这样的静态卷。

    2. 除了 Kubernetes 已经提供的功能之外,我认为您不需要 Jenkins pod 的 HA。如果节点出现问题,Jenkins pod 将在另一台机器上启动。我猜 Jenkins 非常罕见的 1-2 分钟停机时间并不是那么关键。

    3. 您最好使用 Ingress,因为这允许您将相同的负载均衡器(需要花钱)重用于其他服务。另外我建议使用Nginx Ingress 作为入口控制器,因为它是高度可配置的。 GKE Ingress 不是很灵活,实际上一点也不灵活。仅当您想使用 Google 全局负载平衡时才应使用 GKE Ingress,例如将您的服务放在多个区域。

    【讨论】:

    • 感谢 Vasily 提供的见解。关于 1:当我使用 FileStore 或 google PV 时,我是否能够持久化 jenkins 构建工作区?在我当前的独立 Jenkins 设置中,docker slave 代理不会持久化构建工作区。一旦构建完成或失败,它们就会被消灭。关于2:这是否意味着我应该在yamls中将'replicas'值设置为1?这是否也意味着如果我们使用 kubernetes,我们不需要主动-被动多主机设置?一般来说,我们能否在零停机的情况下实现 Jenkins 主应用程序的 HA?
    • 如果您使用 docker slaves 或 kubernetes slaves - 您应该考虑如何持久化构建工件。例如,对于 Kubernetes slaves 和 Maven 构建,您可以配置构建 pod 以将 PV 附加到 $HOME}/.m2 目录,因此将为每个构建保留构建工件。您还可以配置将工件推送到本地 Maven 存储库,例如 Nexus。
    • 关于零停机时间的詹金斯 - 从来没有听说过这样的事情。
    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2019-01-16
    • 2021-10-16
    • 2020-04-30
    相关资源
    最近更新 更多