体验 正式发布 的OSM v1.0.0 版本

2021年10月份发布了OSM 1.0 RC[1],在过去的几个月里,OSM 的贡献者一直在努力为 v1.0.0 版本的发布做准备。2022年2月1日,OSM 团队正式发布 1.0.0 版本[2]。OSM 从最初的发布到现在已经走了很长的路,团队继续专注于社区需要的关键和必要的功能。Open Service Mesh(OSM)是一个 轻量级、 可扩展的 Service Mesh 工具,旨在通过引入简单性和降低复杂性来管理和保护 K8s 集群内的 API。它基于 envoy Proxy 并将其作为 sidecar 容器注入到每个Observable应用程序中,该应用程序依次执行流量管理、路由策略、捕获指标等。

微软把Open Service Mesh 捐赠给云原生计算基金会(CNCF),以确保它由社区主导,并具有开放的治理,OSM目前还是 沙箱项目。

1.0 版本已经支持多集群和混合环境中运行 OSM。1.0版本中的一些新功能:

  • 新的内部控制平面事件管理框架来处理对 Kubernetes 集群和策略的更改

  • 拒绝/忽略无效 SMI TrafficTarget 资源的验证

  • 改进控制平面内存利用率,OSM 现在可以根据内存使用情况自动缩放。

  • 支持用于网状流量的 TCP 服务器优先协议。appProtocol: tcp-server-first除了在 Egress 策略中指定的服务之外,现在可以在网格中的服务端口上指定,以减少 MySQL 和 PostgreSQL 等协议的延迟。

  • OSM 附带的 Grafana 仪表板更加准确和一致。

  • OSM 控制平面镜像现在是多架构的,支持 linux/amd64 和 linux/arm64。

自上次发布以来,osmCLI 也有了一些改进。

  • osm support bug-report除了网格内的 Pod 之外,收集日志和其他有助于调试的信息的命令现在可以从 OSM 的控制平面收集日志。

  • 对于在没有 Helm 的情况下管理 OSM 生命周期的用户,该osm install命令现在支持选择性地清理由控制平面创建的 CustomResourceDefinition、webhook 配置和资源以简化卸载。

  • osm version命令现在将显示安装在集群上的 OSM 版本以及 CLI 的版本。

查看我们最新更新的文档网站[3],了解更多关于特性、演示和架构的信息。

显著特性

Open Service Mesh 相对于Istio 来说,确实很轻量。SMI 处理了所有你期望的标准服务 Mesh 功能,包括使用 mTLS 确保服务之间的通信安全,管理访问控制策略,服务监控等。

  • 为服务定义并执行细化的访问控制策略,基于 Service Mesh Interface (SMI) 的实现,主要包括 Traffic Access Control, Traffic Specs 和 Traffic Split 以及 Traffic Metrics ;

  • 通过启用相互 TLS (mTLS) 来保护服务与服务之间的通信 ;

  • 定义和执行服务间的访问控制策略;

  • 通过 Prometheus 和 Grafana 完成器观察性;

  • 可与外部证书管理服务进行集成;

  • 使用 Envoy 边车代理自动注入,将应用程序加入到 OSM 网格中;

上手体验

这里我使用 Rancher Desktop[4] 作为我本地的实验环境,来亲手试一试看了。

安装非常简单,参考文档 [5],直接去 Release 页面下载预编译好的二进制文件。可将二进制文件加入到 $PATH 中。

wget  https://github.com/openservicemesh/osm/releases/download/v1.0.0/osm-v1.0.0-windows-amd64.zip -o osm.zip
unzip osm.zip
osm.exe version

下面的命令显示了如何在 Kubernetes 集群上安装 OSM。此命令启用 Prometheus、 Grafana和 Jaeger集成。文件中的osm.enablePermissiveTrafficPolicychart 参数values.yaml指示 OSM 忽略任何策略,让流量在 Pod 之间自由流动。在 OSM 中的宽松流量策略模式下,系统会绕过 SMI 流量策略强制执行。在此模式下,OSM 会自动发现属于服务网格一部分的服务,并在每个 Envoy 代理挎斗上对流量策略规则进行编程,以便能够与这些服务通信。

osm install  --mesh-name "osm-system" --osm-namespace "osm" --set=osm.enablePermissiveTrafficPolicy=true --set=osm.deployPrometheus=true  --set=osm.deployGrafana=true   --set=osm.deployJaeger=true

可以看到默认安装完成后,都在 osm-system 命名空间下有6个pod:

ef3d9b281140aa25bf991cbd361777c2.png

上图是使用k8slens :https://k8slens.dev/ ,这里简要介绍一下lens:(Lens 就是一个强大的 IDE,可以实时查看集群状态,实时查看日志流,方便排查故障。有了 Lens,你可以更方便快捷地使用你的集群,从根本上提高工作效率和业务迭代速度。Lens 可以管理多集群,它使用内置的 kubectl 通过 kubeconfig 来访问集群,支持本地集群和外部集群(如EKS、AKS、GKE、Pharos、UCP、Rancher 等),甚至连 Openshift 也支持。)

  • osm-controller:osm控制器

  • osm-grafana:Dashboard 相关,可通过 osm dashboard 命令唤起;

  • osm-prometheus:采集 metrics ;

  • osm-injector:注入程序

  • osm-bootstrap:启动

  • jaeger :链路追踪

检查 OSM 控制器Deployment、Pod 和svc

kubectl get deployment,pod,service -n osm --selector app=osm-controller

正常运行的 OSM 控制器将如下所示:

a61fcab79784be0cd9a5c200a9abfc0f.png

检查 OSM 注入程序Deployment、Pod 和服务

kubectl get deployment,pod,service -n osm --selector app=osm-injector

正常运行的 OSM 注入程序将如下所示:

4656cabfd15549af4bb591efc5976485.png

检查 OSM 启动 Deployment、Pod 和服务

kubectl get deployment,pod,service -n osm --selector app=osm-bootstrap

86c255b4385d201ed42cf978a7df013b.png

检查验证 Webhook 和改变 Webhook

kubectl get ValidatingWebhookConfiguration --selector app=osm-controller

正常运行的 OSM 验证 Webhook 将如下所示:

e6375995d15c92ee31f6985ed8e46d16.png

检查改变 Webhook 的服务和 CA 捆绑包

kubectl get ValidatingWebhookConfiguration osm-validator-mesh-osm-system -o json | jq '.webhooks[0].clientConfig.service'

正确配置的改变 Webhook 配置将如下所示:

{
       "name": "osm-validator",
       "namespace": "osm",
       "path": "/validate",
       "port": 9093
}

检查 osm-mesh-config 资源

检查该 ConfigMap 是否存在:kubectl get meshconfig

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值