博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云Serverless Kubernetes通过Ingress提供7层服务访问
阅读量:5806 次
发布时间:2019-06-18

本文共 5014 字,大约阅读时间需要 16 分钟。

摘要: 在阿里云Serverless Kubernetes集群中,我们可以通过LoadBalancer Service对外提供四层服务访问,同样我们也可以通过Ingress来对外提供七层服务访问,今天主要分享下如何在Serverless Kubernetes集群中提供七层域名服务访问。

简介

在阿里云Serverless Kubernetes集群中,我们可以通过LoadBalancer Service对外提供四层服务访问,同样我们也可以通过Ingress来对外提供七层服务访问,今天主要分享下如何在Serverless Kubernetes集群中提供七层域名服务访问。

图片描述

使用说明

不指定SLB实例情况下系统会自动帮您生成一个公网SLB实例。

SLB实例默认前端监听端口为80(HTTP协议)和443(HTTPS协议)。
SLB实例HTTPS证书默认会初始化为第一个创建的Ingress配置的TLS证书,否则会初始化为系统默认证书;您完全可根据需要自行在SLB控制台上进行修改。
当您指定使用已存在的SLB实例时,要求该SLB实例规格必须是性能保障型(支持ENI);同时确保80和443端口当前没有其他服务使用。
注释说明

注释 说明

service.beta.kubernetes.io/alicloud-loadbalancer-id 指定已存在的SLB ID
部署示例

a. 使用默认生成的SLB实例

当我们不指定SLB实例时,系统会在第一个Ingress创建时自动帮我们生成一个性能保障型的公网SLB实例。

1、部署测试服务

这里我们部署一个coffee service和tea service:

apiVersion: extensions/v1beta1

kind: Deployment
metadata:
name: coffee
spec:
replicas: 2
selector:

matchLabels:  app: coffee

template:

metadata:  labels:    app: coffeespec:  containers:  - name: coffee    image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest    ports:    - containerPort: 80

apiVersion: v1

kind: Service
metadata:
name: coffee-svc
spec:
ports:

  • port: 80
    targetPort: 80
    protocol: TCP

selector:

app: coffee

clusterIP: None

apiVersion: extensions/v1beta1

kind: Deployment
metadata:
name: tea
spec:
replicas: 1
selector:

matchLabels:  app: tea

template:

metadata:  labels:    app: tea spec:  containers:  - name: tea     image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest    ports:    - containerPort: 80

apiVersion: v1

kind: Service
metadata:
name: tea-svc
labels:
spec:
ports:

  • port: 80
    targetPort: 80
    protocol: TCP

selector:

app: tea

clusterIP: None

kubectl apply -f cafe-service.yaml
deployment "coffee" created
service "coffee-svc" created
deployment "tea" created
service "tea-svc" created
# 部署完成后
kubectl get svc,deploy
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/coffee-svc ClusterIP <none> <none> 80/TCP 1m
svc/tea-svc ClusterIP <none> <none> 80/TCP 1m

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE

deploy/coffee 2 2 2 2 1m
deploy/tea 1 1 1 1 1m
2、配置 Ingress

通过Ingress配置coffee service和tea service对外暴露的域名和Path路径:

apiVersion: extensions/v1beta1

kind: Ingress
metadata:
name: cafe-ingress
spec:
rules:
# 配置七层域名

  • host: foo.bar.com

    http:

    paths:# 配置Context Path- path: /tea  backend:    serviceName: tea-svc    servicePort: 80
# 配置Context Path  - path: /coffee    backend:      serviceName: coffee-svc      servicePort: 80

kubectl apply -f cafe-ingress.yaml

ingress "cafe-ingress" created
# 部署完成后,ADDRESS为自动生成的SLB实例IP
kubectl get ing
NAME HOSTS ADDRESS PORTS AGE
cafe-ingress foo.bar.com 139.224.76.211 80 1m
3、测试服务访问

注意:目前我们需要自行将域名解析到SLB实例IP上

3.1 通过浏览器测试访问coffee服务:

图片描述

