如何将Ingress服务暴露给外部世界的80和443端口

84次阅读
没有评论

问题描述

在使用Google Compute Engine设置自管型Kubernetes集群时,希望将Ingress服务通过80和443端口暴露给外部世界。默认情况下,通过NodePort/LoadBalancer/ExternalIP方式暴露时使用的是30000端口范围。请提供如何实现将Ingress服务暴露在80和443端口的解决方案。

解决方案

请注意以下操作可能涉及版本差异,确保你的Kubernetes版本支持以下操作。

使用ClusterIP类型的服务

为了将Ingress服务暴露在80和443端口,建议使用ClusterIP类型的服务,并在其上应用Ingress资源。

  1. 首先,确保你的Kubernetes集群已经部署Ingress控制器(比如Nginx Ingress Controller),该控制器将帮助你管理Ingress资源并将流量路由到相应的服务。

  2. 创建一个ClusterIP类型的Kubernetes服务,用于暴露你想要的后端应用,可以是Deployment、StatefulSet或其他类型的控制器管理的应用。这个服务将作为Ingress资源的后端。

  3. 创建一个Ingress资源,将其规则设置为将流量路由到上一步创建的ClusterIP服务,并将Ingress的端口设置为80和443。

以下是一个示例Ingress资源配置的YAML文件:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: nginx # 使用Nginx Ingress Controller
spec:
  rules:
    - host: your-domain.com # 指定要绑定的域名
      http:
        paths:
        - path: / # 可以根据需求修改路径
          pathType: Prefix
          backend:
            service:
              name: your-clusterip-service # 替换为你创建的ClusterIP服务的名称
              port:
                number: 80 # 指定要暴露的端口
        - path: /
          pathType: Prefix
          backend:
            service:
              name: your-clusterip-service
              port:
                number: 443

将上述配置保存为一个YAML文件,然后使用kubectl apply -f your-ingress-config.yaml来应用该配置。

这样,你的Ingress服务就会通过80和443端口暴露给外部世界。

注意事项

  • 在真实环境中,你需要替换示例配置中的域名、服务名称以及其他参数,确保它们与你的应用和网络配置相匹配。
  • 确保你的Ingress控制器已经正确安装和配置,以便能够处理Ingress资源并将流量正确路由到服务。
  • 根据实际情况,可能需要配置相关的网络规则和负载均衡,以确保流量能够顺利到达集群中的Ingress服务。

这样,你就可以通过以上步骤将Ingress服务暴露在80和443端口,从而实现外部世界的访问。

正文完