建造及保养;从本地主机将docker映像部署到Kubernetes?

建造及保养;从本地主机将docker映像部署到Kubernetes?,docker,kubernetes,continuous-integration,Docker,Kubernetes,Continuous Integration,我看到了像GitLab CI/CD、BitBucket管道和CodeFresh CI/CD这样的CI/CD系统。这些看起来不错,但我想知道,为什么不在本地主机上构建我的容器映像(然后使用rsync/scp)或直接在集群上构建,然后通过kubectl部署?这将避免使用构建服务和容器注册表(我不想为此付费)。对于小型团队来说,这似乎是可行的。我意识到这不如使用构建服务好,但除此之外,为什么不以这种方式运行部署呢?如果使用标准存储库设置,则不需要为用户提供对节点的ssh访问权限,并且节点是相当可替换的

我看到了像GitLab CI/CD、BitBucket管道和CodeFresh CI/CD这样的CI/CD系统。这些看起来不错,但我想知道,为什么不在本地主机上构建我的容器映像(然后使用
rsync
/
scp
)或直接在集群上构建,然后通过kubectl部署?这将避免使用构建服务和容器注册表(我不想为此付费)。对于小型团队来说,这似乎是可行的。我意识到这不如使用构建服务好,但除此之外,为什么不以这种方式运行部署呢?

如果使用标准存储库设置,则不需要为用户提供对节点的ssh访问权限,并且节点是相当可替换的:如果节点死亡(甚至有时需要替换云托管的节点)如果它总是可以从Docker存储库中提取其内容,那么您不需要做任何手动工作来启动新的存储库

我至少会建立(或付费)一个Docker存储库(或托管服务:Docker Hub、quay.io、Google的GCR、Amazon的ECR等等),并编写一个构建脚本,该脚本可以
Docker build
s一个映像,
Docker将其推送到合适的地方,更新部署对象,然后
kubectl应用它。您不一定需要CI系统(但您可能想要一个;同样,您可以在云中购买一个)


在非技术层面上,如果您设计和构建的部署序列涉及手动运行一系列命令,特别是在一家小公司中,这将成为一个可维护性问题(您个人将花费大量时间反复运行这些命令,如果不起作用,则必须进行修复)。

Ya,我想我会把命令放到脚本文件中,但有人指出,图像必须与每个节点进行rsync。看起来要维护的工作量很大。我正在尝试Codefresh,它看起来真的很好,而且免费层似乎相当宽容。