3.2 通过命令行方式测试访问coffee服务:

curl -H "Host: foo.bar.com"

3.3 通过浏览器测试访问tea服务:

图片描述

3.4 通过命令行方式测试访问tea服务:

curl -H "Host: foo.bar.com"

b. 使用指定的SLB实例

我们可以通过注释service.beta.kubernetes.io/alicloud-loadbalancer-id来指定使用已存在的SLB实例,但要求该SLB实例必须为性能保障型规格(支持ENI)。

注意:系统会自动初始化SLB实例的80和443端口,请确保当前没有其他服务使用

1、部署测试服务

这里我们部署一个tomcat service:

apiVersion: extensions/v1beta1

kind: Deployment
metadata:
name: tomcat
spec:
replicas: 1
selector:

matchLabels:  run: tomcat

template:

metadata:  labels:    run: tomcatspec:  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

kubectl apply -f tomcat-service.yml
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
2、申请SLB实例

我们在集群同Region下自行申请一个性能保障型SLB实例(如slb.s2.small),可以是私网也可以是公网(依据具体需求)。

3、配置TLS证书

注意:系统自动依据第一个创建的Ingress的TLS证书来初始化SLB的HTTPS默认证书,若需要修改HTTPS默认证书,可在SLB控制台自行修改;若需配置多个证书,可在SLB控制台HTTPS监听扩展域名下自行添加

# 生成测试TLS证书

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=bar.foo.com/O=bar.foo.com"
# 创建TLS证书Secret
kubectl create secret tls cert-example --key tls.key --cert tls.crt
secret "cert-example" created
# 查看新建TLS证书
kubectl get secret cert-example
NAME TYPE DATA AGE
cert-example kubernetes.io/tls 2 12s
4、配置 Ingress

通过Ingress配置tomcat service对外暴露的域名和Path路径:

apiVersion: extensions/v1beta1

kind: Ingress
metadata:
name: tomcat-ingress
annotations:

# 配置使用指定的SLB实例(SLB ID)service.beta.kubernetes.io/alicloud-loadbalancer-id: lb-uf6y73uq40u9oz1q8snxc

spec:

tls:

  • hosts:

    • bar.foo.com
# 配置TLS证书secretName: cert-example

rules:

# 配置七层域名

  • host: bar.foo.com

    http:

    paths:# 配置Context Path- path: /  backend:    serviceName: tomcat    servicePort: 8080

kubectl apply -f tomcat-ingress.yml

ingress "tomcat-ingress" created
# 部署完成后,ADDRESS为指定的SLB IP地址
kubectl get ing tomcat-ingress
NAME HOSTS ADDRESS PORTS AGE
tomcat-ingress bar.foo.com 47.101.20.67 80, 443 1m
5、测试服务访问

注意:目前我们需要自行将域名解析到SLB实例IP上

5.1 通过浏览器测试访问tomcat服务:

图片描述

5.2 通过命令行方式测试访问tomcat服务:

curl -k -H "Host: bar.foo.com"

本文为云栖社区原创内容,未经允许不得转载

你可能感兴趣的文章
sqlserver使用EF模型经验
查看>>
洛谷 P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers
查看>>
vuejs心法和技法
查看>>
一本通 1292:宠物小精灵之收服
查看>>
一本通 1296:开餐馆
查看>>
模板汇总 ——— 匈牙利算法
查看>>
Typora--Draw Diagrams With Markdown
查看>>
mybatis批量update(mysql)
查看>>
jdbc初步(转)
查看>>
上海市居住证办理材料及流程
查看>>
JQuery Easy Ui (Tree树)详解(转)
查看>>
js身份证号有效性验证
查看>>
python gui的分类
查看>>
IE6浮动列表li最右侧竖直排列
查看>>
Spring与Hibernate整合,实现Hibernate事务管理
查看>>
Behavior Designer中的内置消息机制
查看>>
win10初始用
查看>>
Oracle Instant Client的安装和使用
查看>>
c#实现定时任务(Timer)
查看>>
关于进程的终止和暂停
查看>>