我喜欢Kuberenetes的工作方法,使用自包含的映像,并将配置传递到ConfigMap中,作为一个卷。
在我尝试用Liquibase容器做这个事情之前,这个方法一直很好,SQL非常长~1.5K行,Kubernetes拒绝它太长。
来自Kubernetes的错误:
ConfigMap“liquibase-test-content”无效:metadata.annotations:太长:最多必须有262144个字符
我想把.sql
文件作为hostPath
传递,但据我所知,hostPath
的内容可能不会在那里
是否有其他方法可以将配置从K8s目录传递到pod?- 谢谢-谢谢
3条答案
按热度按时间t9eec4r01#
您看到的错误不是关于实际ConfigMap内容的大小,而是关于
kubectl apply
在每个apply
上自动创建的last-applied-configuration
注解的大小。如果你使用kubectl create -f foo.yaml
而不是kubectl apply -f foo.yaml
,它应该可以工作。请注意,这样做时,您将失去使用
kubectl diff
的能力,并使用kubectl apply
进行增量更新(不替换整个对象)的能力。oxiaedzo2#
从1.18开始,你可以使用服务器端应用来规避这个问题。
第一个月
其中
server-side=true
在服务器上运行apply命令,而不是在客户端上运行。这将正确地显示与其他参与者的冲突,包括客户端应用程序,从而失败:
字符串
如果要更改,您可以简单地使用第一个选项:
kubectl apply --server-side=true --force-conflicts -f foo.yml
个ohfgkhjo3#
你可以使用一个初始化容器。从本质上讲,将
.sql
文件放在GitHub或S3或任何您可以读取的位置,并使用它填充目录。init容器的语义保证Liquibase容器只在配置文件下载后启动。