【Kubernetes】Ingress+host暴露服务

Kubernetes使用ingress+host暴露服务

在Kubernetes中使用Ingress结合本地hosts文件暴露服务是一种常见的本地开发和测试方案。以下是详细的配置步骤:

1. 部署Ingress Controller

# 使用Helm安装 helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm install ingress-nginx ingress-nginx/ingress-nginx  # 或者使用kubectl安装 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml 

2. 准备需要配置的应用

这里就选之前的Spring应用Prometheus + Grafana应用作为事例

3. 配置Ingress资源

创建Ingress规则,这里需要注意一下grafana-proxy和prometheus-proxy,因为他们不是相同namespace,所以需要外部服务的形式,提供。

apiVersion: v1 kind: Service metadata:   name: grafana-proxy  # 简单的名称,符合 DNS-1035   namespace: default   # 与 Ingress 相同的 namespace spec:   type: ExternalName   externalName: prometheus-grafana.monitoring.svc.cluster.local   ports:   - port: 80     targetPort: 80     protocol: TCP  ---  apiVersion: v1 kind: Service metadata:   name: prometheus-proxy  # 简单的名称,符合 DNS-1035   namespace: default   # 与 Ingress 相同的 namespace spec:   type: ExternalName   externalName: prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local   ports:   - port: 80     targetPort: 9090     protocol: TCP  ---  apiVersion: networking.k8s.io/v1 kind: Ingress metadata:   name: sprint-service-ingress   annotations:     nginx.ingress.kubernetes.io/rewrite-target: /     nginx.ingress.kubernetes.io/ssl-redirect: "false"     nginx.ingress.kubernetes.io/force-ssl-redirect: "false"  spec:   ingressClassName: nginx   rules:   - host: spring.wilson.local     http:       paths:       - path: /         pathType: Prefix         backend:           service:             name: sprint-service             port:               number: 8080   - host: grafana.wilson.local     http:       paths:       - path: /         pathType: Prefix         backend:           service:             name: grafana-proxy             port:               number: 80   - host: prometheus.wilson.local     http:       paths:       - path: /         pathType: Prefix         backend:           service:             name: prometheus-proxy             port:               number: 80 

应用Ingress配置:

kubectl apply -f ingress.yaml 

4. 获取Ingress Controller的IP地址

kubectl get services ingress-nginx-controller -n ingress-nginx 

这里看到外部IP是192.168.64.3

NAME                       TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)                      AGE ingress-nginx-controller   LoadBalancer   10.43.66.139   192.168.64.3   80:32325/TCP,443:31156/TCP   3h39m 

5. 配置本地hosts文件

192.168.64.3 spring.wilson.local 192.168.64.3 grafana.wilson.local 192.168.64.3 prometheus.wilson.local 

6. 验证配置

kubectl get ingress 
curl http://spring.wilson.local Hello from Spring Boot on Kubernetes! first time: 2025-11-21 07:29:34%   

【Kubernetes】Ingress+host暴露服务

【Kubernetes】Ingress+host暴露服务

引用

java-developer

例子: https://github.com/WilsonPan/java-developer/k8s/monitoring

k8s使用Helm简化k8s部署、管理

k8s部署有状态应用

入门-部署Spring应用

发表评论

评论已关闭。

相关文章