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