Ingress: 翻译, 入口
为什么需要 Ingress

可以实现的功能:
- 基于 cookie 的会话亲和性 (session affinity)
Ingress 控制器是必不可少的
注意:
- 只有 Ingress 控制器在集群中运行, Ingress 资源才能正常运行 (不太理解是什么意思)
- 结合下文看, 控制器可能是指 http 代理的实现 (nginx)
在 minikube 上启动 Ingress 的扩展功能:
- 利用附加组件
列出组件:
$ minikube addons list|-----------------------------|----------|--------------|| ADDON NAME | PROFILE | STATUS ||-----------------------------|----------|--------------|| ambassador | minikube | disabled || auto-pause | minikube | disabled || csi-hostpath-driver | minikube | disabled || dashboard | minikube | enabled ✅ || default-storageclass | minikube | enabled ✅ || efk | minikube | disabled || freshpod | minikube | disabled || gcp-auth | minikube | disabled || gvisor | minikube | disabled || helm-tiller | minikube | disabled || ingress | minikube | disabled | ---- 这里| ingress-dns | minikube | disabled || istio | minikube | disabled || istio-provisioner | minikube | disabled || kubevirt | minikube | disabled || logviewer | minikube | disabled || metallb | minikube | disabled || metrics-server | minikube | enabled ✅ || nvidia-driver-installer | minikube | disabled || nvidia-gpu-device-plugin | minikube | disabled || olm | minikube | disabled || pod-security-policy | minikube | disabled || registry | minikube | disabled || registry-aliases | minikube | disabled || registry-creds | minikube | disabled || storage-provisioner | minikube | enabled ✅ || storage-provisioner-gluster | minikube | disabled || volumesnapshots | minikube | disabled ||-----------------------------|----------|--------------|
启动 ingress 组件:
- 在另外一个 pod 上运行一个 Ingress 控制器
$ minikube addons enable ingress
我的执行失败, 超时.
看 Ingress 在哪里:
$ kubectl get po --all-namespacesNAMESPACE NAME READY STATUS RESTARTS AGEdefault hello-rs-cg852 1/1 Running 0 4h15mdefault hello-rs-vhb7g 1/1 Running 0 4h15mdefault hello-rs-x5r75 1/1 Running 0 4h15mkube-system coredns-74ff55c5b-hxsrg 1/1 Running 3 3dkube-system etcd-minikube 1/1 Running 3 3dkube-system ingress-nginx-admission-create-g7vtb 0/1 Completed 0 100skube-system ingress-nginx-admission-patch-65rxm 0/1 Completed 0 100skube-system ingress-nginx-controller-65cf89dc4f-7mnlz 0/1 ImagePullBackOff 0 100skube-system kube-apiserver-minikube 1/1 Running 3 3dkube-system kube-controller-manager-minikube 1/1 Running 3 3dkube-system kube-proxy-zctp7 1/1 Running 3 3dkube-system kube-scheduler-minikube 1/1 Running 3 3dkube-system metrics-server-56c4f8c9d6-mxtqq 0/1 ImagePullBackOff 0 2d2hkube-system storage-provisioner 1/1 Running 6 3dkubernetes-dashboard dashboard-metrics-scraper-f6647bd8c-wcx6p 1/1 Running 2 2d3hkubernetes-dashboard kubernetes-dashboard-968bcb79-ltzkc 1/1 Running 3 2d3h
5.4.1 创建 Ingress 资源


5.4.2 通过 Ingress 访问服务
获取 Ingress 的 IP 地址
列出 Ingress:

确保在 Ingress 中配置的 Host 指向 Ingress 的 IP 地址
需要配置 DNS.
通过 Ingress 访问 pod
了解 Ingress 的工作原理

Ingress 通过 Endpoints 查看可用 pod 的地址并进行选择.
5.4.3 通过相同的 Ingress 暴露多个服务
将不同的服务映射到相同主机的不同路径

注意 serviceName 的值不同.
将不同的服务映射到不同的主机上

别忘记配置 DNS.
5.4.4 配置 Ingress 处理 TLS 传输
为 Ingress 创建 TLS 认证
证书和私钥存储在 Secret 资源中.
创建私钥和证书:

创建 Secret:
- tls-secret: secret 名称

更新 Ingress 配置:
kubectl apply -f kubia-ingress-tls.yaml

