从.net开发做到云原生运维(六)——分布式应用运行时Dapr

  • A+
所属分类:.NET技术
摘要

上一篇文章我们讲了K8s的一些概念,K8s真的是带来了很多新玩法,就像我们今天这篇文章的主角Dapr一样,Dapr也能在K8s里以云原生的方式运行。当然它也可以和容器一起运行,或者是CLI运行,我们这篇文章只讨论容器和K8s运行方式。


1. 前言

上一篇文章我们讲了K8s的一些概念,K8s真的是带来了很多新玩法,就像我们今天这篇文章的主角Dapr一样,Dapr也能在K8s里以云原生的方式运行。当然它也可以和容器一起运行,或者是CLI运行,我们这篇文章只讨论容器和K8s运行方式。

2. Dapr介绍

Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。

从.net开发做到云原生运维(六)——分布式应用运行时Dapr

Dapr概览

通过概览图我们能看到,Dapr在服务和基础设置K8s之间又做了一部分的抽象。而我们的服务开发就在这个抽象之上进行。

在Asp.net core进行服务调用的时候我们如果采用GRPC,就要有一个服务端,客户端还要注入客户端配置,比如配置服务端的ip地址什么的,但是如果采用Dapr的话,只要服务端引入Dapr的SDK做简单的服务封装,那么客户端就可以只通过服务端的应用名称就能做到数据的交互。
从.net开发做到云原生运维(六)——分布式应用运行时Dapr

服务调用官方文档

3. Dapr K8s边车注入原理

K8s中的Dapr采用Sidecar(边车挂载的形式),当一个工作负载部署到K8s中,通过部署文件里的注解就会进行校验,如果符合条件就会动态修改部署文件,然后加入一个Dapr的容器和服务一起运行。

这些操作需要大家了解K8s的一个名词叫动态准入控制,读完这个介绍大家就应该明白我刚才说的是什么意思了。

如果大家在集群安装了Dapr,通过以下指令获取对应的资源

kubectl get MutatingWebhookConfiguration

编辑指令编辑查看

kubectl edit MutatingWebhookConfiguration dapr-sidecar-injector

从.net开发做到云原生运维(六)——分布式应用运行时Dapr

4. Dapr具体的应用示例

.net core的微服务开发这篇文章里的一个例子也有dapr的内容,但是只是一个demo,我们可以参考下微软社区的一个dapr实践的例子。

eShop on Dapr

从.net开发做到云原生运维(六)——分布式应用运行时Dapr

这是一个社区维护的商城简单的dapr使用的架构图

整体算是很完善的demo了,适合asp.net core参考dapr的开发使用。

推荐文档