使用 Tye 辅助开发 k8s 应用竟如此简单(三)
使用 Tye 辅助开发 k8s 应用竟如此简单(一)
使用 Tye 辅助开发 k8s 应用竟如此简单(二)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法。本篇我们来了解一下如何在 Tye 中如何对数据库进行链接。
Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架。如果您是首次阅读本系列文章。建议可以先从本文末尾的入门文章开始了解。
中间件链接
绝大多数服务都需要用到外部中间件来支持应用程序的正常运行,通常来说,就包含有数据库、缓存中间件、消息队列和文件系统等等。
因此,在开发过程中需要在应用程序中管理对这些中间件的链接字符串。
Tye 提供了一种方式以便更加容易的管理这些链接字符串。
使用 Tye 启动 mongo
首先,我们使用 Tye 来启动一个 mongo。
手动创建一个 tye.yml:
|
使用 tye run 便可以在本地启动一个 mongo 并且在 http://localhost:8081 通过 ui 查看 mongo 中的数据情况:
实际上就是使用 Tye 控制 docker desktop 启动 mongo。因此需要提前在本地安装好 docker desktop,以便启动。
当然,这实际上和使用 docker-compose
没有什么实质性的区别。
创建应用程序连接 mongo
下面,我们创建一个应用,并且将应用与 mongo 进行连接。
创建测试引用,并安装必要的包:
|
进入 Startup,向容器中注册 MongoClient :
|
值得注意的是,这里使用了一个扩展方法从 IConfiguration
中读取 mongo 的连接字符串:
mongo
实际上就是定义在 tye 中的服务名称。GetConnectionString
是来自于Microsoft.Tye.Extensions.Configuration
的扩展方法MongoClient
应该全局单例还是Scope
其实笔者也没查过资料。实际项目开发者注意按照需求调整。
打开 WeatherForecastController
,让我们在每次接受请求时,都写入一些数据到 mongo
中以验证效果。
|
至此,测试引用就创建完毕了。预期的效果是,当接受到请求时,就会想 mongo
中的 WeatherForecast
collection
写入一些数据。可以通过 mongo express UI 进行查看。
修改 tye.yml 以配置链接串
由于前面,我们是手动创建过了 tye.yml。因此,我们现在直接在原来的基础上进行修改,以便加入测试应用。
首先,将之前创建好的 tye.yml 放置到 TyeTest.sln
的根目录。
然后修改为如下形式:
|
对比之前,一共有两处修改:
增加了
tyetest
服务配置的节点,以便能够启动测试应用在
mongo
服务上增加了bindings
。这是tye
中组织服务之间相互连接的一种方式。其中的connectionString
便是其他服务连接mongo
所使用的链接串。
修改完毕之后。使用 tye run
启动应用。
打开 swagger
页面,并访问 API,便可以在 mongo express 中查看到数据已经成功完成了写入:
查看效果之后可以使用 Ctrl
+C
停止 tye
以移除相关容器。
最后,发到 K8S 里面试一下
这次的样例,并不是直接使用 tye deploy
就可以完成了。
首先,通常来说,中间件在生成环境中不太可能是通过部署在容器中的方式而存在的。即便是使用容器部署,也不会每次 deploy 都希望重新部署。也就是说,通常是直接连接已有的中间件就可以了。
其次,中间件连接字符串通常来说是以 secret
的形式存在在 k8s
中。故而不太可能在 tye 脚本中进行指定。
故而,tye
仅仅会帮助开发者检查需要部署的目标集群中是否已经存在符合要求的 secret
。当且仅当,目标集群中存在符合要求的 secret
才能部署。
以本示例为例,需要在目标集群中存在 binding-production-mongo-secret
对应的 secret
才能都实现使用 tye
进行部署。
具体的名称约定规则,可以参照如下内容:
https://github.com/dotnet/tye/blob/master/docs/reference/deployment.md#validate-secrets
小结
本篇,我们已经顺利完成了使用 Tye 来完成应用与中间件之间的链接配置。
不过还遗留一些问题没有细说:
如果一个中间存在多个绑定该如何处理
https 绑定该如何处理
详细这些内容,请移步官方文档进行查看:
https://github.com/dotnet/tye/blob/master/docs/reference/service_discovery.md
下一篇,我们将进一步在 Tye 中实现对纷繁复杂的日志进行统一管理。
使用 Tye 辅助开发 k8s 应用竟如此简单(三)相关推荐
- 使用 Tye 辅助开发 k8s 应用竟如此简单(五)
使用 Tye 辅助开发 k8s 应用竟如此简单(一) 使用 Tye 辅助开发 k8s 应用竟如此简单(二) 使用 Tye 辅助开发 k8s 应用竟如此简单(三) 使用 Tye 辅助开发 k8s 应用竟 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(四)
使用 Tye 辅助开发 k8s 应用竟如此简单(一) 使用 Tye 辅助开发 k8s 应用竟如此简单(二) 使用 Tye 辅助开发 k8s 应用竟如此简单(三) 续上篇,这篇我们来进一步探索 Tye ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(一)
最近正巧在进行 Newbe.Claptrap 新版本的开发,其中使用到了 Tye 来辅助 k8s 应用的开发.该系列我们就来简单了解一下其用法. 安装 Tye 首先,确保已经正确安装了 netcore ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(六)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们将进一步研究 Tye 与分布式应用程序运行时 Dapr 如何碰撞出更精彩的火花. 巧了,巧了,真是巧了 今天正值 dapr 1.0 发布的 ...
- 使用 Tye 辅助开发 k8s 应用竟如此简单(二)
续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们来了解一下如何在 Tye 中使用服务发现. 服务发现 - 微服务开发不可缺少的部件 服务发现,就是新注册的这个服务模块能够及时的被其他调用 ...
- 使用 Tye 辅助开发 dotnet 应用程序
newbe.pro 已经给我们写了系列文章介绍Tye 辅助开发k8s 应用: 使用 Tye 辅助开发 k8s 应用竟如此简单(一) 使用 Tye 辅助开发 k8s 应用竟如此简单(二) 使用 Tye ...
- 70后游戏辅助开发程序猿的人生路(三)
这次回来后,我就静下心来继续研究开发游戏辅助,2007年我终于做出了第一个韩服游戏的内挂,然后找了一个朋友,给我投资,搞了个游戏工作室.在一个工业园里租了套房子,上下两层,一楼摆电脑,二楼办公.刚开始 ...
- 微软推出VS Code新特性,为TypeScript和JavaScript用户提供AI辅助开发功能
除了开发人员非常喜欢的IntelliSense和代码完成之外,今年早些时候,微软还发布了IntelliCode,提供了一组AI辅助开发功能.VS Code团队现在宣布了一项新的实验性扩展,将Intel ...
- 微软推出 VS Code 新特性,为 TypeScript 和 JavaScript 用户提供 AI 辅助开发功能
除了开发人员非常喜欢的IntelliSense和代码完成之外,今年早些时候,微软还发布了IntelliCode,提供了一组 AI 辅助开发功能.VS Code 团队现在宣布了一项新的实验性扩展,将 I ...
最新文章
- eclipse adt如何切换到设计界面_APP界面设计模板|引导页该如何设计?
- android预置第三方apk,android 内置APK成系统应用
- mysql-cluster集群原理介绍和搭建步骤(四个data/sql节点) (转)
- docker rabbitmq_使用Docker集成Rabbitmq与安装elasticsearch教程
- Spring 容器简介
- Python稳基修炼之计算机等级考试易错概念题3(含答案与解析)
- java写算法之二叉搜索树查找
- 华为:崛起的 5G 巨龙
- win10 激活 错误码 0xc004f074
- 【Qt/C++异常笔记】间接寻址级别不同
- 产品经理为什么比程序员工资要高?百度员工:因为他是产品灵魂
- 常用ADB命令模拟手机按键
- 图标照旧的效果_这不是而且不能成为“一切照旧”
- Excel2016办公扫盲
- 艺赛旗(RPA) Python 科学计算:matplotlib (精华博文)
- 灰色预测模型GM(1,1)
- 以太坊(Ethereum) - 什么是智能合约
- Android GMS Checklist【Android gms认证自检表】
- 我读《怪诞行为学2》
- 关于峰均比的一些记录