API*_*API 3 minikube kubernetes-helm
我有 Minikube (v1.1.0) 在本地运行,Helm (v2.13.1) 初始化并连接本地 docker 守护进程并运行 Minikube eval $(minikube docker-env)。在我的应用程序的代码库中,我使用helm create chart. 我的前几行./chart/values.yml改为:
image:
repository: app-development
tag: latest
pullPolicy: Never
Run Code Online (Sandbox Code Playgroud)
我在本地构建映像并使用 Helm 安装/升级图表:
image:
repository: app-development
tag: latest
pullPolicy: Never
Run Code Online (Sandbox Code Playgroud)
现在,第一次就可以完美运行,但如果我对应用程序进行更改,我想运行上述两个命令来升级映像。有什么办法可以让它发挥作用吗?
解决方法
为了获得预期的行为,我可以从 Minikube 中删除图表并再次安装:
docker build . -t app-development
helm upgrade --install example ./chart
Run Code Online (Sandbox Code Playgroud)
当您进行这样的更改时,Kubernetes 会在 Deployment 对象中查找某些更改。如果它发现您想要 1 个 Pod running app-development:latest,并且它已经有 1 个 Pod 运行名为 的镜像app-development:latest,那么它处于正确的状态,并且不需要执行任何操作(即使具有该标签的本地镜像已更改)。
这里的规范建议是永远不要:latest在 Kubernetes 中使用该标签。每次构建映像时,请使用不同的标签(时间戳或当前源代码管理提交 ID 是简单且独特的东西)。使用 Helm,可以很容易地根据您传入的值进行注入:
image: app-development:{{ .Values.tag | default "latest" }}
Run Code Online (Sandbox Code Playgroud)
这种构建顺序看起来更像是
TAG=$(date +%Y%m%d-%H%m%S)
docker build -t "app-development:$TAG" .
helm upgrade --install --set "tag=$TAG"
Run Code Online (Sandbox Code Playgroud)
如果您正在积极开发组件,您可能会发现尝试尽可能地将“代码攻击”与“部署到 Kubernetes 中”分开会更容易。其中一些往往是不可避免的,但 Kubernetes 确实不是为实时开发环境而设计的。
| 归档时间: |
|
| 查看次数: |
4588 次 |
| 最近记录: |