簡體   English   中英

部署在 Kubernetes 一個 Docker 圖像與前端 + 后端應用程序

[英]Deploy at Kubernetes a Docker Image with Frontend + Backend application

我有一個使用 Express.js 作為后端 API 和 React.js 作為前端客戶端的簡單應用程序。

我創建了一個帶有前端和后端應用程序倉庫的單打圖像容器: https://github.com/vitorvr/list-users-kubernetes

Dockerfile:

FROM node:13

WORKDIR /usr/app/listusers

COPY . .

RUN yarn
RUN yarn client-install
RUN yarn client-build

EXPOSE 8080

CMD ["node", "server.js"]

服務器.js

const express = require('express');
const cors = require('cors');
const path = require('path');

const app = express();
const ip = process.env.IP || '0.0.0.0';
const port = process.env.PORT || 8080;

app.use(express.json());
app.use(cors());
app.use(express.static(path.join(__dirname, 'public')));

app.get('/users', (req, res) => {
  res.json([
    { name: 'Jhon', id: 1 },
    { name: 'Ashe', id: 2 }
  ]);
});

app.listen(port, ip, () =>
  console.log(`Server is running at http://${ip}:${port}`)
);

響應調用:

const api = axios.create({
  baseURL: 'http://0.0.0.0:8080'
});

useEffect(() => {
  async function loadUsers() {
    const response = await api.get('/users');
    if (response.data) {
      setUsers(response.data);
    }
  }
  loadUsers();
}, []);

要在 minikube 中部署和運行此映像,我使用以下命令:

kubectl run list-users-kubernetes --image=list-users-kubernetes:1.0 --image-pull-policy=Never
kubectl expose pod list-users-kubernetes --type=LoadBalancer --port=8080
minikube service list-users-kubernetes

當前端嘗試訪問 localhost 時會出現此問題:

在此處輸入圖像描述

我不知道我需要在哪里解決這個問題,如果我必須在 React 中進行一些修復,或者在 Kubernetes 中進行一些設置,甚至這是在 Kubernetes 將小型應用程序部署為容器映像的最佳實踐。

提前致謝。

您的 Kubernetes 節點,假設它在您的本地開發機器上作為虛擬機運行,將有一個 IP 地址分配給它。 同樣,當 IP 地址將分配給運行“list-user-kubernetes”服務的 pod 時。 您可以通過運行以下命令查看 IP 地址: kubectl get pod list-users-kubernetes ,並在命令末尾添加-o wide來查看更多信息,例如。 kubectl get pod list-users-kubernetes -o wide

或者,您可以使用kubectl port-forward pod/POD_NAME POD_PORT:LOCAL_PORT將端口轉發到您的本地主機。 下面的例子:

kubectl port-forward pod/list-users-kubernetes 8080:8080注意:您應該將其作為后台服務或在終端的不同選項卡中運行,因為只要命令正在運行,端口轉發就可用。

我建議使用第二種方法,因為 pod 的外部 IP 可以在部署期間更改,但將其映射到 localhost 將允許您在不更改代碼的情況下運行您的應用程序。

鏈接到端口轉發文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM