Apache Kafka with Istio on K8s
Sebastian Toader & Zsolt Varga 2021-Feb-26 Apache Kafka with Istio on K8s 2 • Scalability • Resiliency • Security • Observability • Disaster recovery Production grade Apache Kafka on Kubernetes certificate attached automatically by Istio Proxy sidecar container • Client certificate includes the K8s service account of the Kafka client application • SPIFE:///ns/ /sa/ 0 码力 | 14 页 | 875.99 KB | 1 年前3Istio at Scale: How eBay is building a massive Multitenant Service Mesh using Istio
Application Deployment: Cloud Layout ● Multiple K8s Clusters in an AZ ○ Each K8s cluster ~ 200 - 5,000 nodes ○ Upto 100,000 Pods in a cluster ○ 10,000+ K8s services - including prod, pre-prod, staging worst-case scenario Region R1 AZ 1 AZ 2 AZ n Data Center DC1 K8s Cluster K8s Cluster K8s Cluster K8s Cluster K8s Cluster K8s Cluster Region Rn #IstioCon Application Specs Region services - Global IPAM, Access-control Policy store, etc. ● AZ Control Plane ○ Syncs specs to workload K8s clusters in the AZ ○ Shared-Nothing Architecture ■ Hosts services catering to the AZ, e.g., AZ0 码力 | 22 页 | 505.96 KB | 1 年前3Service mesh security best practices: from implementation to verification
Prevention Certificate Authority K8s Network Policy K8s RBAC Audit Logging Image Verification Admission Control Workload Identity K8s RBAC K8s CNI AuthZ Policy Peer AuthN Policy access control Service 2 Service 1 1. Ensure traffic is natively encrypted, such as HTTPS 3. use k8s network policies to limit traffic bypassing sidecars Cluster security best practices: safely handle & authz policies Namespace bar 2. Enforce k8s RBAC policies: roles bound to namespace, only mesh admins are allowed to have ClusterRole. 1. Use k8s network policies to limit the traffic in & out0 码力 | 29 页 | 1.77 MB | 1 年前3Is Your Virtual Machine Really Ready-to-go with Istio?
External IPs #IstioCon V1.1 ServiceEntry #IstioCon V1.6-1.8 Better VM Workload Abstraction A K8s Service and Pods Two separate object with distinct lifecycles Before Workload Entry, a single Istio WorkloadEntry Component Deployment WorkloadGroup Service registry and discovery Service ServiceEntry K8s Pods labels: app: foo class: pod ServiceEntry selector: app: foo Istio Workload Entries labels: ■ based on a platform-specific identity ■ w/o a platform-specific identity ● using a short-lived K8s service account token ● Automatic certificate rotation ● Validation of the proxy’s status for VM-based0 码力 | 50 页 | 2.19 MB | 1 年前3Istio 在 Free Wheel 微服务中的实践
自动维护mTLS密钥 • Mixer: 在k8s中部署了两组Mixer • Policy提供授权、Quota等能力 • Telemetry提供监控数据收集能力 基本原理 • Istio从架构上可以分为4个板块: • Istio Proxy: Mesh的基础 • 网络安全:兼容Spiffe标准实现 • 配置管理:为C++实现的Proxy接 入k8s的动态配置管理 • Attribute 情: • Sidecar Injection: 注入initContainer, Sidecar, istio-certs volume • Citadel: 自动刷新secrets, k8s自动加 载istio-secrets volume • Pilot: 和Sidecar建立连接,管理动态配 置 • Mixer: 和Sidecar建立连接,管理授权 、Quota和审计数据 FreeWheel的Istio实践 • 通过在Sidecar中增加FreeWheel自定义认证支持,下游可以充分利用 Istio提供的授权、限流、监控接口,不过要注意Sidecar也有一些小坑 : • Sidecar没有k8s自动注入的secret,也无法通过容器内环境变量自 动建立master连接,需要管理额外的kubeconfig • Sidecar内的服务流量默认是不被劫持的,如果需要劫持需要添加额 外的annotation0 码力 | 31 页 | 4.21 MB | 1 年前3SolarMesh 基于Istio构建的流量监管平台
© 2021 Cloud To Go 为什么我们需要服务网格 - 业务上k8s带来的问题 Ø 集群内的情况不可见 Ø 环境不统一,很难复现问题 Ø 集群中的网络限制 Ø ... Ø 学习k8s成高 Ø 测试方法发生了改变 Ø 有些问题只能在集群内出 现,难以测试 Ø ... 测试难 运维难 Ø 学习k8s成高 Ø 缺少好用的工具 Ø ... 排错难 Copyright © © 2021 Cloud To Go 为什么我们需要服务网格 - 微服务+k8s Kubernetes上 应用的网络问题 困扰开发、测试、运维最突出的问题: Copyright © 2021 Cloud To Go 为什么我们需要服务网格 - 服务网格带来了什么 服务网格是一个云原生的网络基础设施,它把微服务调度中有关网络的公共能力下沉,在无任何代码侵入的 情况下提供可观察性、流量管理和安全性等能力。 © 2021 Cloud To Go SolarMesh的架构设计 Copyright © 2021 Cloud To Go SolarMesh的架构设计 负载均衡 服务发现 弹性伸缩 k8s 应用 自我修复 基础设施 | VM/DOCKER 熔断限流 流量观测 超时重试 服务网格 流量安全 SolarMesh Copyright © 2021 Cloud To Go0 码力 | 20 页 | 1.29 MB | 1 年前3Istio Service Mesh at Enterprise Scale
API Gateway Book Info Payments Product Info Proxy Proxy Proxy Proxy + k8s Istio mTLS mTLS mTLS ✓ Security ✓ Visibility ✓ Traffic Shaping ✓ Latency ✓ Single Point Product Info Proxy Proxy Proxy Book Order Proxy + k8s Istio mTLS mTLS mTLS + k8s + k8s Istio Istio Validation Webhooks ● Allow configuration0 码力 | 12 页 | 1.23 MB | 1 年前3Istio控制平面组件原理解析
ü抢救机制触发 ü抢救令牌减少一个(总共10个) ü在2(n-1) * 200毫秒后执行(为什么不立即执行) ü失败再次触发抢救机制 ü10个令牌用完,没有抢救成功,放弃退出优雅关闭envoy ü K8s发送SIGTERM信号让容器优雅关闭 ü Pilot-Agent接收信号通过context关闭子服务,发送SIGKILL关闭envoy ü Envoy不支持优雅关闭,需要通过金丝雀或蓝绿部署方式实现 和Google强强联手 官方博客:The universal data plane API缓存Istio和k8s配置 ü一个小型的非持久性key/value数据库 ü借助k8s.io/client-go建立缓存 ü缓存Istio:route-rule,virtual-service,gateway等 ü缓存k8s:node,Service,Endpoints等触发配置生效方式 V2通过GRPC双向流,主动推送配置给envoy: u证书生成 u证书挂载 u证书过期证书生成 ü生成root-cert.pem ü生成cert-chain.pem ü生成key.pem证书挂载 üICA以Name为istio.default在k8s创建Secrets对象 ü应用服务获取Secrets对象证书,并挂载到/etc/certs • volumeMounts: • - mountPath: /etc/certs/ • name: istio-certs0 码力 | 30 页 | 9.28 MB | 5 月前3Kubernetes容器应用基于Istio的灰度发布实践
应用运维管理 丰富可定制的容器应用立体化运维 容器镜像服务 容器镜像一站式构建、存储与交付 应用编排服务 应用云上自动化编排与设施管理 云容器实例 基于K8S的Serverless容器服务 云容器引擎 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service Mesh Istio在华为云:华为云容器应用 Istio在华为云:服务网格 只需在创建集群时选 择“启用服务网格” 即可使用Istio服务治0 码力 | 38 页 | 14.93 MB | 1 年前3Kubernetes容器应用基于Istio的灰度发布实践
应用运维管理 丰富可定制的容器应用立体化运维 容器镜像服务 容器镜像一站式构建、存储与交付 应用编排服务 应用云上自动化编排与设施管理 云容器实例 基于K8S的Serverless容器服务 云容器引擎 企业级高可靠、高性能K8S服务 服务网格 K8S原生Service Mesh28 Istio在华为云:华为云容器应用29 Istio在华为云:服务网格 只需在创建集群时选 择“启用服务网格”0 码力 | 34 页 | 2.64 MB | 5 月前3
共 22 条
- 1
- 2
- 3