在aws上使用eks进行服务发布


上一篇我们在aws上部署好了istio,但是服务的发布我们还需要解决。今天我们把aws+eks+LB+istio+服务发布流程给大家展示一下。

eks 的架构是控制平面(apiserver、controlmanager、schedule、etcd)托管给aws维护,我们用户只需要关注计算节点配置规格和业务编排、业务发布即可。

在自建的kubernetes集群中,需要发布集群中的服务。需要使用ingressNginx或者nodePort的svc进行。然后还要在集群节点端口前面堆各类负载均衡或者nginx、haproxy等等。

然而上了aws的eks这一切就变得非常简单。

eks可以通过k8s创建类型为Loadbance的svc 就可以轻松使用LB作为服务发布入口了。

本文通过创建istio服务网格,然后建立Gateway和vs、dr来进行demo发布一个服务。
拓扑如下: istio-install

安装istio

#生成kubeconfig
aws eks --region us-east-1 update-kubeconfig --name sklinux-k8s
#获取并安装最新istio1.6.8版本
https://github.com/istio/istio/releases/tag/1.6.8
cd  ~/soft/istio-1.6.8
#生成配置文件
istioctl manifest generate --set profile=default \
--set values.grafana.enabled=true \
--set values.kiali.enabled=true > istio.1.6.8.yaml  

#开启grafana和kiali调用关系功能,通过kiali可以查看istio组件是否健康。
#grafana是istio自带的istio相关监控。

kubectl create ns istio-system
kubectl create -f istio.1.6.8.yaml

istio-install

查看istio-system服务状态

istio-status

可以看见istio已经安装成功,相应的LoadBalancer也创建好了。
我们把nginx.sklinux.com cname 到这个a4dbfba38834347859086fbdfb1cb880-855875512.us-east-1.elb.amazonaws.com. LB的域名。

创建demo

#示范服务编排仓库地址
git clone https://github.com/zhengweisk/istio-eks-demo
#导入证书到istio
kubectl create -n istio-system secret generic istio-ingressgateway-certs --from-file=./nginx.sklinux.com/nginx.sklinux.com.pem --from-file=./nginx.sklinux.com/nginx.sklinux.com.key
kubectl create -f deploy.yaml #创建deployment
kubectl create -f svc.yaml #创建svc
kubectl create -f gw.yaml #创建网关
kubectl create -f vs.yaml #创建虚拟服务
kubectl create -f dr.yaml #创建路由

istio-status 然后我们可以看见已经可以访问http和https了。 istio-status 至此,我们在eks上通过istio做服务发布就完成了!