1. 程式人生 > >使用kompose 快速轉換dokcer-compose 檔案為k8s deploy 檔案

使用kompose 快速轉換dokcer-compose 檔案為k8s deploy 檔案

kompose 是一個不錯的快速轉換docker-compose 檔案為k8s 部署yaml檔案的工具,使用次工具我們
可以將簡單的docker-compose檔案,轉換為複雜的yaml檔案,對於使用者來說可以減少yaml的錯誤,
同時可以實現docker-compose 向k8s 的快速遷移

簡單docker-compose 檔案

version: '3'
services:
  gogs-service:
    image: gogs/gogs
    restart: always
    ports:
      - "10022:22"
      - "10080:3000"
    volumes:
      - ./data/gogs:/data
    depends_on:
      - mysql-gogs
  mysql-gogs:
    image: mysql:5.7.16
    restart: 'always'
    volumes:
      - ./gogs/mysql:/var/lib/mysql
    ports:
      - 3308:3306
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: dalongrong
      MYSQL_DATABASE: gogs
      MYSQL_USER: gogs
      MYSQL_PASSWORD: dalongrong
      TZ: Asia/Shanghai

說明,這是一個gogs git 工具的安裝,docker-compose 檔案不是很複雜

安裝kompose

brew install kompose

生成k8s yaml 部署檔案

kompose convert

效果如下,檔案很簡單,包含了deploy 以及pvc 的定義,ingress 是我自己新增的

生成的deploy(gogs)

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.17.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: gogs-service
  name: gogs-service
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: gogs-service
    spec:
      containers:
      - image: gogs/gogs
        name: gogs-service
        ports:
        - containerPort: 22
        - containerPort: 3000
        resources: {}
        volumeMounts:
        - mountPath: /data
          name: gogs-service-claim0
      restartPolicy: Always
      volumes:
      - name: gogs-service-claim0
        persistentVolumeClaim:
          claimName: gogs-service-claim0
status: {}

service

apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.17.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: gogs-service
  name: gogs-service
spec:
  ports:
  - name: "10022"
    port: 10022
    targetPort: 22
  - name: "10080"
    port: 10080
    targetPort: 3000
  selector:
    io.kompose.service: gogs-service
status:
  loadBalancer: {}

說明,mysql 執行需要修改下,使用init container 刪除資料夾

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.17.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: mysql-gogs
  name: mysql-gogs
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        io.kompose.service: mysql-gogs
    spec:
      initContainers:
      - name: "remove-lost-found"
        image: "busybox:1.25.0"
        command: ["rm", "-fr", "/var/lib/mysql/lost+found"]
        volumeMounts:
        - name: mysql-gogs-claim0
          mountPath: /var/lib/mysql
      containers:
      - args:
        - --character-set-server=utf8mb4
        - --collation-server=utf8mb4_unicode_ci
        env:
        - name: MYSQL_DATABASE
          value: gogs
        - name: MYSQL_PASSWORD
          value: dalongrong
        - name: MYSQL_ROOT_PASSWORD
          value: dalongrong
        - name: MYSQL_USER
          value: gogs
        - name: TZ
          value: Asia/Shanghai
        image: mysql:5.7.16
        name: mysql-gogs
        ports:
        - containerPort: 3306
        resources: {}
        volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql-gogs-claim0
      restartPolicy: Always
      volumes:
      - name: mysql-gogs-claim0
        persistentVolumeClaim:
          claimName: mysql-gogs-claim0
status: {}

說明

使用起來還是比較方便的,可以減少好多程式碼,目前來說,k8s api 的支援感覺不是很好,而且還有一些bug,但是不影響
使用,結合這個工具,我們可以快速的向k8s應用遷移

參考架構圖

參考資料

相關推薦

使用kompose 快速轉換dokcer-compose 檔案k8s deploy 檔案

kompose 是一個不錯的快速轉換docker-compose 檔案為k8s 部署yaml檔案的工具,使用次工具我們 可以將簡單的docker-compose檔案,轉換為複雜的yaml檔案,對於使用者來說可以減少yaml的錯誤, 同時可以實現docker-compose 向k8s 的快速遷移 簡單dock

博士問,如何分割一個大檔案多個檔案

參考:http://www.cnblogs.com/waynechen/archive/2010/07/26/1785097.html split -l 300 large_file.txt new_file_prefix 解決  (adsbygoogle = windo

word文檔快速轉換PPT演示文稿

src 16px tps 編輯 正文 下載 轉換 標題 跳轉 步驟 打開word文檔,設置為“橫向”; 訪問http://t.im/wordtoppt,點擊繼續瀏覽(會自動跳轉至https://convertio.co/zh/doc-ppt/); 點擊“從我的電腦”並選擇

乾貨|Word、PPT、TXT檔案快速轉換Excel格式,轉換全技巧!

在日常工作中各種檔案格式之間的相互轉換十分頻繁,但一直都有人對此一知半解,那麼今天就讓小編為大家詳細講解一下,PPT、Word、TXT檔案如何轉換為Excel檔案格式。 一、Word轉Excel Word檔案轉換Excel,方法十分簡單,具體方法有兩種。 1、複製貼上 步驟:選中Word文

異常發生後如何將log裡對應的地址轉換所在的檔案和行號

