我喜欢Kuberenetes的工作方法,使用独立的映像并将配置作为卷传递给ConfigMap。
现在这非常有效,直到我尝试使用Liquibase容器执行此操作为止。SQL很长,大约1.5K行,而Kubernetes拒绝它的时间太长。
来自Kubernetes的错误:
ConfigMap“ liquibase-test-content”无效:元数据。注释:太长:最多只能包含262144个字符
我曾想过将.sql
文件作为hostPath
传递,但据我了解,这些hostPath
的内容可能不再存在
还有其他方法可以将配置从K8s目录传递到Pod吗?谢谢。
答案 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
进行增量更新(而不替换整个对象)。