在使用Amazon EKS时,使用NGINX Ingress Controller

首先

总结一下在Amazon EKS上使用NGINX Ingress Controller的方法。
假设您是在Mac环境下操作。
NGINX Ingress Controller是用于Kubernetes的一个反向代理和负载均衡器,使用NGINX作为后端。
使用NGINX Ingress Controller会构建CLB。

准备执行环境

    1. 请参考以下内容来配置AWS CLI,以便运行AWS CloudFormation。

请参考以下内容,在Mac上使用eksctl来构建Amazon EKS集群。

请参考以下内容,在Mac上进行Amazon EKS的上下文配置。

请参考以下内容,在Amazon EKS上使用Helm。

环境设置

    1. 使用Helm来安装NGINX Ingress Controller的图表

 

    1. * 在安装之前,请先设置Kubernetes集群的上下文配置。

 

    1. # 添加ingress-nginx图表仓库

 

    1. 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

【示例】留言簿的清单

建立留言板。

    1. 将guestbook应用于集群

 

    1. 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)”

清理

    1. 从集群中删除部署

 

    1. kubectl delete -f ingress.yaml

 

    1. 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