问题标签 [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.

0 投票
3 回答
1313 浏览

java - 在 Java 中使用 Skaffold

我正在测试 Skaffod,它是微服务开发的绝佳工具。但是我没有找到任何关于如何将它与 Java 一起使用的教程。是否支持 Maven 构建?

0 投票
0 回答
2790 浏览

google-cloud-platform - 如何让 Google Cloud Build 在响应 GitHub 触发器时正确替换值?

问题

在运行 Build ( cloudbuild.yaml )时,在 Google Cloud Build 中设置的 GitHub 触发器实际上不会替换配置的值

这是 Google Cloud Build 配置

cloudbuild.yaml

奇怪的是,当通过gcloudSDK 调用触发构建时,它可以工作 ✅ 例如:

更多上下文

Cloud Build 触发器信息中心 (img)

带替换的触发配置 (img)

触发构建 (img) 的构建历史记录中缺少替换

相比之下:运行时正确替换的值gcloud builds submit(img)

0 投票
1 回答
335 浏览

kubernetes - 使用 Skaffold 部署外部 helm chart

是否有外部 helm 图表的示例/helm-deployment 之类的东西?

具体来说,我希望在 minikube 上设置所有监控、跟踪等基础设施,就像在暂存/生产中一样,从stable/prometheus-operator

0 投票
1 回答
2642 浏览

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 编码,仍然缺少特殊字符。看起来唯一的出路是生成没有特殊字符的新凭据,这看起来像一个错误,不是吗?

0 投票
3 回答
2416 浏览

python - 如何使用 kubernetes 和 skaffold 调试 python 代码?

我目前正在通过 kubernetes 在 python3 下运行 django 应用程序skaffold dev。我使用 Python 源代码进行热重载。目前是否可以在 kubernetes 上使用 python 进行交互式调试?

例如,

通常,在容器外,点击端点会使我掉入(pdb)外壳中。

在当前设置中,我在文件中设置了stdinttyto 。代码确实在断点处停止,但它不允许我访问shell。trueDeployment(pdb)

0 投票
1 回答
342 浏览

node.js - Nodejs Skaffold 本地开发到产品流程

容器和 Kubernetes 的新手。

我正在尝试进行设置,以便我们在整个生产过程中始终保持本地发展的平等。

Skaffold 似乎是做到这一点的好方法,但我对一些小例子和“理想的工作流程”感到困惑

参考https://github.com/GoogleContainerTools/skaffold/tree/master/examples/nodejs

他们提供的 dockerfile 使用 nodemon。不会在产品中使用相同的容器吗?在 prod 中运行 nodemon 不是很糟糕吗?

如何设置具有实时文件同步的 kubernetes 本地开发环境并使用相同的资源(为了具有幂等性)进行生产?

0 投票
1 回答
1270 浏览

reactjs - Skaffold Kubernetes 不显示 React 更改

问题:

运行 skaffold 并更新监视的文件时,我看到文件同步更新发生并且 nodemon 重新启动服务器,但刷新页面并没有显示更改。直到我完全停止 skaffold 并重新启动后,我才看到了变化。

设置:

我有一个简单的微服务应用程序。它有一个服务器端(flask/python)和一个客户端(react),可以快速处理开发服务器。我有 nodemon 与旧的手表标志为真(对于 Chokidar 轮询)。在开发中,我通过 Docker for Mac 使用 Kubernetes。

代码:

我很高兴发布我的代码以提供帮助。让我知道哪些是最需要的。

这里有一些开场白:

Skaffold.yaml:

Package.json 的相关部分:

Dockerfile.dev(客户端):

0 投票
1 回答
81 浏览

python - 如何在不编译事件 API 原型的情况下监听 Skaffold 事件?

我正在尝试使用 Skaffold 事件 API。从 python 应用程序中,我想通过 HTTP 监听通过/v1/events端点上的端口 50052 公开的事件。

我大致按照这个 gRPC 指南将 .proto 文件编译为 python ,我可以通过使用生成的代码连接到 50051 上的 gRPC 服务器来监听事件。

我已经尝试过 python 库hyper来通过 HTTP2 连接监听推送事件,但没有成功。

我想避免生成代码的开销。是否可以通过其他方式收听事件 API?

0 投票
1 回答
3218 浏览

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,但它只是从该图像中提取的。

0 投票
1 回答
1959 浏览

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 容器内创建版本文件并更新数据库。

要显示问题的分步示例:

  1. sh 进入服务器部署 pod 并运行 db init。
  2. 迁移文件夹已创建。
  3. 在创建迁移文件并更新数据库的服务器部署上执行迁移。
  4. postgres pod db 输入 alembic_version 并进行更新。
  5. 使用 skaffold 删除或 ctrl-c skaffold。
  6. server-deployment pod 被删除,但 postgres 没有。迁移文件夹消失。
  7. 开始备份 skaffold 和 sh 到 server-deployment pod 并尝试运行 db migrate。要求您执行 db init。
  8. 如果您尝试从这里降级,它不会做任何事情。现在服务器 pod 和 postgres pod 在 alembic_version 方面不同步。

最后的笔记

我以前做的 pre-docker/kubernetes 是在本地运行它,然后我会将迁移版本文件提交到我的 repo。它在所有环境中同步,因此每个人的 repo 都在同一个 alembic_version 上。我考虑过创建一个单独的、永远在线的“迁移部署”pod,它是烧瓶的另一个实例,因此它永远不会丢失 /migrations/ 文件夹。然而,这似乎是一个非常糟糕的解决方案。


希望有最佳实践或想法!