前言
首先以SpringBoot應用為例介紹一下k8s的釋出步驟。
1.從程式碼倉庫下載程式碼,比如GitLab;
2.接著是進行打包,比如使用Maven;
3.編寫Dockerfile檔案,把步驟2產生的包製作成映象;
4.上傳步驟3的映象到遠端倉庫,比如Harhor;
5.編寫Deployment檔案;
6.提交Deployment檔案到k8s叢集;
從以上步驟可以看出,釋出需要的工具和環境至少包括:程式碼倉庫(GitLab)、打包環境(Maven)、映象製作(Docker)、映象倉庫(Harbor)、k8s叢集等。
當前,也可以藉助一些開源的系統來發布你的應用,比如:Jenkins、DHorse等。
詳細步驟
假如有一個名為Hello的SpringBoot應用,服務埠是8080,並且有一個/hello介面。
打包
這裡直接從GitLab下載到本地,執行maven打包命令,這裡打為Jar包:
mvn clean package
完成以後,生成的包為:hello-1.0.0.jar
製作映象
以下步驟在具有Docker環境的Linux機器上操作。
- 把hello-1.0.0.jar放到/usr/local/hello目錄下,並在該目錄下建立Dockerfile檔案,內容為:
FROM openjdk:8-jdk-alpine
ADD hello-1.0.0.jar /usr/local/hello.jar
ENTRYPOINT ["java", "-jar", "/usr/local/hello.jar"]
則/usr/local/hello目錄的檔案為:
-rw-r--r-- 1 root root 119 Feb 22 17:50 Dockerfile
-rw-r--r-- 1 root root 21863457 Feb 22 17:07 hello-1.0.0.jar
- 製作映象,在/usr/local/hello目錄下執行命令:
docker build -t 192.168.109.134:20080/dhorse/hello:1.0.0 .
其中,192.168.109.134:20080是Harbor映象倉庫地址,dhorse是專案名。
- 登入倉庫並上傳映象
docker login 192.168.109.134:20080 -u admin -p Harbor12345
docker push 192.168.109.134:20080/dhorse/hello:1.0.0
編寫Deployment檔案
建立hello-k8s.yml檔案,內容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello
labels:
app: hello
spec:
replicas: 1
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- name: hello
image: 192.168.109.134:20080/dhorse/hello:1.0.0
imagePullPolicy: Always
部署應用
以下操作在k8s叢集的mater機器上執行。
把hello-k8s.yml檔案複製/user/local目錄下,並在當前目錄執行如下命令:
kubectl apply -f hello-k8s.yml
稍後,再執行如下命令:
kubectl get pods -o wide
輸出結果如下:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
hello-79d56dc985-7dz6q 1/1 Running 0 8s 10.32.1.180 centos06 <none> <none>
然後在訪問/hello介面:
curl http://10.32.1.180:8080/hello
至此,釋出結束,同時歡迎使用DHorse進行自動釋出。