在使用Amazon EKS时,使用NGINX Ingress Controller
首先
总结一下在Amazon EKS上使用NGINX Ingress Controller的方法。
假设您是在Mac环境下操作。
NGINX Ingress Controller是用于Kubernetes的一个反向代理和负载均衡器,使用NGINX作为后端。
使用NGINX Ingress Controller会构建CLB。
准备执行环境
-
- 请参考以下内容来配置AWS CLI,以便运行AWS CloudFormation。
请参考以下内容,在Mac上使用eksctl来构建Amazon EKS集群。
请参考以下内容,在Mac上进行Amazon EKS的上下文配置。
请参考以下内容,在Amazon EKS上使用Helm。
环境设置
-
- 使用Helm来安装NGINX Ingress Controller的图表
-
- * 在安装之前,请先设置Kubernetes集群的上下文配置。
-
- # 添加ingress-nginx图表仓库
-
- helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# 更新仓库
helm repo update
# 安装NGINX Ingress Controller的图表
helm install nginx-ingress-controller ingress-nginx/ingress-nginx \
-n nginx-ingress-controller \
–create-namespace
# 确认NGINX Ingress Controller已安装
helm list -n nginx-ingress-controller
【示例】留言簿的清单
建立留言板。
-
- 将guestbook应用于集群
-
- kubectl apply -f https://raw.githubusercontent.com/argoproj/argocd-example-apps/master/guestbook/guestbook-ui-deployment.yaml
创建ingress.yaml
ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: guestbook-ui
namespace: default
spec:
rules:
– http:
paths:
– path: /
pathType: Prefix
backend:
service:
name: guestbook-ui
port:
number: 3000
创建service.yaml
※参考guestbook-ui-svc.yaml
service.yaml
apiVersion: v1
kind: Service
metadata:
annotations:
labels:
app: guestbook-ui
name: guestbook-ui
namespace: default
spec:
ports:
– port: 3000
protocol: TCP
targetPort: 80
selector:
app: guestbook-ui
type: NodePort
应用于集群
kubectl apply -f ingress.yaml
kubectl apply -f service.yaml
访问guestbook
※在ELB建立之前,可能需要几分钟无法访问。
打开 “http://$(kubectl get svc -n nginx-ingress-controller nginx-ingress-controller-ingress-nginx-controller | awk ‘{ print $4 }’ | tail -1)”
清理
-
- 从集群中删除部署
-
- kubectl delete -f ingress.yaml
-
- kubectl delete -f service.yaml
从集群中删除guestbook
kubectl delete -f https://raw.githubusercontent.com/argoproj/argocd-example-apps/master/guestbook/guestbook-ui-deployment.yaml
使用Helm删除NGINX Ingress Controller
helm delete nginx-ingress-controller -n nginx-ingress-controller
删除Namespace
kubectl delete ns nginx-ingress-controller