开发者社区> osswangxining> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里云Kubernetes Service Mesh实践进行时(1): Istio初体验

简介: 本篇文章是系列中的第一篇,主要讲述利用阿里云Kubernetes容器服务,快速搭建一套用于连接、管理以及安全化微服务的开放平台Istio,为应用引入和配置多个相关服务。
+关注继续查看

概述

[Announcement] Istio第一个生产可用版本1.0于2018年7月31日正式发布。

注意:在使用阿里云Kubernetes容器服务Istio 1.0的过程中,如果遇到类似CRD版本问题,请参考我们提供的问题分析。 我们会持续更新遇到的问题及其解决方法。

图片.png

Istio是一个用于连接/管理以及安全化微服务的开放平台,提供了一种简单的方式用于创建微服务网络,并提供负载均衡、服务间认证以及监控等能力,并且关键的一点是并不需要修改服务本身就可以实现上述功能。

Istio主要提供以下功能:

  • 流量管理: 控制服务之间调用的流量和API调用; 使得调用更可靠,并使网络在恶劣情况下更加健壮;
  • 可观察性: 获取服务之间的依赖,以及服务调用的流量走向; 从而提供快速识别问题的能力;
  • 策略执行:控制服务的访问策略,不需要改动服务本身;
  • 服务身份和安全:为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转;

本篇文章是系列中的第一篇,主要讲述利用阿里云Kubernetes容器服务,快速搭建一套用于连接、管理以及安全化微服务的开放平台Istio,为应用引入和配置多个相关服务。

阿里云Kubernetes Service Mesh实践进行时(1): Istio初体验
阿里云Kubernetes Service Mesh实践进行时(2): 通过示例深入Istio
阿里云Kubernetes Service Mesh实践进行时(3): 智能路由
阿里云Kubernetes Service Mesh实践进行时(4): 分布式追踪
阿里云Kubernetes Service Mesh实践进行时(5): 遥测数据收集、查询及可视化
阿里云Kubernetes Service Mesh实践进行时(6): 故障诊断与检测工具Weave Scope
阿里云Kubernetes Service Mesh实践进行时(7): 可观测性分析服务Kiali

Istio架构

从架构上看,Istio主要分为2个部分,即:

  • 控制面板: 管理代理,用于支持流量路由/运行时执行策略等;
  • 数据面板: 由一系列的智能代理(默认为Envoy)构成,用于仲裁和控制服务之间的网络交互;

图片.png

Proxy/Envoy

Envoy将作为一个独立的sidecar与相关微服务部署在同一个Kubernetes的pod上,并提供一系列的属性给Mixer.Mixer以此作为依据执行策略,并发送到监控系统.

这种sidecar代理模型不需要改变任何服务本身的逻辑,并能增加一系列的功能。

Mixer

Mixer负责在服务网格上执行访问控制和使用策略,并从Envoy代理和其他服务收集遥测数据。代理提取请求级属性,发送到Mixer进行评估。

Mixer包括一个灵活的插件模型,使其能够接入到各种主机环境和基础设施后端,从这些细节中抽象出Envoy代理和Istio管理的服务。 后续文章会陆续介绍相关内容。

Pilot

Pilot负责收集和验证配置并将其传播到各种Istio组件。它从Mixer和Envoy中抽取环境特定的实现细节,为他们提供用户服务的抽象表示,独立于底层平台。此外,流量管理规则(即通用4层规则和7层HTTP/gRPC路由规则)可以在运行时通过Pilot进行编程。

Citadel

提供服务间以及用户之间的认证,确保不需要修改服务代码的前提下增强服务之间的安全性。主要包括以下3个组件:

  • 身份识别

    • 当Istio运行在Kubernetes时,Auth会使用Kubernetes提供的服务账号来识别运行服务的主体是谁.
  • key管理

    • Auth提供了一个CA自动化生成和管理key和证书.
  • 通讯安全

    • 服务间的通讯通过Envoy在客户端和服务端提供tunnel来保证服务调用的安全.

下面讲述一下在阿里云Kubernetes容器服务基础之上,如何快速搭建一套用于连接、管理以及安全化微服务的开放平台Istio。

准备Kubernetes环境

阿里云容器服务Kubernetes 1.10.4目前已经上线,可以通过容器服务管理控制台非常方便地快速创建 Kubernetes 集群。具体过程可以参考创建Kubernetes集群

体验通过应用目录简便部署

点击左侧的应用目录,在右侧选中ack-istio,如下:

图片.png

点击参数, 可以通过修改参数配置进行定制化,如下所示定义了通用参数:

Parameter Description Default
global.hub Specifies the HUB for most images used by Istio registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog
global.tag Specifies the TAG for most images used by Istio 1.0.0
global.proxy.image Specifies the proxy image name istio-proxyv2
global.imagePullPolicy Specifies the image pull policy IfNotPresent
global.controlPlaneSecurityEnabled Specifies whether control plane mTLS is enabled false
global.mtls.enabled Specifies whether mTLS is enabled by default between services false
global.mtls.mtlsExcludedServices List of FQDNs to exclude from mTLS -"kubernetes.default.svc.cluster.local"
global.rbacEnabled Specifies whether to create Istio RBAC rules or not true
global.refreshInterval Specifies the mesh discovery refresh interval 10s
global.arch.amd64 Specifies the scheduling policy for amd64 architectures 2
global.arch.s390x Specifies the scheduling policy for s390x architectures 2
global.arch.ppc64le Specifies the scheduling policy for ppc64le architectures 2
galley.enabled Specifies whether Galley should be installed for server-side config validation. Requires k8s >= 1.9 false

