将长配置文件传递给Kubernetes

时间:2018-07-09 08:09:06

标签: kubernetes

我喜欢Kuberenetes的工作方法,使用独立的映像并将配置作为卷传递给ConfigMap。

现在这非常有效,直到我尝试使用Liquibase容器执行此操作为止。SQL很长,大约1.5K行,而Kubernetes拒绝它的时间太长。

来自Kubernetes的错误:

  

ConfigMap“ liquibase-test-content”无效:元数据。注释:太长:最多只能包含262144个字符

我曾想过将.sql文件作为hostPath传递,但据我了解,这些hostPath的内容可能不再存在

还有其他方法可以将配置从K8s目录传递到Pod吗?谢谢。

2 个答案:

答案 0 :(得分:2)

您可以为此use an init container。本质上,将.sql文件放在GitHub或S3上,或者实际上是您可以读取的任何位置,并在其中填充目录。初始化容器的语义保证了Liquibase容器仅在下载配置文件后才能启动。

答案 1 :(得分:2)

您看到的错误与实际ConfigMap内容的大小无关,而是与last-applied-configuration自动creates在每个kubectl apply上的apply批注的大小有关。如果您使用kubectl create -f foo.yaml而不是kubectl apply -f foo.yaml,它应该可以工作。

请注意,这样做将失去使用kubectl diff的能力,并且无法使用kubectl apply进行增量更新(而不替换整个对象)。