Доработать интерфейс vue js и серверную часть spring boot и развернуть в кластере kubernetes

#spring-boot #docker #vue.js #npm #kubernetes

#весенняя загрузка #docker #vue.js #npm #kubernetes

Вопрос:

Я разработал серверную часть spring boot и vue js интерфейс. Я мог бы успешно развернуть приложение Spring boot и создать кластерный ip сервис для приложения Spring boot, но я никогда не работал с проектом NPM на docker и kubernetes . У меня также возникает проблема, Axios когда я локально тестирую серверную часть и интерфейс, которые я предоставляю (localhost:backendport/endpoint) для axios , и как я могу адаптировать его к kubernetes . должен ли я указывать ip имя службы кластера вместо localhost:port/endpoint -> clusteripservice/endpoint , если да, то как я могу экстернализировать конфигурации и как я могу развернуть оба приложения.

вот Axios вызов

 import axios from 'axios'


const API_URL = 'http://localhost:8084'
//const API_URL = '/'


class UserDataService {


    retrieveAllUsers() {

        return axios.get(`${API_URL}/user/getall`);
    }


}

export default new UserDataService()  
  

Ответ №1:

Идея состоит в том, чтобы использовать nginx в качестве контейнера вашего приложения и передавать прокси-сервер на серверную часть. Итак, вам нужно определить местоположение для вашего api, т. Е. /api и прокси-сервер.

Затем, если вы используете axios, вы должны вызывать все внутренние конечные точки по относительному пути, т. Е.

 axios.get('/api/v1/myApiPath')
  

Таким образом, вам не нужно беспокоиться об имени хоста при вызовах серверной части.

Кроме того, для разработки вы аналогичным образом используете vue.js настройки разработки, чтобы также прокси-сервер через npm.

Смотрите мой игрушечный проект здесь для получения подробной информации о том, как это делается: Часть развертывания —https://github.com/taleodor/mafia-deployment Часть пользовательского интерфейса — https://github.com/taleodor/mafia-vue

В частности, настройки nginx с настройкой прокси —https://github.com/taleodor/mafia-vue/blob/master/nginx/default.conf (обратите внимание, что в нем используются веб-сокеты, которые вы можете удалить, если вы их не используете). В частности, конфигурация сервера разработки vue —https://github.com/taleodor/mafia-vue/blob/master/vue.config.js.

Напишите о работе CI / CD (не связано с вашим вопросом, но может быть полезно) — https://itnext.io/building-kubernetes-cicd-pipeline-with-github-actions-argocd-and-reliza-hub-e7120b9be870

Комментарии:

1. Ценю ваш ответ и есть ли у вас идея, если я использую axios, то как я могу обратиться к серверной части. в вашем проекте я не видел вызова axios.

2. Обновил мой ответ примером вызова axios — в основном вы всегда используете относительные пути, т. Е. axios.get (‘/api/v1/myApiPath’).

3. У меня есть еще один вопрос, я работаю над проектом microservices, и существует несколько внутренних микросервисов spring boot, которые необходимо связать с интерфейсом vue js. как вы думаете, какой наилучший способ подключить их к интерфейсу? напрямую подключитесь к интерфейсу или создайте один серверный сервер и подключите все остальные микросервисы к этому бэкэнду, затем основной сервер подключится к интерфейсу, но если я использую этот подход, мне придется выполнять повторяющуюся задачу, поскольку я должен кодировать тот же контроллер на главном сервере, что и другие микросервисы. Мне нужно знать лучшие практики и подход devops.