kubernetes - 设置 skaffold 以将更改部署到谷歌云构建
问题描述
我是 skaffold 的新手,并且已经设置了 yaml 文件,如下所示,该文件应该将我项目中 src 文件夹中的任何更改同步到 goolge cloud build。请注意我没有使用 git。
当我运行 skaffold dev 时,本地机器(macos)上 src 文件夹中的任何更改都会同步到谷歌云构建,即更新和部署图像。
如果我在 skaffold dev 运行时在 src 文件夹中进行任何更改,我会注意到 skaffold 会识别更改但未部署到谷歌云构建。
我如何更新下面的 yaml 文件,每次我更改 src 文件夹中的任何文件时,该文件也会将更改部署到谷歌云构建。目前我必须停止 skaffold 并重新运行它,以便将更改部署到谷歌云构建中。
包.json
{
"name": "auth",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "ts-node-dev src/index.ts"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@types/express": "^4.17.12",
"express": "^4.17.1",
"express-validator": "^6.12.0",
"ts-node-dev": "^1.1.6",
"typescript": "^4.3.4"
}
}
脚手架.yaml
apiVersion: skaffold/v2alpha3
kind: Config
deploy:
kubectl:
manifests:
- ./infra/k8s/*
build:
# local:
# push: false
googleCloudBuild:
projectId: ticketing-dev
artifacts:
- image: gcr.io/ticketing-dev/auth
context: auth
docker:
dockerfile: Dockerfile
sync:
manual:
- src: 'src/**/*.ts'
dest: .
码头工人文件
FROM node:alpine
#create working dir within image called app
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]
下面是 auth-depl.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: auth-depl
spec:
replicas: 1
selector:
matchLabels:
app: auth
template:
metadata:
labels:
app: auth
spec:
containers:
- name: auth
image: gcr.io/ticketing-dev/auth
---
apiVersion: v1
kind: Service
metadata:
name: auth-srv
spec:
selector:
app: auth
ports:
- name: auth
protocol: TCP
port: 3000
targetPort: 3000
解决方案
Skaffold 将更改同步到正在运行的容器,而不是 GCB。其中一项要求是容器必须包含tar
.
您还没有包含您的Dockerfile
,但一个关键点是同步文件可能还不够:您的应用程序需要检测并重新加载更改。大多数打字稿应用程序用于tsc-watch
重新编译和重新启动。
例如,我使用 Skaffold TypeScript 示例看到如下内容:
[node] 2:22:47 PM - Found 0 errors. Watching for file changes.
[node] Example app listening on port 3000.
Syncing 1 files for node-typescript-example:21b757dbdb147a87b0ce4b1e538ab93cdbc114e99515fdf4e398ed62a2b3809d
Watching for changes...
[node] 2:22:52 PM - File change detected. Starting incremental compilation...
[node]
[node]
[node] 2:22:52 PM - Found 0 errors. Watching for file changes.
[node] Example app listening on port 3000!
[node]
线条来自容器内。
推荐阅读
- javascript - 仅当 JavaScript 中的数字以 9 结尾时如何舍入?
- javascript - 使用按键 jquery/javascript 更改一个 div 的颜色
- ms-project - MS-Project JavaScript 插件
- algorithm - 最多问 8 个问题,找出最重的球
- python - 使用带条件默认参数的部分
- windows - 为什么 gradle 会破坏我的预输入(Windows)?
- python - 在python中使用Sqlite3从变量资源管理器中选择一个表
- nativescript - 如何使用 nativescript angular 和主题生成器设置 tabItem 样式?
- android - Android Layout Inspector 中的灰色视图是什么意思?
- sql - 为什么添加 ORDER BY 会大大加快查询速度?