问题标签 [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.
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 中没有的纪律
kubernetes - GitOps (Flex) 通过 HelmRelease 操作符在 Kubernetes 中安装标准 Jenkins Helm 图表
我刚刚开始在 Kubernetes 中使用 Weavework 的 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?
continuous-integration - Gitlab CI 使用规则启用合并结果
我用一个阶段制作了一个管道 - 编译和测试,它有一个运行go test
并有一个触发器的作业:
在最终制定该规则之前,Gitlab 将为我运行 2 条管道 - 1 条分离,1 条针对目标分支(我们的目标是合并)。在引入上述规则之后,Gitlab 不再尝试针对合并目标分支运行第二个管道,而是仅在分离模式下运行一个管道。
我的最终目标是使用触发规则实现触发器:
- 当提交被推送到 MR 时
- 当我即将合并
- 当一段时间内 MR 分支没有发生更新时,它会针对目标分支运行该阶段。本质上,就是所谓的合并结果管道。
因此,我怎样才能实现从 1. 到 3. 的所有使用rules
?
kubernetes - Fluxcd 没有应用任何带有 err="running kubectl: 错误: 无法识别 \"STDIN\": ..."
我最近使用fluxctl install在Azure AKS k8s 集群上安装了FluxCD 1.19.0。我们使用Flux 能够访问和签出的私有 git(自托管 bitbucket )。
现在 Flux 没有应用任何错误消息:
据我了解,Flux 将资源定义传递给 kubectl,然后再应用它们?
我解释错误的方式意味着 kubectl 没有传递任何东西。然而,我在容器中打开了一个外壳,并确保 Flux 实际上正在检查一些东西——它确实做到了。
我尝试将详细程度提高到 9,但它没有返回任何我认为相关的内容(http 请求的详细输出和针对 Kubernetes API 的响应)。
那么这里发生了什么?
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 但我不知道如何实现它。有人可以帮帮我吗?
git - 对master应用hotfix是否与神器中的神器提升实践相矛盾?
我是一个项目的一部分,我们正在构建一个应用程序并使用 CI/CD 来构建测试、部署。我们从develop创建功能分支,然后将它们合并到构建软件的develop,然后在足够成熟时合并到staging和master。
我们目前的情况是,为了将修补程序应用于生产,我们需要构建主分支,但这与我之前的理解相矛盾,即您应该只构建开发分支,然后将构建提升到后续的工件存储库。
我似乎无法找到我在哪里读到它,但我记得它是上述的效果。我读到的关于人工制品的内容是不正确的,还是我的 git 策略有缺陷?还是它们不兼容?
openshift - 语法错误:预期, 但找到 '-' (语法)
我定义了两个工作正常的环境变量。除此之外,我还有一个 JSON 对象 serviceAccount,它存储在手动创建的秘密 firebase-connector 中。当我添加第二部分时,我得到了一个错误。我遵循了语法,但它不起作用。
[][1] [1]:https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables
测试.yml
FirebaseService.java
应用程序属性
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 分支模型位于该存储库中的哪个位置?为什么以及有什么优势?
否则它应该只存在于应用程序存储库的目录中吗?
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 之前完全解析?如果没有,还有其他方法吗?