问题标签 [skaffold]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 Java 中使用 Skaffold
我正在测试 Skaffod,它是微服务开发的绝佳工具。但是我没有找到任何关于如何将它与 Java 一起使用的教程。是否支持 Maven 构建?
google-cloud-platform - 如何让 Google Cloud Build 在响应 GitHub 触发器时正确替换值?
问题
在运行 Build ( cloudbuild.yaml )时,在 Google Cloud Build 中设置的 GitHub 触发器实际上不会替换配置的值
这是 Google Cloud Build 配置
cloudbuild.yaml
奇怪的是,当通过gcloud
SDK 调用触发构建时,它可以工作 ✅ 例如:
更多上下文
kubernetes - 使用 Skaffold 部署外部 helm chart
是否有外部 helm 图表的示例/helm-deployment 之类的东西?
具体来说,我希望在 minikube 上设置所有监控、跟踪等基础设施,就像在暂存/生产中一样,从stable/prometheus-operator
bash - 在 Kubernetes cloudsql 中使用特殊字符转义密码的问题
我正在按照本教程将 Django 应用程序部署到 Kubernetes 集群。我已经创建了 cloudsql 凭据并按照教程中的方式导出了它们
但是,我的密码是由 LastPass 生成的,并且包含特殊字符,这些字符在 Kubernetes Pod 中被删除,从而导致密码不正确。
这是我的密码(已更改,仅显示特殊字符)
5bb4&sL!EB%e
所以我尝试了各种导出这个字符串的方法,回显它总是显示正确的密码,但是在 Kubernetes Dashboard 中密码总是不正确(也在 DevTools 中更改,但一些字符只是被删除了)
我尝试过的事情
回声总是好的,但 kubernetes 总是在剥离它。
部署skaffold deploy
编辑:
提示后我尝试以 base64 编码形式存储密码,但是我怀疑它仅适用于本地范围,因为 Kubernetes Dashboard 中的密码仍然相同,我怀疑我需要重新生成证书才能远程工作在 gke 集群上?
因此,环境变量用于本地,云 sql 代理中的凭据是被使用和误解的?顺便说一句,这些文件在哪里?
编辑2:
我刚刚发现确实 gke 集群在使用凭证 json 而不是导出的变量。配置 json 已经包含 base64 编码形式的密码,但是它是字符串的 base64 编码,仍然缺少特殊字符。看起来唯一的出路是生成没有特殊字符的新凭据,这看起来像一个错误,不是吗?
python - 如何使用 kubernetes 和 skaffold 调试 python 代码?
我目前正在通过 kubernetes 在 python3 下运行 django 应用程序skaffold dev
。我使用 Python 源代码进行热重载。目前是否可以在 kubernetes 上使用 python 进行交互式调试?
例如,
通常,在容器外,点击端点会使我掉入(pdb)
外壳中。
在当前设置中,我在文件中设置了stdin
和tty
to 。代码确实在断点处停止,但它不允许我访问shell。true
Deployment
(pdb)
node.js - Nodejs Skaffold 本地开发到产品流程
容器和 Kubernetes 的新手。
我正在尝试进行设置,以便我们在整个生产过程中始终保持本地发展的平等。
Skaffold 似乎是做到这一点的好方法,但我对一些小例子和“理想的工作流程”感到困惑
参考https://github.com/GoogleContainerTools/skaffold/tree/master/examples/nodejs
他们提供的 dockerfile 使用 nodemon。不会在产品中使用相同的容器吗?在 prod 中运行 nodemon 不是很糟糕吗?
如何设置具有实时文件同步的 kubernetes 本地开发环境并使用相同的资源(为了具有幂等性)进行生产?
reactjs - Skaffold Kubernetes 不显示 React 更改
问题:
运行 skaffold 并更新监视的文件时,我看到文件同步更新发生并且 nodemon 重新启动服务器,但刷新页面并没有显示更改。直到我完全停止 skaffold 并重新启动后,我才看到了变化。
设置:
我有一个简单的微服务应用程序。它有一个服务器端(flask/python)和一个客户端(react),可以快速处理开发服务器。我有 nodemon 与旧的手表标志为真(对于 Chokidar 轮询)。在开发中,我通过 Docker for Mac 使用 Kubernetes。
代码:
我很高兴发布我的代码以提供帮助。让我知道哪些是最需要的。
这里有一些开场白:
Skaffold.yaml:
Package.json 的相关部分:
Dockerfile.dev(客户端):
python - 如何在不编译事件 API 原型的情况下监听 Skaffold 事件?
我正在尝试使用 Skaffold 事件 API。从 python 应用程序中,我想通过 HTTP 监听通过/v1/events端点上的端口 50052 公开的事件。
我大致按照这个 gRPC 指南将 .proto 文件编译为 python ,我可以通过使用生成的代码连接到 50051 上的 gRPC 服务器来监听事件。
我已经尝试过 python 库hyper来通过 HTTP2 连接监听推送事件,但没有成功。
我想避免生成代码的开销。是否可以通过其他方式收听事件 API?
kubernetes - 如何让 Skaffold 和 Helm 图表与本地图像存储库一起使用?
我们正在尝试在 Skaffold 下建立一个包含多个微服务应用程序的本地开发环境。我们使用https://github.com/ahmetb/skaffold-from-laptop-to-cloud上的(稍微过时的)教程设法使用基本 Skaffold 做到了这一点。为了让 Skaffold 在没有 Helm 的情况下将图像推送到本地存储库,我所要做的就是将 imageName 设置为使用 localhost:5000/image_name 之类的东西。
但是使用 Helm,嗯.... Helm 图表的 /templates 目录,然后被炸毁了。
然后 Skaffold 成功地创建了任何依赖于股票外部图像(如 redis)的 pod,但是当任何东西使用从本地 Dockerfile 生成的图像时,它就会卡住并抛出这个错误:
无法提取图像“localhost:5000/k8s-skaffold/php-test”:rpc 错误:代码 = 未知 desc = 来自守护进程的错误响应:获取 http://localhost:5000/v2/:拨打 tcp [::1] :5000:连接:连接被拒绝
据我所知,这就是我们没有初始化本地 Docker 镜像存储库时出现的错误——但是对于非 Helm 版本,我们不需要启动本地镜像存储库,Skaffold 就是这么神奇发生。这是 Skaffold 吸引力的一部分。
那么我们如何自动让 Skaffold 创建 Helm 图表,从本地存储库中创建和拉取?(如前所述,这可能是我对 Helm 的不熟悉。如果是这样,我很抱歉。)
Skaffold YAML 是这样的:
Helm Chart values.yaml 是生成的图表提供的默认值。如果需要,我也可以提供 Dockerfile,但它只是从该图像中提取的。
docker - 如何使用 Kubernetes 和 Skaffold 处理数据库迁移
问题:
在本地,我使用 Skaffold (Kubernetes) 热重载代码的客户端和服务器端。当我关闭它时,它会删除我的服务器 pod,包括我的 /migrations/ 文件夹,因此与我的数据库 alembic_version 不同步。在生产中,我不会删除我的服务器 pod,但我会在部署时重建 docker 映像,这会导致我的 /migrations/ 文件夹被替换。
问题
如何处理这些迁移,以使我的数据库不会不同步?
应用程序设置
Flask/Python API 并使用 Flask Migrate。对于那些不熟悉的人,它的作用是创建一个带有版本文件的迁移文件夹,例如5a7b1a44a69a_.py
. 该文件的内部是def upgrade()
和downgrade()
操作数据库。它还记录了我的 postgres pod 中 alembic_version 表的修订和 down_revision 引用。
Kubernetes 和 Docker 设置
我有一个服务器 pod 和 postgres pod。我登录到服务器 pod 的 shell 以运行迁移命令。它在 docker 容器内创建版本文件并更新数据库。
要显示问题的分步示例:
- sh 进入服务器部署 pod 并运行 db init。
- 迁移文件夹已创建。
- 在创建迁移文件并更新数据库的服务器部署上执行迁移。
- postgres pod db 输入 alembic_version 并进行更新。
- 使用 skaffold 删除或 ctrl-c skaffold。
- server-deployment pod 被删除,但 postgres 没有。迁移文件夹消失。
- 开始备份 skaffold 和 sh 到 server-deployment pod 并尝试运行 db migrate。要求您执行 db init。
- 如果您尝试从这里降级,它不会做任何事情。现在服务器 pod 和 postgres pod 在 alembic_version 方面不同步。
最后的笔记
我以前做的 pre-docker/kubernetes 是在本地运行它,然后我会将迁移版本文件提交到我的 repo。它在所有环境中同步,因此每个人的 repo 都在同一个 alembic_version 上。我考虑过创建一个单独的、永远在线的“迁移部署”pod,它是烧瓶的另一个实例,因此它永远不会丢失 /migrations/ 文件夹。然而,这似乎是一个非常糟糕的解决方案。
希望有最佳实践或想法!