当创建Ingress
时,会创建对应的ALB,ALB和Ingress共享生命周期
它工作在7层,支持HTTP/HTTPS协议
在部署Ingress前,要先安装好AWS Load Balancer Controller
。
将下面内容保存为alb.yaml
:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/target-type: ip # 当检查这个annotation时,AWS Load Balancer Controller会创建ALB
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/tags: Environment=dev,Team=test,audo-delete=no
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: web-nginx-module
servicePort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: default
labels:
app: web-nginx-module
spec:
replicas: 1
selector:
matchLabels:
app: web-nginx-module
template:
metadata:
labels:
app: web-nginx-module
spec:
containers:
- name: web-nginx-module
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: web-nginx-module
namespace: default
labels:
app: web-nginx-module
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
app: web-nginx-module
创建:
kubectl apply -f alb.yaml
创建完成后,在控制台看到ALB的详细信息:
访问:
利用Annotation, 可以自定义ALB的各种行为: