要在生产环境中部署Express Node.js API,我想使用kubernetes 请遵循以下步骤:
这运行得很好,但是当我想更新代码时,我有点迷路了。 我试图构建一个v2(docker build -t gcr.io/[GCLOUDID]/app:v2。) 并通过kubectl设置映像设置映像部署/ app app = gcr.io / [GCLOUDID] / app:v2
此方法会引发各种错误(例如imagepullbackoff,crashloopbackoff)
已使用此dockerfile:
FROM node:11-alpine
WORKDIR /
COPY . /
RUN rm -rf node_modules
RUN rm -rf package-lock.json
RUN apk update && apk upgrade \
&& apk add --no-cache git \
&& apk --no-cache add --virtual builds-deps build-base python \
&& npm rebuild bcrypt --build-from-source
# Install imagemagick with support to native library
RUN apk add --no-cache file
RUN apk --update add imagemagick
RUN npm install
ENV TYPE=docker
EXPOSE 80
CMD [ "npm", "start" ]
答案 0 :(得分:0)
通过构建将您的容器嵌入部署中的Yaml,使用kubernetes声明性语法。这样比较干净,可以使您井井有条。每当您要更新时,只需更改图像名称并运行kubectl apply -f deployment.yaml
。您不仅会更新图像,而且还会以蓝绿色的方式进行处理。
检查此示例https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80