前端文件采用傳統nginx部署訪問,后端應用放到k8s中的操作配置說明


部署結構

1.把前端dist文件夾放到nginx的html目錄下
2.把后端應用部署到k8s中
3.nacos,redis,mysql,rabbitmq都采用外置的,有關配置都寫道nacos中

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和/jdd-parking-cloud-admin

// 創建 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 1103324414@qq.com
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 .
    - 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

![](https://img2020.cnblogs.com/blog/794174/202106/794174-20210630143251451-461930710.png)


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 根據實際情況來定

![](https://img2020.cnblogs.com/blog/794174/202106/794174-20210630143406084-1561084424.png)


6.使用的鏡像是根據gitlab-runner生成的,上傳到nexus倉庫里的

k8s中后端應用pod啟動后的日志顯示如下:

----------------------------------------------------------
        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;
    }
}

若是頁面中有圖片沒有顯示出來,則可以直接修改nginx配置,增加圖片訪問路徑

location /static/images/ {
    alias  /home/park/images/;
    autoindex on;
}

測試訪問

用本地的windows電腦打開瀏覽器,輸入地址:http://www.xxx.com/mgr 進行訪問,出現登錄界面后,且顯示有驗證碼,輸入賬號密碼能登陸進去

更新

1.前端
本機yarn build后生成dist文件夾,把該文件夾里面的文件直接替換mgr目錄下的文件

2.后端
本地修改代碼后,提交到gitlab,觸發gitlab-runner根據.gitlab-ci.yml文件自動構建docker鏡像上傳到nexus倉庫
然后在k8s界面,找到對應的后端應用,直接更新pod使用的鏡像版本:標簽


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM