k8s CI/CD利器skaffold初試

關(guān)于asaffold是個什么玩意以及安裝,請自行百度;詳細用法:https://skaffold.dev/docs/。
這里用一個簡單的go程序做測試其功能,主要的文件如下:
main.go

package main

import (
    "io"
    "net/http"
)
func main() {
    http.HandleFunc("/", helloWorldHandler)
    http.ListenAndServe(":8800", nil)
}
func helloWorldHandler(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "Hello world! ,and from akaffold v1")
}

app.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: skaffold-test
spec:
   replicas: 1
   template:
     metadata:
       labels:
         name: skaffold-test
     spec:
       containers:
         - name: skaffold-test
           image: 172.21.205.57:5005/akaffold/test  #會自動引用下面的image tag版本
           ports:
             - containerPort: 8800
---
apiVersion: v1
kind: Service
metadata:
  name: skaffold-test-service
spec:
  ports:
    - port: 8800
      targetPort: 8800
      protocol: TCP
  selector:
    name: skaffold-test

Dockerfile

FROM 172.21.205.57:5005/golang:1.10.1-alpine3.7 as builder
COPY main.go .
RUN go build -o /app main.go

FROM 172.21.205.57:5005/alpine:3.7  
CMD ["./app"]
COPY --from=builder /app .

skaffold.yaml

apiVersion: skaffold/v1beta3
kind: Config
build:    # build部分與deploy部分是獨立的,可以隨意組合
  artifacts:
    - image: 172.21.205.57:5005/akaffold/test
  tagPolicy:
    dateTime:   #image tag 
      format: "2006-01-02-15-04-05"
      timezone: "Local" 
  local:
    push: true
deploy:
  kubectl:
    manifests:
      - app.yaml
    flags:
      apply:
        - --force=true
        - --grace-period=0

開始測試

skaffold run
image.png

通過nginx訪問
[圖片上傳中...(image.png-f91f4c-1552897853420-0)]
更改main.go文件,將v1改為v2

skaffold run

再次通過nginx訪問


image.png

順利實現(xiàn)想象中的邏輯,skaffold的強大功能遠不如此,值得深入研究;然后我越來越覺著這貨的邏輯很像一個工具:circleci.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容