Dapr 官方教程第二章(Hello World Kubernetes) 电脑版发表于:2021/8/27 22:15  >#Dapr 官方教程第二章(Hello World Kubernetes) [TOC] tn2>本教程将帮助您在 Kubernetes 集群中使用 Dapr。您将从Hello World部署相同的应用程序。 概括地说,Python 应用程序生成消息,Node 应用程序使用并持久化它们。以下架构图说明了构成本快速入门的组件:  先决条件 ------------ >本快速入门要求您在计算机上安装以下内容: - kubectl - Kubernetes 集群,例如Minikube、AKS或GKE <br/> 此外,除非您已经这样做了,否则请使用快速入门将存储库克隆cd到正确的目录中: ```bash git clone https://github.com/dapr/quickstarts.git cd quickstarts/hello-kubernetes/ ``` 在 Kubernetes 集群上设置 Dapr ------------ tn2>初始化集群。 ```bash dapr init --kubernetes ``` 创建和配置状态存储 ------------ tn2>Dapr 可以使用许多不同的状态存储(Redis、CosmosDB、DynamoDB、Cassandra 等)来持久化和检索状态。本演示将使用 Redis。 ```bash # 通过 docker 创建 redis docker pull redis:latest docker run -itd --name redis-test -p 6379:6379 redis ``` tn2>查看ip,并修改`redis.yaml`文件  ```bash vim deploy/redis.yaml ```  ```bash # 开始部署 kubectl apply -f ./deploy/redis.yaml ```  使用 Dapr sidecar 部署 Node.js 应用程序 ------------ tn2>查看node.yaml文件的定义。 `dapr.io/enabled: true` - 这告诉 Dapr 控制平面向此部署注入一个边车。 `dapr.io/app-id: nodeapp` - 这会为 Dapr 应用程序分配一个唯一的 ID 或名称,因此它可以向其他 Dapr 应用程序发送消息并与之通信。 接着我们开始进行部署: ```bash kubectl apply -f ./deploy/node.yaml ``` tn2>此部署提供外部 IP,等到 IP 可见: ```bash kubectl get svc nodeapp ``` tn2>可选:如果您无法轻松访问 Kubernetes 集群服务 IP,也可以使用端口转发: ```bash export NODE_APP=localhost:8080 kubectl port-forward service/nodeapp 8080:80 ```  使用外部 IP 验证服务调用 ------------ tn2>要使用提取的外部 IP 调用服务,请从命令提示符运行: ```bash export NODE_APP=localhost:8080 curl $NODE_APP/ports ```  使用 Dapr sidecar 部署 Python 应用程序 ------------ tn2>接下来,快速浏览一下 Python 应用程序。导航到 kubernetes 快速入门中的 Python 应用程序:`cd quickstarts/hello-kubernetes/python`并通过`cat app.py`查看`app.py`.  tn2>就是不断的更新node数据,将 Python 应用程序部署到您的 Kubernetes 集群: ```bash cd ../deploy/ kubectl apply -f python.yaml ``` tn2>现在等待 pod 处于`Running`状态: ```bash kubectl get pods --selector=app=python -w ```  观察消息 ------------ tn2>现在部署了 Node.js 和 Python 应用程序,观察消息通过获取 Node.js 应用的日志: ```bash kubectl logs --selector=app=node -c node --tail=-1 ``` tn2>如果一切顺利,您应该会看到如下日志:  确认成功持久化 ------------  清理 ------------ tn2>到`./deploy`目录下执行清理操作。 ```bash kubectl delete -f . ``` 