【发布时间】:2020-11-29 17:45:24
【问题描述】:
对于我的项目,我想在需要时在 adhoc 上加载一些 XML 的后期部署(不想在每个部署上都运行)。由于 k8s 集群的吞吐量不佳,直接从 Jenkins 或 GITLAB 管道加载它们需要更长的时间。我正在使用 Helm 进行 k8s 部署。有什么更好的方法或步骤可以让我的临时工作运行得更快。?在部署后我被建议不要这样做的可选阶段尝试传递我的服务帐户或我的帐户凭据以运行脚本。
来自 pod 的数据加载任务需要 10 分钟,但来自 Jenkins 或 GITLAB 需要 70-90 分钟。
限制:
- 服务帐户在 CLI 部署后受到限制 bash 运行脚本
- 将无法按照最佳做法在管道中使用我的个人凭据
现在我在需要时从本地的 shell 脚本中运行此手动步骤,如下所示。但是需要添加这部分管道。有什么帮助/建议吗?
pkstoken -cluster=<cluster> -user=<me> ns=sade_test1
echo "doing dataload import for $1"
if [ $1 == sade-t1 ]; then
Namespace="sade_test1"
Podname="sade_test_p1"
kubectl -n $Namespace exec -it $Podname -- bash -c "cd /opt/tomcat/webapp/app-1/bin/ && echo import dataload_custom.xml"
【问题讨论】:
-
你能把它拆分成一个单独的 Kubernetes 作业吗?您可以使用普通的 Helm 模板生成它,并且它可以访问服务帐户和其他集群内资源。编写
kubectl exec脚本通常不是最佳实践。 -
它是您的本地环境还是本地环境?这些文件始终相同还是正在更改?
-
@DavidMaze 谢谢或检查大卫。是否可以使用 kubernetes 作业连接到正在运行的 pod 并运行一些命令并退出。?我正在尝试检查,但没有运气
-
@PjoterS 感谢您的检查。这是本地的,这些文件会发生变化,当我构建新的 docker 映像时,我可能几乎一直都在这样做。但我只想在构建/CI-Pipeline 期间加载这些 XML……而不是在每次 pod 重新启动时加载。
-
您是否考虑过将这些文件放在集群中的 pod 中然后在脚本中使用它的场景,或者它不是一个选项?
标签: xml kubernetes kubernetes-helm kubernetes-cronjob