天天看點

Dapr + .NET Core實戰(十-終篇)K8S運作Dapr

4小時Dapr+.NET 5+K8S 的實戰  https://ke.qq.com/course/4000292?tuin=1271860f

Dapr進階虛拟機叢集實戰(非K8S) https://ke.qq.com/course/4002149?tuin=1271860f

Dapr + .NET Core實戰(十-終篇)K8S運作Dapr
Dapr + .NET Core實戰(十-終篇)K8S運作Dapr
Dapr + .NET Core實戰(十-終篇)K8S運作Dapr

為了實作在k8s上安裝Dapr,Dapr需要部署<code>dapr-sidecar-injector</code>、<code>dapr-operator</code>、<code>dapr-placement</code>和<code>dapr-sentry</code>服務。 

dapr-operator: 管理元件(state stores, pub/subs, etc.)

dapr-sidecar-injector: 将 Dapr 注入 annotated pods,并添加環境變量 <code>DAPR_HTTP_PORT</code> 和 <code>DAPR_GRPC_PORT</code>,以使使用者定義的應用程式能夠輕松地與 Dapr Sidecar通信,而無需寫死 Dapr 端口值。

dapr-placement: 将 actor 執行個體映射到 pods。

dapr-sentry: 管理服務之間的mTLS并作為證書頒發機構。 

通常使用以下方法本地安裝的K8S叢集

k8s-for-docker-desktop

kubeadm

我本地已經安裝好了這兩種,這次使用kubeadm 1.20版本示範dapr

Dapr + .NET Core實戰(十-終篇)K8S運作Dapr

vs中分别右擊Frontend和Backend,添加Docker支援,即可生成對應的Dockerfile,修改暴露端口

通過以下指令Build Image

我使用阿裡雲私有倉庫來上傳鏡像,建立frontend和backend兩個庫

Dapr + .NET Core實戰(十-終篇)K8S運作Dapr

 按照以下提示步驟将frontend和backend Image上傳到指定庫

Dapr + .NET Core實戰(十-終篇)K8S運作Dapr

k8s主節點登入阿裡雲私庫 

docker登入之後,會把密鑰存到一個配置檔案,通過下面指令拿到base64編碼資訊

建立ali-docker-repo.yaml,.dockerconfigjson就是上一步得到的base64

apply secret

下面指令将DaprCLI安裝到 /usr/local/bin

首先,請確定你的機器已經安裝了 Helm 3 。

然後,添加 Helm 庫并更新

将 Dapr 圖表安裝在你的叢集的 <code>dapr-system</code>命名空間中。

驗證安裝

我們仍然通過helm安裝redis,因為redis是statefulset,是以需要先把redis依賴的storageclass和pv建立好

建立redis-storage-class.yaml

apply storageclass

由于我們即将安裝的redis,使用預設的storageclass,我們需要把我們剛剛建立的storageclass置為預設

因為我們即将安裝的redis叢集有四個節點,我們需建立四個pv,建立檔案redis-pv.yaml

因為我們指定了四個pv排程在k8s-node1上,是以需要去node1上建立挂載目錄/local-storage/redis

apply pv

安裝redis到叢集

檢視redis pod

建立storestate元件,建立redis-state.yaml

建立pubsub元件

apply statestore和pubsub

驗證

在 Kubernetes 叢集中部署和運作啟用 Dapr 的應用程式非常簡單,隻需向 deployment 方案添加一些annotations

分别apply backend和frontend 

檢視pod

為frontend建立service

采用nodeport方式暴露31111端口,apply service

通路http://192.168.43.150:31111/Dapr,其中192.168.43.150是主控端ip,結果顯示通路成功,k8s部署dapr成功

Dapr + .NET Core實戰(十-終篇)K8S運作Dapr

最後:整個教程的源碼

https://github.com/cysnet/dapr-aspnetcore-demo