Google Kubernetes引擎上使用Istio简化微服务 — 第II部分 (译)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
云原生网关 MSE Higress,422元/月
简介: Google Kubernetes引擎上使用Istio简化微服务 — 第II部分 (译)

Google Kubernetes引擎上使用Istio简化微服务 — 第II部分


作者:Nithin Mallya

翻译:狄卫华

首发: https://mp.weixin.qq.com/s/3jBza5239cFe4dIVzP_kegServiceMesh中文网

原文:Simplifying Microservices with Istio in Google Kubernetes Engine — Part II

原文链接:https://medium.com/google-cloud/simplifying-microservices-with-istio-in-google-kubernetes-engine-part-ii-7461b1833089


本系列翻译链接:


我所写的关于 Istio 的文章是 Istio 非常棒的官方文档 中的一部分。如果想了解更多,请阅读官方文档。


在本系列 第一部分PartI , 我们展示了如何使用 Istio 简化我们微服务间的通信。


在这个部分,我们将会看到在服务网格内部的服务是如何与外部服务通过 HTTPS 协议进行通信的


                                          图1:微服务通信模型的逻辑视图


在上面的图1,PetService(直接与 PetDetailsService 和 PetMedicalHistoryService 服务进行通信)现在将也会调用外部的服务,外部服务位于 https://thedogapi.co.uk,返回 dog 图片的 url 地址。


Istio 服务网格与外部的服务通信展示在下面的图 2 所示。


  • 与往常一样,在服务网格内的服务通信通过HTTP协议代理
  • 与使用 HTTPS 协议的外部服务通信,内部服务仍然是发送 HTTP 请求,HTTP 请求会被以边车(sidecar)方式部署的代理所拦截,并作为 TLS 协议的发起方与外部的服务在加密通道上进行通信


                                  图2: Istio 服务网格展示与外部服务通信


Github repo

petservice 代码如下所示:


备注:展示我们如何调用 DogAPI https,地址为 http://api.thedogapi.co.uk:443/v2/dog.php


让我们看一下当运行以下命令时会发生什么?其中 108.59.82.93 为 入口(Ingress)IP 地址 (参见 第一部分)

curl http://108.59.82.93/pet/123

响应内容如下:

{
  "petDetails": {
    "petName": "Maximus",
    "petAge": 5,
    "petOwner": "Nithin Mallya",
    "petBreed": "Dog"
  },
  "petMedicalHistory": {
    "vaccinationList": [
      "Bordetella, Leptospirosis, Rabies, Lyme Disease"
    ]
  },
  "dogAPIResponse": {
    "message": "request to https://api.thedogapi.co.uk/v2/dog.php failed, reason: read ECONNRESET",
    "type": "system",
    "errno": "ECONNRESET",
    "code": "ECONNRESET"
  }
}


你会注意到当 petservice 访问位于 https://api.thedogapi.co.uk 的外部服务时,上述的响应内容中 dogAPIResponse(不是最原始的名字)部分有一个错误信息。


这是因为所有外部的流量(egress)在默认情况下被阻止。在前面的文章中解释过边车(sidecar)代理只允许集群内的通信。


备注:正如我在第一部分提及的那样,当我们想要管控服务与外部服务通信的方式和阻止任何未经授权的访问的时候,这个限制非常有用。

医疗保健/金融系统可以特别利用此功能来保护PHI / PII数据不会被无意地甚至恶意地从内部服务中共享。


为了启用出口(egress)流量,你需要创建如下所示的出口规则(egress rule):

cat <<EOF | istioctl create -f -
apiVersion: config.istio.io/v1alpha2
kind: EgressRule
metadata:
  name: dogapi-egress-rule
spec:
  destination:
    service: api.thedogapi.co.uk
  ports:
    - port: 443
      protocol: https
EOF

为了检查该出口规则(egress rule)是否已被创建,你可以运行下面的命令,你应该看到出口规则(egress rule)dogapi-egress-rule已经被创建。


$ kubectl get egressrule
NAME                 AGE
dogapi-egress-rule   5m

我们再次运行上面的 curl 命令:


$ curl http://108.59.82.93/pet/123
{
  "petDetails": {
    "petName": "Maximus",
    "petAge": 5,
    "petOwner": "Nithin Mallya",
    "petBreed": "Dog"
  },
  "petMedicalHistory": {
    "vaccinationList": [
      "Bordetella, Leptospirosis, Rabies, Lyme Disease"
    ]
  },
  "dogAPIResponse": {
    "count": 1,
    "api_version": "v2",
    "error": null,
    "data": [
      {
        "id": "rCaz-LNuzCC",
        "url": "https://i.thedogapi.co.uk/rCaz-LNuzCC.jpg",
        "time": "2017-08-30T21:43:03.0",
        "format": "jpg",
        "verified": "1",
        "checked": "1"
      }
    ],
    "response_code": 200
  }
}

已经可以工作了,我们可以从 DogAPI 响应的样例中看到返回的 Pet 图片地址。


结论:我们看到如何通过创建明确规则来启用从服务网格(service mesh )到外部服务的通信。


在后续的文章中,我们将会看到如何实施其他重要的任务比如流量路由(traffic routing)和流量变化(ramping),使用断路器(circuit breaker)等。


资源:


  1. 本系列文章的第 I 部分: https://medium.com/google-cloud/simplifying-microservices-with-istio-in-google-kubernetes-engine-part-i-849555f922b8
  2. Istio 官方地址 https://istio.io/
  3. DevOxx 的RayTsang的Istio演讲材料: https://www.youtube.com/watch?v=AGztKw580yQ&t=231s
  4. 案例的Github: https://github.com/nmallya/istiodemo
  5. Kubernetes: https://kubernetes.io/
  6. DogAPI 网址: https://thedogapi.co.uk/
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1453 9
|
1月前
|
监控 Kubernetes Java
使用 New Relic APM 和 Kubernetes Metrics 监控 EKS 上的 Java 微服务
在阿里云AKS上运行Java微服务常遇性能瓶颈与OOMKilled等问题。本文教你通过New Relic实现集群与JVM双层监控,集成Helm部署、JVM代理注入、GC调优及告警仪表盘,打通从节点资源到应用内存的全链路观测,提升排障效率,保障服务稳定。
138 1
|
11月前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
11月前
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
397 82
|
8月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
11月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
528 60
|
8月前
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
10月前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
542 24
|
10月前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
579 6
|
11月前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?

热门文章

最新文章

推荐镜像

更多