除了上述通用参数之外,还可以针对不同的模块进行定制,例如是否启用grafana、prometheus、tracing、weave-scope以及kiali等:

#
# addons configuration
#
grafana:
  enabled: true
  replicaCount: 1
  image: istio-grafana
  service:
    name: http
    type: ClusterIP
    externalPort: 3000
    internalPort: 3000
....
prometheus:
  enabled: true
  replicaCount: 1
  image:
    repository: registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog/istio-prometheus
    tag: latest
....
tracing:
  enabled: true
  jaeger:
    enabled: true
....
weave-scope:
  enabled: true
  global:
    # global.image: the image that will be used for this release
    image:
      repository: weaveworks/scope
      tag: "1.9.0"
      # global.image.pullPolicy: must be Always, IfNotPresent, or Never
      pullPolicy: "IfNotPresent"
....
kiali:
  enabled: true
  replicaCount: 1
  image:
    repository: registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog/istio-kiali
    tag: dev

修改之后,在右侧选择对应的集群、命名空间(建议新建一个namespace,如istio-system),指定发布名称,然后点击部署。

图片.png

几分钟之后,一套用于连接、管理以及安全化微服务的开放平台Istio实例就可以创建出来。

体验Istio

点击左侧的容器组,在右侧可以查看到刚创建的Istio相关容器组信息,如下所示:

图片.png

点击左侧的服务,在右侧可以查看到刚创建的Istio相关服务提供的访问地址,如下所示:

图片.png

默认参数配置下,会启用以下功能模块:

  • 智能路由
  • 故障注入
  • 流量转移
  • 分布式跟踪Open Tracing/Jaeger
  • 遥测指标数据收集Prometheus
  • 遥测指标数据可视化Grafana
  • 服务图Service Graph 与Weave支持
  • 服务网格监控Kiali

下一篇文章会通过一个官方示例来讲述,在阿里云Kubernetes容器服务基础之上,如何使用Istio进行微服务开发、管理、保护及监控等。

总结

我们可以利用阿里云Kubernetes容器服务,快速搭建一套用于连接、管理以及安全化微服务的开放平台Istio,为应用引入和配置多个相关服务。欢迎大家使用阿里云上的容器服务,快速搭建微服务的开放治理平台Istio,比较简单地集成到自己项目的微服务开发中。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用 C# 开发 Kubernetes 组件,获取集群资源信息
使用 C# 开发 Kubernetes 组件,获取集群资源信息
65 0
KUBERNETES02_集群安装逻辑、前置环境、搭建一主两从、部署dashboard访问页面(一)
KUBERNETES02_集群安装逻辑、前置环境、搭建一主两从、部署dashboard访问页面(一)
60 0
KUBERNETES02_集群安装逻辑、前置环境、搭建一主两从、部署dashboard访问页面(三)
KUBERNETES02_集群安装逻辑、前置环境、搭建一主两从、部署dashboard访问页面(三)
44 0
KUBERNETES02_集群安装逻辑、前置环境、搭建一主两从、部署dashboard访问页面(二)
KUBERNETES02_集群安装逻辑、前置环境、搭建一主两从、部署dashboard访问页面(二)
42 0
Kubernetes集群升级指南:从理论到实践
摘要:集群升级是Kubernetes集群生命周期中最为重要的一环,也是也是众多使用者最为谨慎对待的操作之一。为了更好地理解集群升级这件事情的内涵外延,我们首先会对集群升级的必要性和难点进行阐述。随后我们会对集群升级前必须要做的前置检查进行逐一讲解。接下来我们会对两种常见的升级方式进行展开介绍。最后我们对集群升级的三个步骤进行讲解,帮助读者从理论走入实践。   升级的必要性&a
324 0
Kubernetes集群部署关键知识总结
  Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备的就尽量下载好。
2632 0
Kubernetes 集群资源的那些事
大多数时候,我们在跟 K8S 玩耍的时候,主要目的就是:“把 XXX 打个镜像,在集群上跑起来 ——— 诶快看,真的跑起来了嘿!”。 Kubernetes 和 Docker 的缺省配置,就能够帮我们省却很多麻烦。
1375 0
Kubernetes集群中的高性能网络策略
自从7月份发布Kubernetes 1.3以来,用户已经能够在其集群中定义和实施网络策略。这些策略是防火墙规则,用于指定允许流入和流出的数据类型。如果需要,Kubernetes可以阻止所有未明确允许的流量。
1311 0
扩容阿里云kubernetes集群,并升级节点内核
作为早期阿里云 kubernetes 的产品经理, 控制台方式实现节点上下线是我提出来的需求。
870 0
+关注
osswangxining
王夕宁, 阿里云服务网格ASM技术负责人, 关注Kubernetes/云原生/服务网格等领域。之前曾在IBM中国开发中心工作, 作为架构师和主要开发人员负责或参与了一系列在SOA中间件/云计算等领域的工作, 曾担任中国研发中心专利技术评审主席, 并拥有60多项相关领域的国际技术专利。
54
文章
0
问答
来源圈子
更多
容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理。容器服务 Kubernetes 版简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载