问题标签 [gitops]

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 投票
1 回答
67 浏览

kubernetes - Kubernetes 应用程序部署 - Helm 和 Operators

我想部署一个微服务应用程序,其中包含多个微服务和两个用于外部应用程序的操作符。

微服务被整合在 helm 图表下。像 Cassandra DB 和 Kafka 这样的外部有状态应用程序有一个操作符。

如何组合和管理整个堆栈的生命周期?进行此部署的推荐方法是什么?

谢谢大师

0 投票
0 回答
298 浏览

kubernetes - ARGOCD 正在跟踪分支而不是路径,并在不应该的地方触发部署

我将 Circle-CI 用于 CI 部分,将 ArgoCD用于 CD,因此我可以将应用程序部署到我的 k8 集群。

现在我有一个 GitHub 存储库,其中包含代码并生成 docker 图像,然后它使用 helm 图表更新另一个 repo,并将新的图像标记注入 values.YAML 文件。现在在第二个 repo 中,我有 2 个单独的目录,其中包含用于暂存和生产的 helm 图表。现在的想法是在生产目录中的文件发生更改时重新部署生产应用程序,并且对于暂存也是如此。

现在,当我在其单独的文件夹“staging/chart”中更新 staging helm 图表时,也将触发生产部署并重新部署应用程序。我将“路径”设置为登台和生产舵图。这是我的 ArgoCD 应用程序配置。我做错了什么?为什么 Argo 不仅要跟踪它应该的目录?

分期

见附图: 架构图

0 投票
0 回答
138 浏览

terraform - 当资源不存在时,如何运行“terraform import”而不失败?

我是QHub的开发人员,它是模板化 terraform 脚本的集合,用于在各种云提供商(AWS、GCP、Azure、Digital Ocean)上部署数据科学平台。它使用 S3 存储桶来存储 terraform 状态,并作为部署的一部分如果该状态可用,我们需要导入该状态。在最初部署基础设施的情况下,或者如果使用 git-ops 部署它,则状态文件在本地不存在。这导致需要“如果存在则导入,否则继续”功能,我很难找到。

以前我们会运行terraform import,如果存储桶不存在,该命令将静默失败并继续。随着升级到 terraform v1.0.5,导入命令将挂起,直到 terraform 超时,这太长了。

我目前的解决方法是使用 GNU 默认命令timeout并强制命令失败,如下所示timeout 10 terraform import module.terraform-state.module.gcs.google_storage_bucket.static-site test-dev-terraform-state:如果失败,我将运行terraform apply以创建资源。

还有一个额外的要求是避免使用特定于云的 CLI 工具来确定存储桶是否存在。

必须有更好的方法来做到这一点。有什么想法吗?

0 投票
0 回答
32 浏览

amazon-web-services - 使用 ECS 部署 GitOps?

我正在寻找 ArgoCD for Kubernetes 以 GitOps 方式部署应用程序。

只是想知道是否有适用于 AWS ECS 和 Hashicorp Nomad 的类似产品。

我知道AWS Proton,它不像ArgoCD那么简单。对于 AWS ECS,我只是在寻找一些可以读取 ECS 任务定义和服务定义并将其与 AWS ECS 同步的工具。

0 投票
0 回答
45 浏览

continuous-integration - rancher v2.6(最新)中的git提交后如何触发脚本?

在 Rancher v2.4 中,我们可以使用如下方式从 Rancher Pipelines 运行脚本:

从 2.5 版开始,不推荐使用基于 Git 的部署管道。Rancher 现在推荐使用 Fleet 进行持续交付。但是在 Fleet 中提交 git 后,我​​找不到任何资源来运行某些脚本。

我的仓库有一个 python 脚本和一个 JSON 文件。目标是 JSON 文件会定期更新,并且在每次 git commit 之后,我想运行 python 脚本。我知道我可以在其他应用程序中执行此操作,并且在打开遗留功能标志后也可以在最新版本中使用 Rancher Pipelines,但我想知道在没有遗留功能的情况下,我是否可以对舰队或 Rancher 中的其他东西做任何事情特征。

0 投票
2 回答
106 浏览

jenkins - 在不更改文件结构的情况下更改 yaml 文件中的值

我正在考虑使用 Jenkins 和 ArgoCD 在我的集群中设置 GitOps CI/CD 管道。

