前端檔案採用傳統nginx部署訪問,後端應用放到k8s中的操作配置說明
部署結構
1.把前端dist資料夾放到nginx的html目錄下
2.把後端應用部署到k8s中
nginx
nginx安裝在主機192.168.80.221上,測試域名為www.xxx.com
在這個主機的/etc/hosts上新增一條解析
# cat /etc/hosts
192.168.80.221 www.xxx.com
當然了,本機windows電腦上的hosts檔案也新增這個解析
前端檔案
1.前端檔案:vue.config.js
這個檔案中連線後端的地址,是本地測試用的,使用的命令是:yarn run server,在這裡不修改這個檔案,保持原樣
devServer: { port: 3000, proxy: { '/jdd-parking-cloud-admin': { target: 'http://localhost:8093/', //請求本地後臺專案 ws: true, changeOrigin: true, pathRewrite: { '^/jdd-parking-cloud-admin': '/' //預設所有請求字首,需要去掉 } } } },
2.前端檔案:src\utils\request.js
這個檔案中連線後端的地址,是部署到線上生產使用的,使用的命令是:yarn run build,會生成一個dist資料夾,在這裡修改這個檔案,注意域名和路徑要跟nginx的配置保持一致,www.xxx.com
// 建立 axios 例項 const service = axios.create({ baseURL: process.env.NODE_ENV === 'production' ? 'http://www.xxx.com/jdd-parking-cloud-admin' : '/jdd-parking-cloud-admin', // baseURL: 'https://www.jdd966.com/jdd-boot', // baseURL: '', // api base_url timeout: 30000 // 請求超時時間 })
後端
後端專案使用的Dockerfile檔案內容
FROM jdd.io/jre:1.8.0_275
MAINTAINER [email protected]
EXPOSE 8093
ADD target/jdd-parking-cloud-admin.jar jdd-parking-cloud-admin.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar","jdd-parking-cloud-admin.jar"]
CMD ["--spring.profiles.active=test"]
後端專案使用的.gitlab-ci.yml檔案內容
variables:
DOCKER_DRIVER: overlay2
MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
# CURRENT_PROJECT: gateway # 編譯的子專案,每次需要修改這個
cache:
paths:
- .m2/repository/
stages:
- package
- build
maven_step:
tags:
- maven
stage: package
script:
- mvn clean package -Dmaven.test.skip=true
artifacts:
paths:
- target/*.jar
only:
- prod
develop_docker_step:
tags:
- docker
stage: build
script:
- export TAG=`date "+%Y%m%d%H%M%S"`
- docker build -t jdd.io/jdd-k8s/$CI_PROJECT_NAME:$TAG .
#- echo "36.99.42.40 registry.kubeoperator.io" >> /etc/hosts
- docker login -u admin -p admin123 jdd.io
- docker push jdd.io/jdd-k8s/$CI_PROJECT_NAME:$TAG
- echo $TAG
- docker rmi jdd.io/jdd-k8s/$CI_PROJECT_NAME:$TAG
only:
- prod
後端應用具體部署方式中的關鍵點
k8s中部署
1.新增名稱空間:jdd-k8s
2.新增ConfigMap
名稱:park-config
資料:
NACOS_SERVER_ADDR 192.168.2.162:8848
PROFILE test
3.容器引數
spring的profile Nacos配置中心地址 Nacos服務發現地址 服務埠
--spring.profiles.active=${PROFILE} --spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR} --spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER_ADDR} --server.port=#根據實際情況來定
4.容器環境變數
park-config
5.容器埠
tcp 根據實際情況來定
6.使用的映象根據gitlab-runner生成的
後端應用啟動後的日誌顯示如下:
----------------------------------------------------------
Application Jdd-Parking-Cloud-Admin is running! Access URLs:
Local: http://localhost:8093/
External: http://10.0.2.20:8093/
swagger-ui: http://10.0.2.20:8093/swagger-ui.html
----------------------------------------------------------
部署到k8s中,並且nginx代理需要訪問到,所以需要給後端應用設定service,並且選擇NodePort方式,記住節點埠號,這裡假設地址後端應用訪問地址是:http://192.168.2.163:30594
並且通過地址:http://192.168.2.163:30594/swagger-ui.html 可以訪問到後端介面檔案,說明後端應用這邊沒啥問題。
配置nginx
把前端dist資料夾放到nginx的html目錄下,並重命名為mgr,然後重啟nginx
server {
listen 80;
server_name www.xxx.com; # 本機解析域名
location / {
root /usr/local/openresty/nginx/html;
index index.html index.htm;
if (!-e \$request_filename) {
rewrite ^(.*)\$ /index.html?s=\$1 last;
break;
}
}
# 注意,路徑最後的/不能少
location /jdd-parking-cloud-admin/ {
proxy_pass http://192.168.2.163:30594/; # 請求的是k8s中的後端應用,NodePort形式的service
proxy_set_header Host park-single-system;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
}
}
測試訪問
用本地的windows電腦開啟瀏覽器,輸入地址:http://www.xxx.com/mgr 進行訪問,出現登入介面後,且顯示有驗證碼,輸入賬號密碼能登陸進去
更新
前端更新直接替換mgr目錄下的檔案
後端更新直接更新pod使用的映象版本:標籤