【发布时间】:2022-12-10 08:14:17
【问题描述】:
在将 node.js 容器部署到本地 kubernetes 集群之前,我试图自动化单元测试。我不清楚是否需要在我的deployment.yaml、Dockerfile、package.json 或它们的组合中进行配置。并且一旦配置好如何指示 Kubernetes 在部署之前输出任何故障并退出。
我需要按照this SO answer的建议写一个shell脚本修改环境变量吗?或者,这是我可以用 Kubernetes deployment.yaml 自动化的东西吗?
如果它有用,我正在使用mocha和chai。这是从 Google Cloud Source Repositories 部署到本地 Kubernetes 实例。
由于我是 Kubernetes 的新手,所以尽可能多地了解细节会很棒。
这是我的deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-app-image
imagePullPolicy: IfNotPresent
这是我的Dockerfile:
# Use base node 18-alpine image from Docker hub
FROM node:18-alpine
WORKDIR /MY_APP
# Copy package.json and install dependencies
COPY package*.json ./
RUN npm install
# Copy rest of the application source code
COPY . .
# Run index.js
ENTRYPOINT ["node", "src/index.js"]
这是我的package.json:
"scripts": {
"start": "node src/index.js",
"test": "npm install mocha -g && mocha --timeout 4000 --exit"
}
这是我用来试验的基本单元测试:
import { expect } from 'chai'
describe('Basic unit test', ()=>{
it('Checks if 3*3=9', () => {
expect(3*3, 9)
})
})
【问题讨论】:
-
如果您有 CI/CD 管道,则可以在管道中配置它。如果您使用的是 GitHub,这将是 GitHub Actions/Workflows
-
您需要先运行单元测试,然后构建并推送您的 Docker 容器,然后更新您的 Kubernetes 部署以使用新版本
-
@Codebling 我正在使用谷歌云源代码存储库,最终将使用谷歌的 Kubernetes 引擎。现在我只在本地部署。您能否为我指出正确的方向,了解如何在 GCP 中执行类似于 GitHub 操作/工作流的操作?
-
抱歉,我不知道 CI/CD 管道在那里是如何工作的。但基本上所有平台的概念都是相同的,你有一个脚本,一旦出现新代码,它就会对其进行测试。如果成功,它就会构建它。如果成功,您可以选择部署它(是否自动部署取决于您的视图/策略,有些地方喜欢只自动部署官方版本或根本不自动部署,有些地方喜欢部署每个版本的主控)
-
我打电话给我的主管,他知道如何在 GCP 上设置 CI CD。当我理解时,我会在这里发布答案。
标签: node.js docker unit-testing kubernetes cicd