我使用CircleCI构建一个go二进制文件,希望在Helm charts安装的pod中运行。我希望将二进制文件从CircleCI移动到远程集群,以便在pod启动时可用。我知道像ConfigMap或Secrets这样的卷是可以做到的,但我不确定最好的方法是什么。
我曾经使用私有docker注册中心和kubernetes Secrets作为注册中心的凭证,但我不喜欢这个选项。我不想在每次二进制更改时都构建和推送一个新的docker镜像。
version: 2.1
jobs:
build_and_deploy:
docker:
- image: circleci/golang:1.12.7
steps:
- checkout
- run: go get -v -t -d ./...
- run: go build cmd/main.go
- run: ...
- run: helm install
workflows:
version: 2
build:
jobs:
- build_and_deploy:
每次作业运行时,预期的结果应该是群集上可用的新二进制文件。
发布于 2019-08-14 22:01:06
根据最佳实践-二进制文件应该在您的构建映像执行期间应用-正如上面的社区和best developer practices所提到的:
不要从运行的容器创建镜像-换句话说,不要使用“docker commit”来创建镜像。这种创建图像的方法是不可重现的,应该完全避免。始终使用Dockerfile或任何其他完全可重现的S2I (源到镜像)方法,如果您将其存储在源代码控制存储库(git)中,则可以跟踪Dockerfile的更改。
但是,从另一个角度来看,您可以考虑:
1。直接在群集上构建映像的init contianers
2。带有构建上下文的外部位置的kaniko (gcs bucket git存储库)
3。helm预装钩子,以便使用上述解决方案
4。最后是其他解决方案,如cloud build或cloud build locally
请同时参考"Switching from CircleCI to Google Cloud Build“。如上所述,当docker存储库中的映像更新时,您可以使用keel自动更新您的部署。
如果有帮助,请告诉我。
发布于 2019-08-14 20:21:04
您的CI/CD只需使用该二进制文件构建一个Docker容器即可。然后,您应该将其推送到私有存储库。群集应下载二进制文件。
https://stackoverflow.com/questions/57489083
复制相似问题