0
点赞
收藏
分享

微信扫一扫

使用AGIC发布AKS应用-HTTPS

前面和大家聊了使用Application Gateway Ingress Controller(以下简称:AGIC)以HTTP的形式将AKS群集内的业务系统发布到Internet以供用户使用。但是在实际的生产场景中,处于安全角度考量,其实客户很少将Web服务以HTTP的形式对外暴露,主要会使用HTTPS的形式对外发布应用。

我们知道HTTPS的服务非常安全,Google 现在对非HTTPS的服务默认是拒绝的,而且还能避免国内各种乱七八糟的劫持,所以以HTTPS的形式对外暴露服务真的时非常有必要的。在AKS中,因为AGIC是一个7层的负载均衡,所以支持以HTTPS的形式对外暴露AKS群集内的服务。当AGIC接受来自客户端的 HTTPS 请求时,客户端与AGIC之间的流量使用 TLS 进行加密。但是,AGIC可终止 TLS 加密,并将未加密的请求转发给应用,这样我们就在AGIC上实现了HTTPS卸载的动作。

先决条件

若想使用AGIC以HTTPS的形式对外发布AKS群集内的应用,需要满足如下先决条件:

  • 一个启用了AGIC的AKS群集
  • 一个配置解析到AGIC的公网域名
  • 一个公网域名所对应的证书
部署应用程序

满足了上述先决条件以后我们就需要向AKS内部署一个实例的应用程序,本次我们以NGINX为例进行部署。

编写yaml文件,部署NGINX Pod和Service,具体如下所示:

apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
protocol: TCP

---

apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 80

yaml编写好以后,使用 kubectl apply -f 进行部署:

使用AGIC发布AKS应用-HTTPS_Azure

部署完成以后可以使用kubectl get pod和kubectl get svc进行查看,可以看到资源已经部署成功:

使用AGIC发布AKS应用-HTTPS_Azure Kubernetes_02


准备证书

若要将服务以HTTPS的形式对外进行暴露,我们需要给所使用的域名配置相关证书,建议大家使用公网证书进行服务的发布。当前我已经准备了相应的证书:

使用AGIC发布AKS应用-HTTPS_Network_03

证书准备好以后,我们需要将其部署到AKS群集内,证书在群集内是以secret的形式存在的,所以我们需要创建一个secret,具体方式如下:

kubectl create secret tls

使用AGIC发布AKS应用-HTTPS_Azure Kubernetes_04

创建好以后,使用kubectl get secret进行检查:

使用AGIC发布AKS应用-HTTPS_Application Gateway_05

使用AGIC发布服务

准备好上述内容以后,我们就可以使用AGIC发布服务啦。

使用如下yaml文件发布服务,可以看到,我们是以tls的形式对外发布的服务并且指明了域名和证书相关信息。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
tls:
- hosts:
- www.cloudmsp.club
secretName: www.cloudmsp.club
rules:
- host: www.cloudmsp.club
http:
paths:
- path: /
backend:
service:
name: nginx
port:
number: 80
pathType: Prefix

运行kubectl apply -f 部署Ingress:

使用AGIC发布AKS应用-HTTPS_Azure_06

部署完成以后,运行kubectl get ingress进行查看:

使用AGIC发布AKS应用-HTTPS_Azure_07

部署完以后,切换到Application Gateway,可以看到已经自动配置了相关的规则:

使用AGIC发布AKS应用-HTTPS_Azure Kubernetes_08


测试访问

都配置好以后,我们可以通过浏览器访问网站进行测试,可以看到,现在已经是使用HTTPS协议访问我们的nginx服务:

使用AGIC发布AKS应用-HTTPS_Application Gateway_09

ok,到这里我们就给大家介绍了如何使用AGIC发布AKS内的业务应用,感兴趣的同学可以自己测试下哈!

举报

相关推荐

0 条评论