我是AWS EKS的新手,我想知道如何设置入口并启用TLS(使用免费服务,如lets-encrypt
)。
我已经部署了一个EKS
集群,并且我有以下示例nginx
清单。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service-loadbalancer
spec:
type: LoadBalancer. // <------ can't I use a ClusterIp and still have a LB priovisioned?
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
---
#05-ALB-Ingress-Basic.yml
# Annotations Reference: https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-usermgmt-restapp-service
labels:
app: usermgmt-restapp
annotations:
# Ingress Core Settings
kubernetes.io/ingress.class: "alb"
alb.ingress.kubernetes.io/scheme: internet-facing
# Health Check Settings
alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
alb.ingress.kubernetes.io/healthcheck-port: traffic-port
alb.ingress.kubernetes.io/healthcheck-path: /usermgmt/health-status
alb.ingress.kubernetes.io/healthcheck-interval-seconds: '15'
alb.ingress.kubernetes.io/healthcheck-timeout-seconds: '5'
alb.ingress.kubernetes.io/success-codes: '200'
alb.ingress.kubernetes.io/healthy-threshold-count: '2'
alb.ingress.kubernetes.io/unhealthy-threshold-count: '2'
spec:
rules:
- http:
paths:
- path: /*
pathType: Prefix
backend:
service:
name: nginx-service-loadbalancer
port:
number: 80
当它创建LoadBalancer
类型的服务时,它继续创建classic
负载均衡器。
我的问题是:
我如何提供(自动)Layer7应用程序负载均衡器而不是
classic
负载均衡器代替使用
LoadBalancer
类型的服务,我可以使用ClusterIP
服务,并使用我的入口指向它,仍然创建一个自动负载均衡器吗?
谢谢!
- 如何提供(自动)Layer7应用程序负载均衡器,而不是经典的负载均衡器
通过使用入口资源并指定
kubernetes.io/ingress.class: "alb"
。
- 而不是使用LoadBalancer类型的服务,我可以使用ClusterIP服务,并使用我的入口指向它,仍然创建一个自动负载均衡器?
是,当使用
alb
入口资源和注释alb.ingress.kubernetes.io/target-type: ip
时,可以使用clusterip服务。
所以请不要同时创建服务类型的负载均衡器和入口资源。