云原生Istio案例实战 2

简介: 云原生Istio案例实战

2.3 启动bookinfo

进入istio安装目录:/home/tools/istio-1.0.6/samples/bookinfo/platform/kube

找到bookinfo.yaml文件

查看需要的image个数:

cat bookinfo.yaml | grep image:

里面就是bookinfo案例所需要依赖的镜像地址

  • 执行命令
kubectl apply -f  bookinfo.yaml -n bookinfo-ns
  • 查看pod情况
kubectl get pods -n bookinfo-ns
# 会发现有两个container,有两个container的原因是因为我们有自动注入,这边有六个服务,其实只要四个服务,有一个服务有三个版本仅此而已

  • 查看pod明细
kubectl describe pods pod名字 -n bookinfo-ns
# 例如:kubectl describe pods reviews-v1-fd6c96c74-cmqcx -n bookinfo-ns

会发现有两个container,一个是我们自己的container,另外一个是自动注入的代理container

  • 检查一下service
kubectl get svc -n bookinfo-ns

可以看到service的类似clusterip类型

  • 验证Bookinfo 应用是否正在运行

请在某个 Pod 中用 curl 命令对应用发送请求,例如 ratings

  • 执行命令
   kubectl exec -it $(kubectl get pod -l app=ratings -n bookinfo-ns -o jsonpath='{.items[0].metadata.name}') -c ratings -n bookinfo-ns -- curl productpage:9080/productpage | grep -o "<title>.*</title>"

看到如图所示表示bookinfo启动成功

命令分析一下

kubectl get pod -l app=ratings -n bookinfo-ns -o jsonpath='{.items[0].metadata.name}';表示的是输出ratings 这个运行时pod的名字
kubectl exec -it $(kubectl get pod -l app=ratings -n bookinfo-ns -o jsonpath='{.items[0].metadata.name}') -c ratings -n bookinfo-ns -- curl productpage:9080/productpage | grep -o "<title>.*</title>":进入到ratings内部,然后发送一个http测试,根据响应结果找到title标签

思考:能否通过页面的方法访问bookinfo项目呢

所以下面我们用ingress方式访问bookinfo

2.4 通过ingress方式访问

  • 找到productpage-service服务的端口,打开bookInfo.yaml文件

需要给productpage暴露的9080端口进行ingress域名绑定

  • 新建productpageIngress.yaml
#ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: productpage-ingress
spec:
 rules:
 - host: productpage.istio.qy.com
   http:
     paths:
     - path: /
       backend:
         serviceName: productpage
         servicePort: 9080
  • 查询productpage这个pod分布在那台服务上,执行命令
kubectl get pods -o wide -n bookinfo-ns

服务发现在w1机器上

  • 配置hosts文件
192.168.187.137    productpage.istio.qy.com
  • 执行命令
kubectl apply -f productpageIngress.yaml -n bookinfo-ns
  • 访问地址:productpage.istio.qy.com

点击Normal user,查看书籍相关的评论

不停的刷新会有三个Reviews版本一个是不带星的一个是带黑色星的一个是带红星的,跟架构图一样的

2.5 通过istio的ingressgateway访问

2.5.1 确定 Ingress 的 IP 和端口

现在 Bookinfo 服务启动并运行中,需要使应用程序可以从外部访问 Kubernetes 集群,例如使用浏览器。可以用Istio Gateway来实现这个目标。


为应用程序定义 Ingress 网关

地址:/home/tools/istio-1.0.6/samples/bookinfo/networking有一个bookinfo-gateway.yaml

kubectl apply -f bookinfo-gateway.yaml -n bookinfo-ns
  • 查看gateway
kubectl get gateway -n bookinfo-ns

有了gateway之后我们需要配置一些环境变量

配置gateway ip环境

export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')
# 把ingressgateway的ip设置成环境变量

分析命令意思

kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}'
# 表示获取istio组件ingressgateway组件的ip

也就是说192.168.187.137就是ingressgateway组件的ip

