關(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.