使用kompose把docker-compose文件转换成k8s资源

简介

Have a nice try

安装

安装很简单,直接一个二进制下载过来就好了

wget https://github.com/kubernetes/kompose/releases/download/v1.26.1/kompose-linux-amd64.tar.gz

tar -zxvf kompose-linux-amd64.tar.gz

mv kompose-linux-amd64 /bin/kompose

使用

首先准备一个docker-compose文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "3"
services:
  prometheus:
    image: "prom/prometheus:v2.35.0"
    volumes:
      - "./prometheus-conf/prometheus.yml:/etc/prometheus/prometheus.yml"
      - "./data:/prometheus"
      - "/etc/localtime:/etc/localtime"
      - "./prometheus-conf/file_sd:/file_sd"
    command:
      - "--config.file=/etc/prometheus/prometheus.yml"
      - "--web.enable-lifecycle"
      - "--web.enable-admin-api"
      - "--web.enable-remote-write-receiver"
      - "--storage.tsdb.retention.time=7d"
      - "--storage.tsdb.max-block-duration=2h"
      - "--storage.tsdb.min-block-duration=2h"
    ports: 
      - "9000:9000"
      - "9090:9090"
    restart: "always"
    container_name: "prometheus"

之后直接执行

kompose convert

就好了

如果你的文件不是docker-compose.yaml这个名字的,你可以使用-f参数取指定文件名字

这样生成出来的资源文件默认会带上

1
2
3
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.26.1 (a9d05d509)

这两个annotations

如果你不想要的话可以这么做

./kompose-linux-amd64 convert -f docker-compose.yaml --with-kompose-annotation=false

默认kompose转换出来的是deployment,当然你想转成daemonset,你可以使用下面参数

--controller=daemonSet

如果你不想生成文件,可以使用下面参数直接输出到屏幕中

--stdout

说两句

转换出来的质量还可以,可以帮助yaml工程师少写几个参数了

欢迎关注我的博客 www.bboy.app

Have Fun