配置gateway端口

export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')

把ingressgateway的端口设置成环境变量

分析命令意思

kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}'
# 表示获取istio组件ingressgateway组件的端口

设置gateway地址

把前面的host跟端口组成gateway地址

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

查看INGRESS_PORT环境端口

env | grep INGRESS_PORT

测试

http://192.168.187.137:31380/productpage

不停的刷新会有三个Reviews版本一个是不带星的一个是带黑色星的一个是带红星的,跟架构图一样的

目录
相关文章
|
25天前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
1月前
|
监控 安全 Cloud Native
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
47 2
|
4月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19373 30
|
3月前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
4月前
|
Kubernetes Cloud Native Docker
云原生入门:Docker容器化部署实战
【8月更文挑战第31天】在数字化浪潮中,云原生技术成为企业转型的助推器。本文通过Docker容器化部署的实践案例,引导读者从零基础到掌握基础的云原生应用部署技能。我们将一起探索Docker的魅力,学习如何将一个应用容器化,并在云平台上运行起来,为深入云原生世界打下坚实基础。
|
5月前
|
Kubernetes Cloud Native 微服务
企业级容器部署实战:基于ACK与ALB灵活构建云原生应用架构
这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务Kubernetes版(ACK)和应用负载均衡器(ALB)实现的解决方案。它强调了ACK相对于自建Kubernetes的便利性,包括优化的云服务集成、自动化管理和更强的生态系统支持。文章提供了部署云原生应用的步骤,包括一键部署和手动部署的流程,并指出手动部署更适合有技术背景的用户。作者建议在预算允许的情况下使用ACK,因为它能提供高效、便捷的管理体验。同时,文章也提出了对文档改进的建议,如添加更多技术细节和解释,以帮助用户更好地理解和实施解决方案。最后,展望了ACK未来在智能化、安全性与边缘计算等方面的潜在发展。水文一篇,太忙了,见谅!
|
7月前
|
Cloud Native 测试技术 数据库
【云原生之Docker实战】使用Docker部署flatnotes笔记工具
【5月更文挑战第17天】使用Docker部署flatnotes笔记工具
255 8
|
7月前
|
Cloud Native 关系型数据库 分布式数据库
【PolarDB开源】PolarDB数据迁移实战:平滑过渡至云原生数据库
【5月更文挑战第24天】本文介绍了如何平滑迁移数据至阿里云的云原生数据库PolarDB,包括迁移准备、策略选择、步骤、验证及示例代码。通过需求分析、环境准备和数据评估,选择全量、增量或在线迁移策略。使用数据导出、导入及同步工具(如DTS)完成迁移,并在完成后验证数据一致性、性能和安全。正确执行可确保业务连续性和数据完整性。
237 1
|
7月前
|
存储 弹性计算 Kubernetes
【阿里云云原生专栏】深入解析阿里云Kubernetes服务ACK:企业级容器编排实战
【5月更文挑战第20天】阿里云ACK是高性能的Kubernetes服务,基于开源Kubernetes并融合VPC、SLB等云资源。它提供强大的集群管理、无缝兼容Kubernetes API、弹性伸缩、安全隔离及监控日志功能。用户可通过控制台或kubectl轻松创建和部署应用,如Nginx。此外,ACK支持自动扩缩容、服务发现、负载均衡和持久化存储。多重安全保障和集成监控使其成为企业云原生环境的理想选择。
531 3
|
7月前
|
弹性计算 Cloud Native 安全
【阿里云云原生专栏】云原生与芬克斯:阿里云函数计算在金融行业的应用案例
【5月更文挑战第26天】阿里云函数计算在金融行业数字化转型中发挥关键作用,提供高可用、安全、灵活且成本效益的解决方案。通过事件驱动架构和弹性伸缩,适应业务波动,确保服务连续性。在实时风控系统案例中,函数计算实现低延迟评估,提升风控效率。此技术助力金融企业快速创新,增强市场竞争力。
362 0