问题标签 [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 投票
0 回答
1413 浏览

gitops - GitOps 和数据库迁移

我正在尝试在我们公司引入 GitOps。大多数情况下,我们有用 Django 编写的微服务(但是,它可以是任何其他 Web 框架)。我对数据库迁移有概念上的问题。前向迁移很容易:您可以将它们作为作业或 init 容器或 helm 中的钩子运行。但是,向后迁移呢?假设我想从 v1.1 回滚到 v1.0,并且我有一些迁移要取消。现在呢?我想使用 argo cd 或flux。

有一篇非常好的文章:https ://www.weave.works/blog/how-to-correctly-handle-db-schemas-during-kubernetes-rollouts 。但是,它需要一些你在 Django 中没有的纪律

0 投票
1 回答
404 浏览

kubernetes - GitOps (Flex) 通过 HelmRelease 操作符在 Kubernetes 中安装标准 Jenkins Helm 图表

我刚刚开始在 Kubernetes 中使用 Wea​​vework 的 Flux GitOps 系统。我的常规部署(部署、服务、卷等)运行良好。我第一次尝试部署 Helm 图表。

我已按照本教程中的说明进行操作:https ://github.com/fluxcd/helm-operator-get-started并在进行一些小改动后使其示例服务正常工作。所以我相信我拥有所有合适的工具,包括自定义 HelmRelease K8s 操作符。

我想通过 Helm 部署 Jenkins,如果我手动执行,就像这个 Helm 命令一样简单:

我想在我的 Flex 管理的 GitHub 存储库中将此转换为 HelmRelease 对象。根据我能找到的文档,这就是我所拥有的:

我在我的 git 存储库中 Flex 正在监视的位置的根目录中的文件 'jenkins/jenkins.yaml' 中有这个。添加此文件没有任何作用...当我运行“helm list -n jenkins”时,我没有得到新的 K8s 对象、没有 HelmRelease 对象,也没有新的 Helm 版本。

我看到有人提到在我的“值”部分中必须有“图像”标签,但由于我不需要在手动调用 Helm 中指定任何图像,我不确定我会在“图像'标签。我还看到了没有“图像”标签的 HelmRelease 定义示例,因此它们似乎不是绝对必要的。

我尝试在“元数据”部分添加一些注释:

但这些都没有帮助让事情顺利进行。谁能告诉我我必须做什么才能获得与我在这篇文章顶部给出的简单 Helm 命令的等效项以使用 Flex/GitOps?

0 投票
0 回答
112 浏览

continuous-integration - Gitlab CI 使用规则启用合并结果

我用一个阶段制作了一个管道 - 编译和测试,它有一个运行go test并有一个触发器的作业:

在最终制定该规则之前,Gitlab 将为我运行 2 条管道 - 1 条分离,1 条针对目标分支(我们的目标是合并)。在引入上述规则之后,Gitlab 不再尝试针对合并目标分支运行第二个管道,而是仅在分离模式下运行一个管道。

我的最终目标是使用触发规则实现触发器:

  1. 当提交被推送到 MR 时
  2. 当我即将合并
  3. 当一段时间内 MR 分支没有发生更新时,它会针对目标分支运行该阶段。本质上,就是所谓的合并结果管道。

因此,我怎样才能实现从 1. 到 3. 的所有使用rules

0 投票
1 回答
321 浏览

kubernetes - Fluxcd 没有应用任何带有 err="running kubectl: 错误: 无法识别 \"STDIN\": ..."

我最近使用fluxctl installAzure AKS k8s 集群上安装了FluxCD 1.19.0。我们使用Flux 能够访问和签出的私有 git(自托管 bitbucket )。

现在 Flux 没有应用任何错误消息:

据我了解,Flux 将资源定义传递给 kubectl,然后再应用它们?

我解释错误的方式意味着 kubectl 没有传递任何东西。然而,我在容器中打开了一个外壳,并确保 Flux 实际上正在检查一些东西——它确实做到了。

我尝试将详细程度提高到 9,但它没有返回任何我认为相关的内容(http 请求的详细输出和针对 Kubernetes API 的响应)。

那么这里发生了什么?

0 投票
2 回答
76 浏览

bash - 如何以特定顺序应用来自特定提交的更改

Cn - 父提交。

Cn+1(green) - 本地提交。

Cn+1(黄色) - 同一分支中的另一个提交,但已推送到远程,但与本地提交具有相同的父级。

结果:我需要保存本地提交中的所有更改(绿色),但不要覆盖远程提交中的更改(黄色)。所以它看起来像保存本地和远程提交中相对于父级的更改,但绿色具有高优先级。

我不能用合并来做到这一点,因为它需要在交互模式下手动操作,我需要从 bash 自动完成。

在此处输入图像描述

0 投票
2 回答
2184 浏览

kubernetes - 如何在 kubernetes yaml 文件中使用标签,以便系统知道推送了新图像

我正在尝试使用 Azure DevOps 设置 CI,并使用 GitOps 为我的 AKS 群集设置 CD。CI 完成后,映像将推送到 Azure 容器注册表。我的问题是我的 yaml 文件中的图像名称是 :latest。当我将映像推送到容器注册表时,Flux CD 无法确定映像是否有任何更改,因为映像的名称保持不变。我试图在 github 中查找问题并提出以下链接: https ://github.com/GoogleCloudPlatform/cloud-builders/issues/22#issuecomment-316181326 但我不知道如何实现它。有人可以帮帮我吗?

0 投票
1 回答
77 浏览

git - 对master应用hotfix是否与神器中的神器提升实践相矛盾?

我是一个项目的一部分,我们正在构建一个应用程序并使用 CI/CD 来构建测试、部署。我们从develop创建功能分支,然后将它们合并到构建软件的develop,然后在足够成熟时合并到staging和master。

我们目前的情况是,为了将修补程序应用于生产,我们需要构建主分支,但这与我之前的理解相矛盾,即您应该只构建开发分支,然后将构建提升到后续的工件存储库。

我似乎无法找到我在哪里读到它,但我记得它是上述的效果。我读到的关于人工制品的内容是不正确的,还是我的 git 策略有缺陷?还是它们不兼容?

0 投票
0 回答
201 浏览

openshift - 语法错误:预期, 但找到 '-' (语法)

我定义了两个工作正常的环境变量。除此之外,我还有一个 JSON 对象 serviceAccount,它存储在手动创建的秘密 firebase-connector 中。当我添加第二部分时,我得到了一个错误。我遵循了语法,但它不起作用。

[][1] [1]:https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables

测试.yml

FirebaseService.java

应用程序属性

0 投票
1 回答
1516 浏览

git - GitOps - 在同一个仓库或单独的仓库中配置?

首先,这是在 Kubernetes 内部运行的单一存储库应用程序的上下文中。

在 GitOps 中,我的理解是一切都是声明性的,并且写在 YAML 等配置文件中。这允许在 git 中完整的更改历史。分支代表环境。例如:

  • BRANCH develop 可以是已部署的 QA 或登台环境
  • BRANCH 功能/foo-bar 可能是用于评估的已部署功能分支
  • TAG v1.2.0 可能是在生产中运行的最新版本这对我来说很有意义,任何和所有分支都可以部署为应用程序的运行版本。

问题我记得读过……某处……配置应该存在于主存储库之外,在另一个“配置存储库”中。从记忆的想法是一个应用程序不应该知道一个特定的配置......只知道如何使用一个配置?

这是真的?我应该有一个应用程序仓库和一个应用程序配置仓库吗?例如

  • 应用程序回购:foo-organisation/bar-application
  • 配置回购:foo-organisation/bar-application-config

不同环境的 config 分支模型位于该存储库中的哪个位置?为什么以及有什么优势?

否则它应该只存在于应用程序存储库的目录中吗?

0 投票
2 回答
1917 浏览

kubernetes - 应用程序之间的 ArgoCD 同步波

我们有一个 ArgoCD 项目。在这个项目中,我们有多个应用程序(我们称它们为 A、B 和 C),它们通过 Kafka 集群相互传递消息。为此,需要创建主题。

应用 A 负责管理 Kafka 集群(除其他外)。我们在应用 A 中有一个 PreSync 挂钩,用于在更新应用 B 和 C 所依赖的其他资源之前创建和配置主题。

这意味着我们需要应用 A 在其他应用之前同步,以确保顺利推出。为了尝试管理这一点,我们将应用程序 A 添加到 SyncWave-1中,其他默认设置为0

我们最初的假设(可能是愚蠢的)是在项目中应用同步协调,然而,它似乎只在应用程序中应用

因此,应用 A 中的资源会等待 PreSync 挂钩按预期配置主题,但应用 B 和 C 不会等待应用 A 同步。

有没有办法控制项目内应用程序之间同步的顺序/依赖关系?

我看到有人提到“应用程序应用程序”模式,在这种模式下,您有一个应用程序可以部署所有其他应用程序。这样做是否允许我们利用 SyncWave 来确保应用程序 A 在尝试同步应用程序 B 和 C 之前完全解析?如果没有,还有其他方法吗?