Как интегрировать vuejs в миникуб с бэкэндом RESTful? - PullRequest
0 голосов
/ 10 октября 2018

Я хочу интегрировать мое приложение vuejs в кластер мини-кубов.

Я использовал Dockerfile из учебника VueJs для производства с веб-сервером Nginx и с первой опцией localhost:8080 здесь .Я изменил порты в файлах yml соответствующим образом для localhost на 8080, а для версии nginx, как показано ниже, на 80

Затем в моем config/index.js

  dev: {

 [...]
    host: 'localhost', // can be overwritten by process.env.HOST
    port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
    autoOpenBrowser: false,
    errorOverlay: true,
    notifyOnErrors: true,
    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
[...]
}, 

я установилпорт 8080 по умолчанию.Для своего развертывания и обслуживания мини-куба я добавил

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: vuejs
spec:
  selector:
    matchLabels:
      app: vuejs
      tier: frontend
  replicas: 1
  template:
    metadata:
      labels:
        app: vuejs
        tier: frontend
    spec:
      imagePullSecrets:
      - name: regcred
      containers:
        - name: vuejs
          image: <secret registry> 
          ports:
            - containerPort: 80
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
---
apiVersion: v1
kind: Service
metadata:
  name: vuejs
  labels:
    app: vuejs
    tier: frontend
spec:
  type: LoadBalancer
  ports:
    - port: 80
      targetPort: 80
  # Replace with the IP of your minikube java / master java
  # externalIPs:
  #  - 192.168.99.105 
  selector:
    app: vuejs
    tier: frontend

Как подключиться к веб-серверу vuejs / nginx.Более того, поскольку я установил DNS-имя бэкэнда на java, как мне установить адрес Java REST API в vuejs?Я установил адрес на 'http://java:8080/' без ответа.Бэкэнд Java REST интегрирован в мини-куб с this yml.

Проблема в том, что после запуска развертывания vuejs я могу получить доступ к приложению vuejs на 127.0.0.1:8080.Когда я правильно понял, я подумал, что кластер kubernetes открывает свою собственную сеть и доступен только через внешний IP

Глядя на мой kubectl get all, я бы сказал, что vuejs должен быть доступен 192.168.99.105:8080 - при использовании dockerimageбез nginx.

NAME                         READY   STATUS    RESTARTS   AGE
pod/java-fbf949cbc-rqstq     0/1     Error     4          2d
pod/maria-7b67c8ddf-xp8xx    1/1     Running   2          2d
pod/private-reg              1/1     Running   5          5d
pod/vuejs-5f4c657d74-885j9   1/1     Running   1          18h
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)          AGE
service/java         LoadBalancer   10.101.207.98   192.168.99.100   8080:31011/TCP   2d
service/kubernetes   ClusterIP      10.96.0.1       <none>           443/TCP          5d
service/maria        ClusterIP      10.99.177.228   <none>           3306/TCP         2d
service/vuejs        NodePort       10.104.108.44   192.168.99.105   8080:30001/TCP   17h
NAME                    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/java    1         1         1            0           2d
deployment.apps/maria   1         1         1            1           2d
deployment.apps/vuejs   1         1         1            1           18h
NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/java-fbf949cbc     1         1         0       2d
replicaset.apps/maria-7b67c8ddf    1         1         1       2d
replicaset.apps/vuejs-5f4c657d74   1         1         1       18h

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете использовать команду minikube service, чтобы получить доступ к URL вашего собственного хоста.Для вашего развертывания попробуйте:

minikube service vuejs --url

Это покажет IP с добавленным к нему NodePort.Скопируйте и вставьте результат этой команды в свой браузер.

Обновление: как это работает

Minikube запускает виртуальную машину внутри вашего хоста (вашего ноутбука) с одноузловым кластером Kubernetes, назначаялокальный IP-адрес, который вы можете получить с помощью команды minikube ip.Это IP-адрес узла Kubernetes.

Когда вы предоставляете сервис «NodePort» внутри Kubernetes, он выделяет статический порт из диапазона 30000-32767 (по умолчанию), поэтому вы можете получить к нему доступ с помощью <NodeIP>:<NodePort>

0 голосов
/ 10 октября 2018

Существует два способа предоставления ресурсов из кластера Kubernetes:

  1. Использовать вход.Для получения дополнительной информации, вы можете посетить эту ссылку .

  2. Предоставить Сервис .Это можно сделать двумя способами:

    • тип: LoadBalancer .Однако он работает только с облачными провайдерами.

    • Тип: NodePort .И это самый простой способ в вашем случае, вам нужно изменить spec.type с LoadBalancer на NodePort в описании YAML для Сервиса.После этого для доступа к сервису внутри кластера Kubernetes вам нужно использовать IP-адрес вашего узла и порт из поля nodePort.Например, 192.168.12.34:30001

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...