Istio

连接、安全、控制和观察服务。(Connect, secure, control, and observe services.)

Github星跟蹤圖

Istio

一个连接、管理和保护微服务的开放平台。

在本自述文件中包括:

此外,这里还有一些您可能希望阅读的其他文档:

您可以在我们的 Wiki 上找到许多其他有用的文档。

介绍

Istio 是一个开放平台,用于提供统一的方法来集成微服务、管理跨微服务的流量、执行策略和聚合遥测数据。 Istio 的控制平面在底层集群管理平台(例如 Kubernetes)上提供了一个抽象层。

Istio 由这些组件组成:

  • Envoy -- 每个微服务的Sidecar代理,用于处理集群中的服务之间以及从服务到外部服务之间的入路通信。这些代理构成一个安全的微服务网格,提供了丰富的功能,如发现、丰富的第7层路由、断路器、策略执行和遥测记录报告功能。
    注意:服务网格不是覆盖网络。它简化并增强了应用程序中的微服务如何通过底层平台提供的网络相互通信。
  • Mixer -- 代理和微服务利用的中央组件,用于执行授权、速率限制、配额、身份验证、请求跟踪和遥测收集等策略。
  • Pilot -- 负责在运行时配置代理的组件。
  • Citadel -- 负责证书颁发和循环的集中组件。
  • Citadel Agent -- 每个节点的组件,负责颁发证书和循环。
  • Galley -- 用于在 Istio 中验证、摄取、聚合、转换和分发配置的中心组件

Istio 目前支持基于 Kubernetes 和 Consul 的环境。我们计划在不久的将来支持其他平台,如 Cloud Foundry 和 Mesos。

Istio 项目分为几个 GitHub 存储库。

  • istio/istio。这是您当前正在查看的主存储库。它包含 Istio 的核心组件,以及控制 Istio 开源项目的示例程序和各种文档。它包括:
    • security。此目录包含与安全相关的代码,包括 Citadel(作为证书颁发机构),citadel 代理等。
    • pilot。此目录包含特定于平台的代码, 用于填充 抽象服务模型,在应用程序拓扑更改时动态重新配置代理,以及将路由规则转换为特定于代理的配置。
    • istioctl。该目录包含 istioctl 命令行实用程序的代码。
    • mixer。此目录包含代码,用于执行通过代理的流量的各种策略,并从代理和服务收集遥测数据。有一些插件用于与各种云平台、策略管理服务和监视服务交互。
  • istio/api。这个存储库为 Istio 平台定义了组件级 api 和通用配置格式。
  • istio/proxy。Istio 代理包含对 Envoy proxy 的扩展(以 Envoy 过滤器的形式),允许代理将策略执行决策委派给 Mixer。

问题管理

我们使用 GitHub 和 ZenHub 来跟踪所有的 bug 和特性请求。我们跟踪的每个问题都有各种元数据:

  • Epic. epic 代表整个 Istio 的特征区域。Epics 的范围相当广泛,基本上都是产品级的东西。每个问题最终都是 epic 的一部分。
  • Milestone. 每个问题都分配了一个里程碑。即 0.1, 0.2, ...,或“朦胧的未来”。里程碑表明我们认为什么时候应该解决这个问题。
  • Priority/Pipeline. 每个问题都有一个优先级,由 GitHub 中的 Pipeline 字段表示。 优先级可以是 P0、P1、P2、或者 >P2 之一。优先级表示在里程碑内处理问题的重要性。P0 表示,如果问题没有得到解决,就不能认为达到了里程碑。

我们不使用发布来注释问题;取而代之的是使用里程碑。我们根本不使用 GitHub 项目,我们的组织禁用了该支持。

(Second edition: vz revised at 2019.08.07)

主要指標

