使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 在5G电信领域,Kubernetes集群中部署微服务至关重要,但也带来了重大的安全挑战。Istio作为一个强大的开源服务网格,能有效地管理这些微服务间的通信,通过其控制平面自动将Sidecar代理注入到各微服务Pod中,确保了安全且高效的通信。Istio的架构由数据平面和控制平面组成,其中Sidecar代理作为Envoy代理运行在每个Pod中,拦截并管理网络流量。此外,Istio支持多种Kubernetes发行版和服务,如EKS等,不仅增强了安全性,还提高了应用性能和可观测性。

Kubernetes 集群中部署微服务在 5G 电信中至关重要。但是,它也带来了重大的安全风险。虽然防火墙规则和代理提供了初始安全性,但 Kubernetes 中的默认通信机制(例如未加密的网络流量和缺乏访问控制)本质上是不安全的。这种不安全性可能会危及敏感数据。因此,在每个微服务 Pod 中实施额外的安全措施不仅仅是一个建议,而是确保集群内安全通信的关键步骤。因此,每个应用程序内部都需要进行额外的配置。

Istio 通过有效管理各个 5G 电信微服务 pod 之间的通信,为这些挑战提供了强大的解决方案。通过其控制平面,Istio 会自动将 sidecar 代理注入到各个微服务 pod 中,确保安全高效的通信。

让我们深入了解一下。

什么是 Istio?

Istio 是一个至关重要的开源服务网格,可与基于微服务的应用程序无缝集成,从而简化监控、管理以及执行性能和安全策略。它可以防止过载,限制未经授权的访问,并保护传输中的数据。其支持系统统一并确保了微服务的顺畅运行,大大简化了其管理,并确保毫不费力地满足性能和安全要求。

什么是 Sidecar 代理?

sidecar 代理是一个单独的容器,它与 Kubernetes 微服务 pod 一起运行。它负责卸载 Istio 中所有应用程序所需的功能。sidecar 代理是 Istio 架构的一个强大组件,它拦截应用程序的传入和传出网络流量。它使电信运营商能够应用策略并利用上述弹性特性,并使运营商能够在与外界的接口点执行高级功能,展示了 Istio 架构的能力。

建筑

Istio 架构的骨干很大程度上受到两个关键组件的影响,每个组件在其功能中都起着关键作用:

  1. 数据平面是 Istio 架构的关键部分,由一组代理(使用 Envoy(分布式应用程序的开源代理)部署),它们作为 sidecar 容器与微服务一起运行。
  2. 控制平面是 Istio 架构中的决定性元素,它管理代理并指示其操作。让我们更详细地了解每个组件。它包括以下组件:
  • 试点:管理服务发现和流量。
  • Citadel:管理安全性并启用安全通信。
  • 厨房:验证和分发配置资源。
  • Mixer:处理策略实施和遥测收集。
  • Sidecar Injector:自动将 Envoy sidecar 代理注入 Kubernetes pod 中,以便于集成。

为了解释 Istio 架构的工作原理,我们将使用基于上述架构图的示例,部署了 Microservice-A 和 Microservice-B 的 sidecar 代理确保了无缝和高效的通信。 sidecar 代理拦截网络流量,使应用程序能够实施和执行策略、利用弹性功能并启用高级功能。

当 Microservice-A 向 Microservice-B 发送请求时,sidecar 代理会识别目的地并转发请求,并检查服务到服务的通信策略,根据安全性、性能和可靠性确定调用是否应通过。这种拦截、转发和检查的过程可确保请求得到适当处理。如果请求通过,微服务-B会处理该请求,准备响应,并通过网络将其发送回,该网络被sidecar代理拦截并转发到客户端,然后转发到目标应用程序微服务A。

了解 Istio Service Mesh 对 Kubernetes 微服务的重要性

Istio 服务网格在 Kubernetes 中是必不可少的。虽然 Kubernetes 管理微服务,但它不处理流量管理、访问策略或遥测数据收集。Istio 无需更改应用程序代码即可提供这些功能,使其成为使用 sidecar 容器管理 Kubernetes 中微服务的有吸引力的解决方案。它可以在任何分布式环境中运行,为云或本地应用程序提供安全的解决方案。

Istio 支持 Kubernetes 发行版,包括 EKS 等托管服务和自管理集群。它还适用于不同的应用程序编排平台和所有微服务应用程序,包括无服务器架构。

Istio 的优势

Istio 为 Kubernetes 和 Istio 兼容平台提供了几个关键优势:

  1. 安全:在微服务之间强制实施强身份验证和授权要求。
  2. 应用性能:在微服务之间高效路由流量,并处理重试和故障转移。
  3. 可观察性:从各个微服务收集遥测数据,以便详细了解运行状况和性能。
  4. 故障 排除: 单独监视每个微服务,以识别和解决性能和安全问题。

