使用 Ingress 公开或访问 Jenkins
Exposing or accessing Jenkins using Ingress
我正在尝试在我们的本地 Kubernetes 集群 v1.18.6 中设置我的 Jenkins 实例。浏览了互联网上的多个帖子,解释了这些步骤,但使用的是节点端口 IP 而不是使用入口。
我在找
- 我想访问 Jenkins 的域:
jenkins.BU.org.com/jenkins
.
- 使用入口控制器的主从通信。我相信 Jenkins 使用自定义协议与其构建代理进行通信,是 Java RMI,而不是基于 HTTP。
除了下面文档中提到的步骤之外,我还需要做哪些额外的更改。
对 Kubernetes 及其动态非常陌生,所以这里的任何帮助都对我的学习很有帮助,谢谢。
https://www.digitalocean.com/community/tutorials/how-to-install-jenkins-on-kubernetes
所以从最基本的开始,我假设以下几点:
- 您有一个可用的已配置 Kubernetes 集群
- 您的集群中安装了 Ingress 控制器
首先要明确的是:
Workloads which run within the Kubernetes cluster should communicate via Service resources and not Ingress resources.
要记住的第二件事是:
Use Ingress resource to make your workloads reachable from outside of your cluster
最后,由于您希望在 jenkins.BU.org.com/jenkins
下访问您的 Jenkins 实例,因此您必须选择以下选项之一:
- 购买
org.com
域,因为 jenkins.BU.org.com
是 org.com
域的子域
- 设置你自己的私人网络(老实说,超出了这个问题的范围和我的知识范围)
因此,要回答您的问题,您需要执行以下操作以使您的 Jenkins 实例可从集群外部访问:
- 创建你的 Jenkins master Pod 并打开一些端口,比如 8080
- 创建一个服务资源,它选择您的 Pod 并将端口 80 转发到端口 8080
- 创建一个 Ingress 资源,它将您想要的域名转发到您的服务到端口 80
- 创建一个 LoadBalancer 服务以您的 Ingress 控制器为目标 Pods
- 将 LoadBalancer 服务与您的实际负载均衡器相关联(取决于您的环境)
- 将您的域名关联到负载均衡器 IP 以进行 DNS 解析
另一种解决方法是:
- 创建你的 Jenkins master Pod 并打开一些端口,比如 8080
- 创建一个 NodePort 类型的服务资源,它选择您的 Pod 并将端口 80 转发到端口 8080。这将在您的节点上打开一个端口,然后您应该能够通过该节点的 IP 地址访问您的 Pod节点。
- 配置 DNS 以将所需的域名解析为节点的 IP。
我不推荐第二种方法,因为这意味着让您的节点直接在互联网上可用。
我正在尝试在我们的本地 Kubernetes 集群 v1.18.6 中设置我的 Jenkins 实例。浏览了互联网上的多个帖子,解释了这些步骤,但使用的是节点端口 IP 而不是使用入口。
我在找
- 我想访问 Jenkins 的域:
jenkins.BU.org.com/jenkins
. - 使用入口控制器的主从通信。我相信 Jenkins 使用自定义协议与其构建代理进行通信,是 Java RMI,而不是基于 HTTP。
除了下面文档中提到的步骤之外,我还需要做哪些额外的更改。
对 Kubernetes 及其动态非常陌生,所以这里的任何帮助都对我的学习很有帮助,谢谢。
https://www.digitalocean.com/community/tutorials/how-to-install-jenkins-on-kubernetes
所以从最基本的开始,我假设以下几点:
- 您有一个可用的已配置 Kubernetes 集群
- 您的集群中安装了 Ingress 控制器
首先要明确的是:
Workloads which run within the Kubernetes cluster should communicate via Service resources and not Ingress resources.
要记住的第二件事是:
Use Ingress resource to make your workloads reachable from outside of your cluster
最后,由于您希望在 jenkins.BU.org.com/jenkins
下访问您的 Jenkins 实例,因此您必须选择以下选项之一:
- 购买
org.com
域,因为jenkins.BU.org.com
是org.com
域的子域 - 设置你自己的私人网络(老实说,超出了这个问题的范围和我的知识范围)
因此,要回答您的问题,您需要执行以下操作以使您的 Jenkins 实例可从集群外部访问:
- 创建你的 Jenkins master Pod 并打开一些端口,比如 8080
- 创建一个服务资源,它选择您的 Pod 并将端口 80 转发到端口 8080
- 创建一个 Ingress 资源,它将您想要的域名转发到您的服务到端口 80
- 创建一个 LoadBalancer 服务以您的 Ingress 控制器为目标 Pods
- 将 LoadBalancer 服务与您的实际负载均衡器相关联(取决于您的环境)
- 将您的域名关联到负载均衡器 IP 以进行 DNS 解析
另一种解决方法是:
- 创建你的 Jenkins master Pod 并打开一些端口,比如 8080
- 创建一个 NodePort 类型的服务资源,它选择您的 Pod 并将端口 80 转发到端口 8080。这将在您的节点上打开一个端口,然后您应该能够通过该节点的 IP 地址访问您的 Pod节点。
- 配置 DNS 以将所需的域名解析为节点的 IP。
我不推荐第二种方法,因为这意味着让您的节点直接在互联网上可用。