本文介绍在创建的Ingress中通过Annotation指定了SLB ID场景下,如何使用该SLB提供Ingress的转发功能。
前提条件
- 您已创建一个ASK集群,集群的VPC需要配置NAT网关,从而可以访问外网,下载容器镜像。具体操作,请参见创建ASK集群。
- 您已通过kubectl连接到集群。具体操作,请参见通过kubectl连接Kubernetes集群。
- 您已经创建一个和ASK集群在同一个VPC的性能保障型规格(支持ENI)SLB实例 。
- 如果您在ASK集群同VPC下已经有一个SLB实例,您可以直接登录负载均衡管理控制台的实例管理页面获取SLB ID。
- 如果您没有SLB ID,您需要在集群同VPC下创建一个性能保障型SLB实例(例如:slb.s2.small),该实例类型可以是私网或公网。具体操作,请参见创建和管理CLB实例。
- 本文操作示例中申请的是公网SLB实例。
操作步骤
说明 Ingress Controller会自动初始化SLB实例的80和443端口,请确保当前没有其他服务使用。
步骤一:部署服务
- 创建并拷贝以下内容到tomcat-service.yml文件中,并执行
kubectl apply -f tomcat-service.yml
命令,部署一个tomcat测试应用。apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat
spec:
replicas: 1
selector:
matchLabels:
run: tomcat
template:
metadata:
labels:
run: tomcat
spec:
containers:
- image: tomcat:7.0
imagePullPolicy: Always
name: tomcat
ports:
- containerPort: 8080
protocol: TCP
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: tomcat
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector:
run: tomcat
clusterIP: None
预期输出:
deployment "tomcat" created
service "tomcat" created
- 执行以下命令查看应用状态。
kubectl get svc,deploy tomcat
预期输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/tomcat ClusterIP <none> <none> 8080/TCP 1m
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/tomcat 1 1 1 1 1m
步骤二:配置Ingress
- 创建并拷贝如下内容到tomcat-ingress.yml文件中,并执行
kubectl apply -f tomcat-ingress.yml
命令,配置Ingress。apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tomcat-ingress
annotations:
# 配置使用指定的SLB实例(SLB ID)。
service.beta.kubernetes.io/alicloud-loadbalancer-id: lb-xxxxxxxxxx ##替换为您的SLB ID。
service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: "true"
#指定证书ID。
service.beta.kubernetes.io/alicloud-loadbalancer-cert-id: "624f2e60-62b6-11ea-95a3-2af160c0****"
spec:
ingressClassName: slb
rules:
# 配置七层域名。
- host: bar.foo.com
http:
paths:
# 配置Context Path。
- path: /
backend:
service:
name: tomcat
port:
number: 8080
pathType: ImplementationSpecific
预期输出:
ingress "tomcat-ingress" created
- 执行以下命令获取SLB实例IP。
kubectl get ing tomcat-ingress
预期输出:
NAME HOSTS ADDRESS PORTS AGE
tomcat-ingress bar.foo.com 47.168.XX.XX 80, 443 1m
步骤三:访问服务
说明 目前需要您自行将域名解析到SLB实例IP上。
本例在域名中添加一条DNS域名解析规则,用于测试服务访问。建议您在工作环境中对域名进行备案。
47.168.XX.XX bar.foo.com