概覽
名稱與所有者istio/istio
主編程語言Go
編程語言Shell (語言數: 11)
平台Kubernetes, Alibaba Cloud, IBM Cloud, Google Cloud Platform, Linux, Mac, Windows
許可證Apache License 2.0
所有者活动
創建於2016-11-18 23:57:21
推送於2025-04-21 21:01:53
最后一次提交2025-04-21 16:01:52
發布數387
最新版本名稱1.26.0-beta.0 (發布於 2025-04-18 12:31:59)
第一版名稱0.1.0 (發布於 )
用户参与
星數36.8k
關注者數1k
派生數7.9k
提交數24.9k
已啟用問題?
問題數20736
打開的問題數480
拉請求數27701
打開的拉請求數43
關閉的拉請求數6590
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?

Go Report Card
GoDoc

Istio

An open platform to connect, manage, and secure microservices.

  • For in-depth information about how to use Istio, visit istio.io
  • To ask questions and get assistance from our community, visit discuss.istio.io
  • To learn how to participate in our overall community, visit our community page

In this README:

In addition, here are some other documents you may wish to read:

You'll find many other useful documents on our Wiki.

Introduction

Istio is an open platform for providing a uniform way to integrate
microservices, manage traffic flow across microservices, enforce policies
and aggregate telemetry data. Istio's control plane provides an abstraction
layer over the underlying cluster management platform, such as Kubernetes.

Istio is composed of these components:

  • Envoy - Sidecar proxies per microservice to handle ingress/egress traffic
    between services in the cluster and from a service to external
    services. The proxies form a secure microservice mesh providing a rich
    set of functions like discovery, rich layer-7 routing, circuit breakers,
    policy enforcement and telemetry recording/reporting
    functions.

    Note: The service mesh is not an overlay network. It
    simplifies and enhances how microservices in an application talk to each
    other over the network provided by the underlying platform.

  • Mixer - Central component that is leveraged by the proxies and microservices
    to enforce policies such as authorization, rate limits, quotas, authentication, request
    tracing and telemetry collection.

  • Pilot - A component responsible for configuring the proxies at runtime.

  • Citadel - A centralized component responsible for certificate issuance and rotation.

  • Citadel Agent - A per-node component responsible for certificate issuance and rotation.

  • Galley- Central component for validating, ingesting, aggregating, transforming and distributing config within Istio.

Istio currently supports Kubernetes and Consul-based environments. We plan support for additional platforms such as
Cloud Foundry, and Mesos in the near future.

Repositories

The Istio project is divided across a few GitHub repositories.

  • istio/istio. This is the main repository that you are
    currently looking at. It hosts Istio's core components and also
    the sample programs and the various documents that govern the Istio open source
    project. It includes:

    • security. This directory contains security related code,
      including Citadel (acting as Certificate Authority), citadel agent, etc.

    • pilot. This directory
      contains platform-specific code to populate the
      abstract service model, dynamically reconfigure the proxies
      when the application topology changes, as well as translate
      routing rules into proxy specific configuration.

    • istioctl. This directory contains code for the
      istioctl command line utility.

    • mixer. This directory
      contains code to enforce various policies for traffic passing through the
      proxies, and collect telemetry data from proxies and services. There
      are plugins for interfacing with various cloud platforms, policy
      management services, and monitoring services.

  • istio/api. This repository defines
    component-level APIs and common configuration formats for the Istio platform.

  • istio/proxy. The Istio proxy contains
    extensions to the Envoy proxy (in the form of
    Envoy filters), that allow the proxy to delegate policy enforcement
    decisions to Mixer.

Issue management

We use GitHub combined with ZenHub to track all of our bugs and feature requests. Each issue we track has a variety of metadata:

  • Epic. An epic represents a feature area for Istio as a whole. Epics are fairly broad in scope and are basically product-level things.
    Each issue is ultimately part of an epic.

  • Milestone. Each issue is assigned a milestone. This is 0.1, 0.2, ..., or 'Nebulous Future'. The milestone indicates when we
    think the issue should get addressed.

  • Priority/Pipeline. Each issue has a priority which is represented by the Pipeline field within GitHub. Priority can be one of
    P0, P1, P2, or >P2. The priority indicates how important it is to address the issue within the milestone. P0 says that the
    milestone cannot be considered achieved if the issue isn't resolved.

We don't annotate issues with Releases; Milestones are used instead. We don't use GitHub projects at all, that
support is disabled for our organization.