docker - 这就是我在从詹金斯调用的shell脚本中构建图像和部署的方式?
问题描述
在 K8s 世界和 shell 脚本中,我有以下内容
#!/bin/bash
docker build -t imagename:1 .
kubectl delete -f services/nodeport.service.yml
kubectl delete -f deployments/springapsimplehellopod.deployment.yml
kubectl apply -f deployments/springapsimplehellopod.deployment.yml
kubectl apply -f services/nodeport.service.yml
kubectl apply -f services/loadbalancer.service.yml
我是否遵循正确的标准?不使用镜像注册表而不是构建镜像的缺点将保存在本地 docker 中,并且我正在创建部署和服务的新创建镜像
解决方案
当您使用脚本时,您只需将文件夹指向您的 YAML。它在Kubernetes 文档中提到
使用
kubectl apply -f <directory>
..yaml
这会在所有、.yml
和文件中查找 Kubernetes 配置.json
,并将其传递给应用。
$ kubectl apply -f ./tst
service/nginx created
statefulset.apps/web created
service/nginx unchanged
persistentvolume/pv0003 created
此外,您不需要删除部署,kubectl apply
重新配置部署也是如此。
$ kubectl apply -f deployment.yaml
deployment.apps/mywebtestapp-deployment created
user@cloudshell:~ (project)$ vi deployment.yaml # editing container name from nginx to httpd
user@cloudshell:~ (project)$ kubectl apply -f deployment.yaml
deployment.apps/mywebtestapp-deployment configured
直到您想要更改immutable
字段。
The Service "nginx" is invalid: spec.clusterIP: Invalid value: "": field is immutable
在这种情况下,您需要删除此资源并创建新资源。
关于使用图像注册表的最佳实践,它可能基于意见并取决于您的需求。您可以查看这篇文章或查看此线程。
您还可以检查Helm - Kubernetes 的包管理器,例如,如果您想将应用程序划分为 helm 图表。
推荐阅读
- rust - rust 函数接受闭包作为参数或返回闭包的惯用方式是什么?
- ios - 如何以编程方式向 UIBarButton 添加操作?
- go - 如何从 map[string]interface{} 中提取数据?
- node.js - MongoExpiredSessionError:无法使用已结束的会话
- python - 使用 python 的电报机器人:嵌套对话中无法识别 map_to_parent 状态
- node.js - 如何获取运行 Node JS 应用程序的 k8s Pod 的当前和准确的内存使用情况
- c# - Android Emulator 在 Xamarin 表单 Visual Studio 中显示错误
- c++ - “未找到 opencv_world454.dll”
- apache-spark - 如何在 Apache Spark 中连接嵌套的 json
- python - Python:测量等待 ws.recv() 的 websocket 队列长度