[英]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.