2020-08-03 Ingress(暴露应用对外访问的最佳方

2020-08-05  本文已影响0人  阿丧小威

1. Pod与Ingress的关系

图片.png

2. IngressController

图片.png

1.部署Ingress Controller
2.创建Ingress规则

Ingress Controller有很多实现,我们这里采用官方维护的Nginx控制器。
Github:https://github.com/kubernetes/ingress-nginx
部署:kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
注意事项:

其他主流控制器:
Traefik:HTTP反向代理、负载均衡工具
Istio:服务治理,控制入口流量

3. Ingress HTTP网站测试

准备yaml文件simple-fanout-example.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.ctnrs.com    ---配置域名(域名记得解析到服务器)
    http:
      paths:
      - path: /
        backend:
          serviceName: web    ---service的名称
          servicePort: 80    ---clauster IP端口(应用的端口,例如nginx默认是80)

执行kubectl apply -f simple-fanout-example.yaml创建。
kubectl get ingress查看创建的ingress对象。
然后我们使用http://foo.bar.com 就可以访问服务了。

4. Ingress HTTPS网站测试

首先我们要准备好使用的ssl证书;自签或购买的都是可以的。我们使用自签方式进行演示。
自签证书在前面高可用集群教程https://www.jianshu.com/writer#/notebooks/33131248/notes/72493644/preview里面第5步的域名替换成我们想要颁发的即可。

kubectl get secert 查看我们创建的数字信息。
为ingress-https.yaml设置证书

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: tls-example-ingress
spec:
  tls:
  - hosts:
    - sslexample.ctnrs.com
    secretName: sslexample-ctnrs-com    ---证书名
  rules:
  - host: sslexample.ctnrs.com
    http:
      paths:
      - path: /
        backend:
          serviceName: my-service
          servicePort: 80

执行kubectl apply -f ingress-https.yaml创建。
通过htts://sslexample.ctnrs.com即可访问。

5. Ingress主要功能

6. 故障排查

Ingress工作原理 图片.png
上一篇下一篇

猜你喜欢

热点阅读