【问题标题】:Exposing or accessing Jenkins using Ingress使用 Ingress 暴露或访问 Jenkins
【发布时间】:2022-01-16 16:52:12
【问题描述】:

我正在尝试在我们的本地 Kubernetes 集群 v1.18.6 中设置我的 Jenkins 实例。浏览了互联网上的多个帖子,解释了这些步骤,但使用的是节点端口 IP,而不是使用入口。

我在找

  1. 我要访问 Jenkins 的域:jenkins.BU.org.com/jenkins
  2. 使用入口控制器的主从通信。我相信 Jenkins 使用自定义协议与其构建代理进行通信,它是 Java RMI,而不是基于 HTTP。

除了以下文档中提到的步骤之外,我还需要进行哪些其他额外更改。

对 Kubernetes 及其动态非常陌生,所以这里的任何帮助都会对我的学习很有帮助,谢谢。

https://www.digitalocean.com/community/tutorials/how-to-install-jenkins-on-kubernetes

【问题讨论】:

  • 我可以建议查看github.com/jenkinsci/kubernetes-operator 而不是自己构建它吗? Kubernetes 操作员为您做了很多事情。
  • 为此,我需要在 k8s 中已经可用或已安装 Jenkins 实例并将其连接到 kubernetes-operator 吗?请。如果我穿错了请纠正我

标签: jenkins kubernetes


【解决方案1】:

因此,从最基本的开始,我假设以下几点:

  • 您有一个可用的已配置 Kubernetes 集群
  • 您已在集群中安装了 Ingress 控制器

首先要说清楚:

在 Kubernetes 集群中运行的工作负载应该通过 Service 资源而不是 Ingress 资源进行通信。

要记住的第二件事是:

使用 Ingress 资源使您的工作负载可从集群外部访问

最后,由于您希望通过jenkins.BU.org.com/jenkins 访问您的 Jenkins 实例,那么您必须选择以下选项之一:

  • 购买org.com 域,因为jenkins.BU.org.comorg.com 域的子域
  • 设置您自己的私有网络(老实说,超出了这个问题和我的知识范围)

因此,要回答您的问题,您需要执行以下操作以使您的 Jenkins 实例可以从集群外部访问:

  • 创建您的 Jenkins 主 Pod,并打开一些端口,例如 8080
  • 创建一个服务资源,用于选择您的 Pod 并将端口 80 转发到端口 8080
  • 创建一个 Ingress 资源,将您所需的域名转发到您的 Service 到端口 80
  • 创建一个 LoadBalancer 服务来定位您的 Ingress 控制器 Pod
  • 将 LoadBalancer 服务与您的实际负载均衡器相关联(取决于您的环境)
  • 将您的域名与负载平衡器 IP 相关联以进行 DNS 解析

解决这个问题的另一种方法是:

  • 创建您的 Jenkins 主 Pod,并打开一些端口,例如 8080
  • 创建一个 NodePort 类型的服务资源,它选择您的 Pod 并将端口 80 转发到端口 8080。这将在您的节点上打开一个端口,然后您应该能够通过节点的 IP 地址访问您的 Pod。
  • 配置 DNS 以将所需的域名解析为节点的 IP。

我不推荐第二种方法,因为这意味着您的节点可以直接在互联网上可用。

【讨论】:

  • 感谢您的详细解释。抱歉,jenkins.BU.org.com 是我们组织的 DNS,已编辑敏感信息。应该更清楚。我将尝试第二种方法并分享结果。 :)
  • 我相信主从通信应该不是问题,对吧?
  • 对于主从通信,您可以使用第二个服务。您很可能需要无头服务才能让 Master 检测到所有从站
  • 我可以从内心深处推荐 Jenkins Kubernetes Operator,因为它为您管理所有这些事情 + 备份和插件等等。如果您有更详细的问题,请将它们放在这里,我将在我的答案中展开。
  • 谢谢!我提出了一个新问题。 stackoverflow.com/questions/70332017/…
猜你喜欢
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 2022-07-11
  • 2020-01-31
  • 1970-01-01
  • 2021-07-16
  • 2019-02-24
  • 1970-01-01
相关资源
最近更新 更多