K3s 部署 Knative
背景
个人使用的一些服务部署在阿里云函数计算上,详见阿里云函数计算使用经验分享,但函数计算服务从 2022 年底取消了免费额度,给了老用户1年的试用套餐。在使用了Fission 跟 Knative 这两个 Serverless 平台一段时间后,准备迁移服务到 Knative。
阿里云 Kubernetes 应用自动部署
前段时间把公司应用迁移到阿里云 Kubernetes 上了,分享一下目前使用的自动部署方案,先看一下总体流程:

整个流程中使用到的相关产品:
- Coding.NET 源码仓库及持续集成(Jenkins)
- 阿里云容器镜像服务 应用镜像仓库
- 阿里云容器服务 - Kubernetes Kubernetes 集群,使用到应用中心功能
详细说明
CI 构建
应用仓库发布分支推送后触发构建,构建主要分为三步:
- 镜像构建,构建后打 latest 以及发布版本的 tag
- 更新版本,更新环境仓库中的应用版本
- 镜像推送,推送后触发 webhook
Kubernetes 应用部署
使用阿里云 kubernetes 应用中心的触发器功能接收 webhook,触发后获取环境仓库的配置进行应用更新。
环境仓库
存放 kubernetes 应用配置,包括 deployment.yaml、ingress.yaml、service.yaml 等,首次部署可以通过阿里云控制台操作。
触发器
阿里云 kubernetes 应用中心提供触发器功能用于重新部署。云容器镜像服务添加触发器时可以通过正则表达式过滤,可以实现仅发布版本触发部署。
阿里云函数计算使用经验分享
我的记账经验分享
记账方式 - Beancount + Fava
关于 beancount 本身的使用网上有很多文章,建议通读下官方的 Beancount Language Syntax ,其本身语法不算复杂,官方一张 Syntax Cheat Sheet 图基本可以罗列常用语法

Fava 是 beancount 的 ui 界面工具,提供了很多报表,甚至编辑功能
记账流程及自动化
我的 beancount 文件放在 github 私用仓库里进行版本化管理及存储,fava 通过 docker 运行,通过带有认证功能的 proxy 访问。自动部署流程如下:

- 本地编写 beancount 文件,提交后推送到 github
- github 调用 webhook,服务器拉取最新内容。
fava reload设置2019-01-01 custom "fava-option" "auto-reload" "true"
webhook 使用的是 adnanh/webhook - 如果 fava 容器需要更新(更新 beancount 及 fava 版本),push 一个 release tag
- 阿里云容器镜像服务构建出最新镜像,调用 webhook
- webhook 自动部署新镜像
auth0实践-单页应用调用后端API
我的服务自动化部署方案
travis ci方案
个人选择自动化部署方案的原则之一是不自行搭建类似jenkins这样的持续集成系统,选择travis是因为使用相对简单灵活,而且与github有很好的集成。

关于使用外部云存储,最开始也用过scp直接上传部署包到vps的方案,当时vps在海外,后来vps更换到国内aliyun,方案就基本不可行了,主要是两点,上传速度慢;安全性(海外ip登录服务器的警告,当然也可以用http上传替代)。考虑外部云存储无外乎两个选择,选择七牛/又拍/oss等国内;选择s3这些海外存储,前者上传慢,后者下载慢(挂代理就不说了)。
关于vps接收webhook,这个看个人,我是用flask随便写的服务,里面调用shell脚本部署。
docker 方案
travis 方案如果非要说缺点,只有最后上传部署包到云存储比较慢,docker 方案主要是了解到multi-stage builds,这个方案就可以不依赖云存储。

相比travis方案,这个方案依赖少,而且镜像拉取可以通过aliyun内网,要调整的有两点:
- Dockfile编写,这个各凭本事了,spring boot gradle可以参考我的admin项目
- 服务调整为使用docker部署,接收到 webhook 请求后拉去新版本镜像
[转载]斯坦福 CS007:写给工程师的理财指南(三)
本文是这个公开课系列的最后一篇,前两篇在:
Know Your Worth-资产流动性
流通性
如何在需要时快速获得现金?市场流动性指市场允许资产以稳定的价格买卖。资产流动性是衡量个人或公司能用其现有的流动资产满足其财务义务的程度。不要低估流动性的价值,资产的流通性是投资的力量之源。
流通性与收益率呈典型的负相关,比如现金的流动性很好而私募股票的流动性很差。流动性并不等于安全性,一张五年的 CD 很安全但是流动性很差,特斯拉的股票流动性很好,但是很容易蒸发。
应急资金
美联储在 2015 报告说,47% 的美国人没有足够的储蓄来支付 400 美元的紧急开支。流动性意味着当你需要资金时就可以获得资金。应急资金可以在短期内保护你的长期资产或计划,以免出意外。应急资金通常建议至少有 3 个月的生活费用。
不要把应急资金放在投资上,它是一种缓冲和保险,而不是资产,并且不到万不得已的时候不要使用它。
资产与负债
资产是任何具有经济价值的资源,比如投资于现金、债券、股票等的金融资产和房地产、收藏品、商品等的固定资产。除此之外,你的技能和能力是你最大的资产,这种“无形的资产”是最好的投资。
负债是一种财务义务,通常是债务,如房屋贷款、汽车贷款、学生贷款、信用卡、税务责任等。良好的信用评分会对大多数贷款的资格至关重要。
债务是坏事吗?MM 模型认为公司市值由营收能力和风险资产决定,而不是资本结构的组成(是否负债)。权衡理论认为存在企业的最优资本结构。
通过绘制资产负债表来知道你的净资产,这对评估个人资产也很有帮助。
[转载]斯坦福 CS007:写给工程师的理财指南(二)
Getting Paid - 薪水的构成
- 基本工资:主要受职位、等级、地理位置等影响,基本工资的调整主要受年度通货膨胀、内部审计、市场竞争力、晋升等因素的影响。
- 奖金:签字费(通常有追回条件)、年度/季度奖金(通常是基于绩效的固定普调)、短期激励(不太常见)。
- 股权:在 IT 行业内几乎所有等级和职位上都很常见,其他行业倾向于偏向高管。两种常见形式是股票期权和限制性股票。
- 员工福利:税收福利、健康保险、退休保障、股票优惠等,在大型资金充裕的科技公司中,能够普遍地看到相当昂贵的津贴(食品、交通、健身等)。
什么是股权?
股权就是员工分享公司拥有权的价值,有许多种类之分,最简单的情况是,你的股份除以公司总股份。
- 上市公司(Public Company):上市公司往往试图发展更大,对其财务结果和内容的公开透明有严格的规定,股票和股票期权的市场价格极其透明。
- 私有公司(Private Company):大多数公司都是私有的,有多种股票类别,通常当公司是私人的时候,你不能出售你的股票。