总体而言,Istio 简化了基于微服务的现代应用程序管理员的管理。

配置 YAML(另一种标记语言)

Service Mesh Control Plane 管理代理以路由流量,为数据平面提供策略和配置,并授权管理员定义和配置各种服务。配置完成后,SMCP 会将必要的信息分发到服务网格的数据平面,从而允许代理动态调整其行为。

电信运营商可以使用以下配置安装和运行SMCP(Service Mesh Control Plane):

SMCP YAML

YAML的

1

apiVersion: maistra.io/v2

2

kind: ServiceMeshControlPlane

3

metadata:

4

 name: full-install

5

 namespace: istio-system

6

spec:

7

 version: v2.1

8

 techPreview:

9

     meshConfig:

10

       defaultConfig:

11

         concurrency: 8     # Adjust according to the need

12

 proxy:

13

   runtime:

14

     container:

15

       resources:

16

         requests:

17

           cpu: 500m

18

           memory: 256Mi

19

         limits:             # Adjust according to the need

20

           cpu: "1"

21

           memory: 1Gi

22

 tracing:

23

   sampling: 10000 # 0.01% increments. 10000 samples 100% of traces

24

   type: Jaeger

25

 gateways:

26

   ingress: # istio-ingressgateway

27

     service:

28

       type: ClusterIP

29

       ports:

30

         - name: status-port

31

           port: 15020

32

         - name: http2

33

           port: 80

34

           targetPort: 8080

35

         - name: https

36

           port: 443

37

           targetPort: 8443

38

     meshExpansionPorts: []

39

   egress: # istio-egressgateway

40

     service:

41

       type: ClusterIP

42

       ports:

43

         - name: status-port

44

           port: 15020

45

         - name: http2

46

           port: 80

47

           targetPort: 8080

48

         - name: https

49

           port: 443

50

           targetPort: 8443

51

   additionalIngress:

52

     some-other-ingress-gateway: {}

53

   additionalEgress:

54

     some-other-egress-gateway: {}

55

56

 policy:

57

   type: Istiod

58

 telemetry:

59

   type: Istiod

60

61

 addons:

62

   grafana:

63

     enabled: true

64

   kiali:

65

     name: kiali

66

     enabled: true

67

     install: # install kiali CR if not available

68

       dashboard:

69

         viewOnly: false

70

         enableGrafana: true

71

         enableTracing: true

72

         enablePrometheus: true

73

   jaeger:

74

     name: jaeger-production

75

     install:

76

       storage:

77

         type: Elasticsearch

78

         elasticsearch:

79

           nodeCount: 3

80

           redundancyPolicy: SingleRedundancy

81

           indexCleaner:

82

             enabled: true

83

             numberOfDays: 7

84

             schedule: 55 23 * * *

85

       ingress:

86

         enabled: true

87

 runtime:

88

   components:

89

     tracing.jaeger.elasticsearch: # only supports resources and image name

90

       container:

91

         resources:

92

           limits:

93

             cpu: 1

94

             memory: 1Gi

95

           requests:

96

             cpu: 500m

97

             memory: 1Gi

98

     pilot:

99

       deployment:

100

         autoScaling:

101

           enabled: true

102

           minReplicas: 2

103

           maxReplicas: 2

104

           targetCPUUtilizationPercentage: 85

105

       pod:

106

         tolerations:

107

           - key: node.kubernetes.io/unreachable

108

             operator: Exists

109

             effect: NoExecute

110

             tolerationSeconds: 60

111

         affinity:

112

           podAntiAffinity:

113

             requiredDuringScheduling:

114

               - key: istio

115

                 topologyKey: kubernetes.io/hostname

116

                 operator: In

117

                 values:

118

                   - pilot

119

       container:

120

         resources:

121

           limits:                # Adjust according to the need

122

             cpu: "1"

123

             memory: 1Gi


Service Mesh Member Roll 明确标识与 Service Mesh 控制平面关联的项目。唯一地,登记在册上的项目会受到控制平面的影响。将项目添加到成员卷中会将其链接到特定的控制平面部署。

电信运营商可以使用以下配置安装和运行SMMR(Service Mesh Member Roll):

SMMR YAML

YAML的

1

apiVersion: maistra.io/v1

2

kind: ServiceMeshMemberRoll

3

metadata:

4

 name: default

5

 namespace: istio-system

6

spec:

7

 members:

8

 - <Micro services pods namespace>  #  namespace that needs be istio injected.


安装