這個轉換需要藉助一個GNU工具:arm-linux-androideabi-addr2line(ARM 32位版本)或aarch64-linux-android-addr2line(ARM 64位版本) 工具位置(具體以實際目錄位置為準): ARM 32位版本:prebuilts/gcc/linu

Python解密網易雲音樂.ncm檔案,將.ncm檔案轉換.mp3檔案,實現隨處播放(另附C++已編譯轉換器)

網易雲音樂把.mp3音樂檔案加密為.ncm檔案,導致不能將下載好的音樂複製到其它裝置或使用非網易雲音樂播放器播放,該程式可將.ncm檔案逆向解密為.mp3檔案並保留最高音質。 另有C++已編譯.exe轉換器,將.ncm檔案拖到.exe上直接執行轉換,生成.mp3檔案在.ncm檔案相同路徑。點選下

TinyConfig——Excel快速轉換CSV工具,並生成CSharp讀取配置檔案

TinyConfig Excel快速轉換CSV工具,並生成CSharp讀取配置檔案。 包含功能: 轉客戶端csv,客戶端讀取配置的CSharp程式碼;轉伺服器csv,後續支援直轉資料庫 具體程式碼:https://github.com/garsonlab/TinyConfig Excel表頭格式

轉換Word文件PDF檔案

public bool WordToPDF2(string sourcePath) { bool result = false; Word.Application application = new Word.Application();

Python之轉換py檔案無需依賴python環境的exe檔案的方法

  在日常工作中,使用python指令碼開發快速敏捷,但是其程式碼是可見的,而且充分的依賴python開發環境。為了達到保護我們原始碼的目的,或者不依賴python開發環境使用python指令碼,將其轉換成可以直接執行的exe檔案顯得尤為重要。   無所不能

Kubernetes使用者指南(一)--快速開始、使用k8s配置檔案

一、快速開始 1、啟動一個簡單的容器。 一旦在container中打包好應用並將其commit為image之後,你就可以將其部署在k8s叢集上。 一個簡單的nginx伺服器例子: 先決條件:你需要擁有的是一個部署完畢並可以正常執行的k8s叢集。 在Master節

如何將pdf快速轉換圖片格式

我們都知道PDF檔案是一個比較特殊的檔案,一直都是不容易進行編輯,對於PDF檔案我們想要轉換為圖片格式我們怎麼操作呢?小編今天就簡單和你們分享一下吧! 下面就是迅捷pdf線上轉換的操作技巧:  1、開啟電腦上的瀏覽器,並輸入迅捷pdf線上轉換器,在搜尋結果中找到對

Excel 將資料透視後的結果快速轉換普通表

在工作中經常收到一些通過透視表統計後的資料(用普通表儲存),或者用二維表的方式製作的資料登記表。根據業務需要我們可能想把它再轉換為普通表(也就是一維表)進行再一步的資料分析。   如果資料量小的話,一點點複製剪下貼上就能完成轉換,如果資料量大的話,那麼太繁瑣了。其實通過 Excel 的資料透

在伺服器端,轉換amr格式音訊檔案MP3格式

    由於當前pc端瀏覽器及移動端瀏覽器都不支援直接播放amr格式檔案,因此考慮在伺服器端,將amr檔案轉換為MP3檔案,使瀏覽器可直接播放。 在伺服器使用ffmpeg工具,供php呼叫,用來轉換amr檔案。 基本流程是:微信瀏覽器中錄音並上傳(上傳到微信平臺伺服器)—

PyQt4轉換ui檔案py檔案

1.轉換ui為py .py檔案是這樣生成的: 在cmd控制檯下,進入uic目錄: cd C:\Users\MVTECH\Anaconda3\Lib\site-packages\PyQt4\uic 輸入命令: python pyuic.py "ui檔案路徑" -o "py檔案路徑"

將txt格式檔案轉換csv格式檔案

#-*-coding:utf-8 -*- import csv with open('file.csv', 'w+',newline='') as csvfile: spamwriter = csv.writer(csvfile, dialect='excel')

Java如何解析某個目錄下xml檔案,將XML檔案轉換報表資料來源?

在Java開發的報表工具FineReport中,假如在目錄下儲存了幾個XML檔案,希望把XML檔案轉換為報表資料來源,同時希望展示動態xml資料來源的效果,這時可通過引數的方式,動態獲取xml欄位中的值再作為報表資料來源。Northwind.xml記錄資料格式如下:<?

將C/C++三維陣列轉換MATLAB mat檔案

測試的三維陣列X,Y,Z維度數分別為4,3,2需要注意的是C/C++三維陣列按行優先儲存,MATLAB按列優先儲存// 新增依賴的標頭檔案#include <mat.h>#include <matrix.h>// 新增依賴庫#pragma commen

將Linux系統轉換ISO映象檔案以實現備份

操作環境為Ubuntu14.04 LTS,近日在Ubuntu上搭建了Git伺服器及很多其他配置,想將已安裝好的系統轉換為ISO檔案,這樣可以實現備份具體步驟如下: 1.首先,開啟在/etc/apt/sources.list檔案(使用vim或者gedit均可); 2.根據具體

ubuntu下用java程式碼呼叫命令將java格式檔案轉換html格式檔案

import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.File; import java.io.*; public class C