12 个版本
0.1.9 | 2022 年 7 月 18 日 |
---|---|
0.1.8 | 2022 年 4 月 6 日 |
0.1.7 | 2022 年 3 月 21 日 |
0.1.6 | 2022 年 1 月 21 日 |
0.0.1 | 2021 年 6 月 6 日 |
#2435 在 命令行工具 中
90KB
2.5K SLoC
简介和概念
kdd 是一个用于简化 Kubernetes 驱动的开发和部署的命令行工具。它没有任何运行时组件,甚至不构建它们。 kdd 只是一种将云应用程序结构化为面向 Kubernetes 的多服务系统,并将 docker、kubectl 和云 cli 流线化为单个命令行集的方法。
每个系统都有一个 kdd.yaml
文件,包含两个主要结构
- 块 是构建的东西
- 领域 是部署部件的地方(例如,k8s 集群)
- 构建 是构建块的命令指令,这些指令根据它们目录中的文件来执行
安装
从 cargo(目前推荐)
cargo install kdd
高级:从二进制文件安装 (使用 binst)
示例
系统根目录中的 kdd.yaml
如下所示。
完整的示例在 Cloud Starter 中
system: cstar
image_tag: "{{__version__}}"
block_base_dir: services/
blocks:
- _common
- web_server
- agent
- redis_queue
- db
- name: web
dir: frontends/web/
- name: web-server
dependencies: ['_common','web'] # build dependency for when running dbuild (no effect on build).
realms:
_base_:
web_external_ports: 8080
dev:
yaml_dir: k8s/dev/ # for dev, we override the yamlDir
context: docker-desktop
dev_stuff: Some dev stuff
confirm_delete: false
aws:
yaml_dir: k8s/aws/
context: arn:aws:eks:us-west-2:843615417314:cluster/cstar-cluster
profile: jc-root
registry: 843615417314.dkr.ecr.us-west-2.amazonaws.com/
default_configurations: ['agent', 'db', 'queue', 'web-server']
confirm_delete: false
builders:
- name: npm_install
when_file: ./package.json
exec:
cmd: npm
cmd_type: global # base_dir | block_dir
args: ["install", "--color"]
- name: tsc
when_file: ./tsconfig.json
exec:
cmd: node_modules/.bin/tsc
- name: rollup
when_file: ./rollup.config.js
replace: tsc # rollup has rollup-ts, so no need to do it twice
exec:
cmd: node_modules/.bin/rollup
args: ["-c"]
- name: pcss
when_file: ./pcss.config.js
exec:
cmd: node_modules/.bin/pcss
命令示例
# Change realms to dev
kdd realm dev
# Build docker blocks (and their dependencies)
kdd dbuild
# build per block name (no space)
kdd dbuild agent,web-server
# docker push docker images to the current realm to the registry
kdd dpush
# push only some docker images
kdd dpush agent,web-server
# execute a kubectl apply for all default configurations
kdd kapply
# selectively doing kubectl apply (push image before)
kdd kapply web-server,agent
# kdd kdelete, kdd kcreate, kdd kexec ... for the kubectl equivalents
使用 binst 安装
(目前仅限 mac / linux)
首先安装 binst。
binst install -r https://binst.io/jc-repo kdd
依赖项
~10–18MB
~235K SLoC