1. 安装 SMCP(Service Mesh Control Plane),如下所示。

2. 按如下方式安装 SMMR(Service Mesh Member Roll)。

结论

Istio 简化了 Kubernetes 环境中 5G 电信微服务 Pod 之间的通信,并实现了跨不同平台的微服务架构的无缝连接、控制、监控和安全性。它支持容器和虚拟机中的工作负载。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
16天前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
16天前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
50 0
|
3天前
|
监控 安全 网络安全
解锁Micronaut安全秘籍:一剑封喉,让你的微服务无懈可击,抵御黑客侵袭的终极防护罩!
【9月更文挑战第10天】Micronaut作为高性能、轻量级的云原生Java框架,在微服务开发中备受青睐。本文详细探讨了Micronaut的安全特性,包括认证与授权、通讯加密、服务注册与发现、防火墙与反向代理及日志与监控等,通过示例代码展示了如何配置JWT验证,确保服务间安全通信,增强系统可靠性,并及时发现潜在安全问题。
25 5
|
8天前
|
存储 Java Maven
从零到微服务专家:用Micronaut框架轻松构建未来架构
【9月更文挑战第5天】在现代软件开发中,微服务架构因提升应用的可伸缩性和灵活性而广受欢迎。Micronaut 是一个轻量级的 Java 框架,适合构建微服务。本文介绍如何从零开始使用 Micronaut 搭建微服务架构,包括设置开发环境、创建 Maven 项目并添加 Micronaut 依赖,编写主类启动应用,以及添加控制器处理 HTTP 请求。通过示例代码展示如何实现简单的 “Hello, World!” 功能,并介绍如何通过添加更多依赖来扩展应用功能,如数据访问、验证和安全性等。Micronaut 的强大和灵活性使你能够快速构建复杂的微服务系统。
31 5
|
13天前
|
开发者 项目管理 开发工具
震惊!单人开发者如何成功过渡到团队协作?Xamarin 项目管理经验大揭秘,让你的开发之路一帆风顺!
【8月更文挑战第31天】Xamarin 是移动应用开发领域的热门跨平台工具,适用于个人开发者及团队。个人开发时需明确需求、运用版本控制(如 Git)并合理规划项目结构以增强代码可维护性。团队协作时,则需建立有效沟通渠道、统一代码规范、严格版本控制及合理分配任务,以提升开发效率与项目质量。
27 1
|
22天前
|
存储 监控 安全
大数据架构设计原则:构建高效、可扩展与安全的数据生态系统
【8月更文挑战第23天】大数据架构设计是一个复杂而系统的工程,需要综合考虑业务需求、技术选型、安全合规等多个方面。遵循上述设计原则,可以帮助企业构建出既高效又安全的大数据生态系统,为业务创新和决策支持提供强有力的支撑。随着技术的不断发展和业务需求的不断变化,持续优化和调整大数据架构也将成为一项持续的工作。
|
13天前
|
数据库 Java 数据库连接
Hibernate 实体监听器竟如魔法精灵,在 CRUD 操作中掀起自动化风暴!
【8月更文挑战第31天】在软件开发中,效率与自动化至关重要。Hibernate 通过其强大的持久化框架提供了实体监听器这一利器,自动处理 CRUD 操作中的重复任务,如生成唯一标识符、记录更新时间和执行清理操作,从而大幅提升开发效率并减少错误。下面通过示例代码展示了如何定义监听器类,并在实体类中使用 `@EntityListeners` 注解来指定监听器,实现自动化任务。这不仅简化了开发流程,还能根据具体需求灵活应用,满足各种业务场景。
23 0
|
13天前
|
前端开发 微服务 API
微服务浪潮下的JSF革新:如何在分散式架构中构建统一而强大的Web界面
【8月更文挑战第31天】随着微服务架构的兴起,企业将应用拆分成小型、独立的服务以提高系统可维护性和可扩展性。本文探讨如何在微服务架构下构建和部署JavaServer Faces (JSF) 应用,通过RESTful服务实现前后端分离,提升灵活性和适应性。
31 0
|
13天前
|
NoSQL API 数据库
揭秘!Flask如何一键解锁RESTful API高效微服务?打造未来互联网架构的隐形力量!
【8月更文挑战第31天】本文介绍如何使用 Flask 构建高效且易维护的 RESTful 微服务,涵盖环境搭建、基本应用创建及代码详解。通过示例展示用户管理系统的 CRUD 操作,并讨论数据库集成、错误处理、认证授权、性能优化及文档生成等高级主题,助力开发者打造强大的后端支持。
24 0
|
22天前
|
微服务
微服务架构与单体架构:比较和对比
【8月更文挑战第22天】
33 0