在我的公司,我们使用GitLab作为源代码控制,并使用GitLab的Docker注册表 . 每个存储库包含用于构建映像的Dockerfile和用于定义该项目的Pod / Service / Deployment / etc的Kubernetes yaml .
问题是在yaml中,图像通过其url引用GitLab注册表
(来自Redis存储库的示例)
我不喜欢它有两个原因
-
这将很难切换到另一个注册表提供程序,因为您必须检查整个代码库并更改所有Kubernetes yaml文件 .
-
如果开发人员想通过minikube测试他的应用程序,他必须确保图像在注册表中存储并保持最新状态 . 在我们公司,推送到注册表是作为CI管道的一部分完成的事情 .
有没有办法避免将注册表URL存储在存储库中?事先登录到docker注册表并没有解决它,你仍然需要提供带有url的完整图像名称 .
1 回答
您可以将环境变量与shell脚本一起使用 .
这是工作示例 .
1)创建一个环境变量
2)创建1行shell脚本 . 此脚本的目的是将.yaml文件中的env值替换为您的实际环境变量 .
3)创建示例yaml,例如mypod.yaml.tmpl
4)运行kubectl apply