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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战

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

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

让我们深入研究一下。

什么是 Istio?

Istio 是一个重要的开源服务网格,可与基于微服务的应用程序无缝集成,从而简化监控、管理以及实施性能和安全策略。它可以防止过载,限制未经授权的访问,并保护传输中的数据。其支持系统统一并确保微服务的平稳运行,显著简化其管理并确保轻松满足性能和安全性要求。

什么是 Sidecar 代理?

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

建筑

Istio 架构的支柱主要由两个关键组件塑造,每个组件在其功能中都发挥着关键作用:

数据平面是 Istio 架构的关键部分,由一组代理(使用 Envoy 部署,Envoy 是一种分布式应用程序的开源代理)组成,这些代理作为 sidecar 容器与微服务一起运行。

控制平面是 Istio 架构中的决定性元素,它管理代理并决定它们的操作。让我们更详细地了解每个组件。它包括以下组件:

试点:管理服务发现和流量。

Citadel:管理安全性并实现安全通信。

Galley:验证和分发配置资源。

Mixer:处理策略实施和遥测收集。

Sidecar Injector:自动将 Envoy sidecar 代理注入 Kubernetes pod 以方便集成。

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

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

了解 Istio 服务网格对 Kubernetes 微服务的重要性

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

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

Istio 的优势

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

安全:在微服务之间强制实施强身份验证和授权要求。

应用性能:在微服务之间高效路由流量并处理重试和故障转移。

可观察性:从各个微服务收集遥测数据,以便详细了解运行状况和性能。

故障 排除: 单独监控每个微服务,以识别和解决性能和安全问题。

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

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

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

电信运营商可以使用以下配置安装和运行 SMCP(服务网格控制平面):

SMCP YAML

YAML

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: full-install
  namespace: istio-system
spec:
  version: v2.1
  techPreview:
      meshConfig:
        defaultConfig:
          concurrency: 8     # Adjust according to the need
  proxy:
    runtime:
      container:
        resources:
          requests:
            cpu: 500m
            memory: 256Mi
          limits:             # Adjust according to the need
            cpu: "1"
            memory: 1Gi
  tracing:
    sampling: 10000 # 0.01% increments. 10000 samples 100% of traces
    type: Jaeger
  gateways:
    ingress: # istio-ingressgateway
      service:
        type: ClusterIP
        ports:
          - name: status-port
            port: 15020
          - name: http2
            port: 80
            targetPort: 8080
          - name: https
            port: 443
            targetPort: 8443
      meshExpansionPorts: []
    egress: # istio-egressgateway
      service:
        type: ClusterIP
        ports:
          - name: status-port
            port: 15020
          - name: http2
            port: 80
            targetPort: 8080
          - name: https
            port: 443
            targetPort: 8443
    additionalIngress:
      some-other-ingress-gateway: {}
    additionalEgress:
      some-other-egress-gateway: {}

  policy:
    type: Istiod
  telemetry:
    type: Istiod

  addons:
    grafana:
      enabled: true
    kiali:
      name: kiali
      enabled: true
      install: # install kiali CR if not available
        dashboard:
          viewOnly: false
          enableGrafana: true
          enableTracing: true
          enablePrometheus: true
    jaeger:
      name: jaeger-production
      install:
        storage:
          type: Elasticsearch
          elasticsearch:
            nodeCount: 3
            redundancyPolicy: SingleRedundancy
            indexCleaner:
              enabled: true
              numberOfDays: 7
              schedule: 55 23 * * *
        ingress:
          enabled: true
  runtime:
    components:
      tracing.jaeger.elasticsearch: # only supports resources and image name
        container:
          resources:
            limits:
              cpu: 1
              memory: 1Gi
            requests:
              cpu: 500m
              memory: 1Gi
      pilot:
        deployment:
          autoScaling:
            enabled: true
            minReplicas: 2
            maxReplicas: 2
            targetCPUUtilizationPercentage: 85
        pod:
          tolerations:
            - key: node.kubernetes.io/unreachable
              operator: Exists
              effect: NoExecute
              tolerationSeconds: 60
          affinity:
            podAntiAffinity:
              requiredDuringScheduling:
                - key: istio
                  topologyKey: kubernetes.io/hostname
                  operator: In
                  values:
                    - pilot
        container:
          resources:
            limits:                # Adjust according to the need
              cpu: "1"
              memory: 1Gi

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

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

SMMR YAML

YAML

apiVersion: maistra.io/v1
kind: ServiceMeshMemberRoll
metadata:
  name: default
  namespace: istio-system
spec:
  members:
  - <Micro services pods namespace>  #  namespace that needs be istio injected.

安装

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

image.png

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

image.png

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

借助 Istio,电信 IoT 微服务 Pod 架构的未来看起来很有希望,并且具有更高的效率、安全性和可扩展性。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
5天前
|
传感器 存储 架构师
构建基于 IoT 的废物管理系统:软件架构师指南
构建基于 IoT 的废物管理系统:软件架构师指南
31 9
|
9天前
|
Kubernetes 负载均衡 安全
Istio在微服务中释放服务网格的力量
Istio在微服务中释放服务网格的力量
34 4
|
10天前
|
安全 Java 对象存储
安全性考量:Spring Security与Netflix OSS在微服务安全中的作用
安全性考量:Spring Security与Netflix OSS在微服务安全中的作用
20 1
|
25天前
|
存储 安全 API
微服务之间的安全通信
在微服务架构中,服务之间的通信是系统的核心部分。然而,由于服务的分布式和独立性,确保它们之间的通信安全至关重要。
33 3
|
7天前
|
边缘计算 安全 5G
|
7天前
|
存储 安全 物联网
|
7天前
|
监控 安全 物联网
|
9天前
|
存储 边缘计算 安全
5G 边缘计算的安全保障:构建可信的边缘智能
5G 边缘计算的安全保障:构建可信的边缘智能
31 0
|
9天前
|
数据采集 安全 自动驾驶
5G中的隐私保护机制:守护数字世界的安全与信任
5G中的隐私保护机制:守护数字世界的安全与信任
26 0
|
9天前
|
安全 5G 网络安全
5G 网络中的认证机制:构建安全连接的基石
5G 网络中的认证机制:构建安全连接的基石
17 0