首先,我想为我的 CI 环境创建一个存储库,其中包含一些用于我的应用程序的 Helm 图表的值文件。

我无法真正弄清楚的一件事是,如何在不更改文件的整个结构的情况下自动编辑 Helm 值文件。

用于读取和写入 yaml 文件的 Jenkins 管道方法将完全重新创建它,并在此过程中重新格式化整个文件。

yq不会(似乎)重新排序键,但它会删除空行和注释,例如。

我想到的唯一其他事情是使用sed. 但这感觉有点不对劲。它可能很容易破裂。就像我在另一个同名的组中添加第二个键一样。或添加或删除密钥。

这是一个示例,以使其更清楚:

我有两个存储库,一个用于我的应用程序,一个用于我的 CI、NI、... 配置。

我的应用程序仓库并不重要。只是一些应用程序。我的配置存储库看起来像这样:

values.yaml文件夹app1中的文件ci可能如下所示:

实际的掌舵图在其他地方,这里只是环境中应用程序的配置。

ArgoCD 监视这个 repo 并注意所需的状态(由 repo 的状态指定)和集群中的实际状态匹配(有关该工具的更多信息,请参见https://argoproj.github.io/cd/ )。

作为最后一步,我的 CI 管道app1从我的应用程序存储库中的代码构建一个 docker 映像,应该使用刚刚构建的应用程序的新版本更新配置存储库中文件夹中values.yaml的文件并将其作为新版本推送提交到主分支。ci1.33.8

除此之外,还配置了其他值,例如入口,如果需要,我会在 repo 中手动更新。

由于文件由 CI 构建管道自动更新并由开发人员/DevOps 工程师手动更新,因此我希望能够使它们易于被人类阅读(键的顺序、换行符、注释......)

有没有其他方法可以实现这一目标?

提前致谢!

0 投票
2 回答
23 浏览

node.js - 如何使用 GIT 合并描述自动化发行说明

全部,

在我们的组织中,我们正在尝试使用 GIT 合并请求自动生成 RELEASE NOTES。有没有更好的方法来做到这一点,最好在 NodeJS 中寻找解决方案。

0 投票
1 回答
67 浏览

kubernetes - CI 管道中的 argocd 应用程序创建(GitHub Actions,Tekton,...)抛出“PermissionDenied desc = 权限被拒绝:应用程序,创建,默认/myapp”

在我们的 Tekton 管道中,我们希望使用 ArgoCD CLI 来argocd app create动态argocd app sync地基于正在构建的应用程序。我们通过向ConfigMap添加 a来创建一个新用户,如文档中所述:accounts.tekton: apiKeyargocd-cm

然后我们为用户创建了一个令牌tekton

有了这个令牌,password我们username tekton做了argocd login类似的事情

现在,在我们的 Tekton 管道中(但我们猜测对于其他所有 CI 来说都是一样的,考虑到非管理员用户的使用),如果我们运行,我们会收到以下错误argocd app create

0 投票
0 回答
18 浏览

docker - 是否可以自动拉取新版本的 docker 映像并将它们部署在 Raspberry pi 上?

我在树莓派上运行 docker 容器。我错过了我的 CI/CD 项目的最后一个难题,即自动化流程(从我的 repo 中提取最新的 docker 映像并进行部署),并且想知道其他人是否已经弄清楚了这个过程?是否有一个现有的脚本或轮询服务/侦听器等待我的 docker repo 中的更改?我试图四处寻找解决方案或提示如何让它发挥作用,但我的尝试到目前为止都没有成功。

非常感谢每个提示/提示/链接。

0 投票
1 回答
61 浏览

kubernetes - argo-cd 如何在上线前测试“开发”集群中的配置

我有一个 argocd 存储库,其中包含 Kubernetes 集群的所有配置。现在我想和 PR 一起工作,并且只想在合并之前合并在我们的持续集成系统上测试过的东西。为此,我的想法是创建另一个集群,然后将分支部署到该集群。遗憾的是,argocd 在其 yaml 文件中定义了revisionand targetRevision——因此,这是在 git 中“硬编码”的。

切换版本的最佳方式是什么,以便我可以“应用”任何功能分支并仍然将其链接到集群?

目标

ArgoCD 配置

应用程序集的示例 argo 配置