#kubernetes #docker #gcp #aws #command-line-tool #web-services #docker-image

app kdd

一个用于简化 Kubernetes 驱动的开发和部署的命令行工具

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命令行工具

MIT 许可证

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