问题标签 [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 回答
77 浏览

amazon-web-services - 使用 AWS Elastic Container Registry 的 Fluxcd ImageRepository 身份验证不起作用

Fluxcd ImageRepository使用AWS Elastic Container RegistryNot working on ARM64 gravitonnode 进行身份验证。

调试后我发现用于init container获取 cred 凭据的图像不支持Arm64实例。

文档链接:-https://fluxcd.io/docs/guides/image-update/

0 投票
1 回答
1683 浏览

kubernetes - 在 kustomize 清单中创建变量

我有一个我认为常见的用例,但我真的很难找到解决方案:

我想Kustomize在我们的部署中重用补丁中的变量。具体来说,我们使用提交 ID 来引用图像标签(用例 A)和与部署相关的 k8s 作业(用例 B)。

我们使用一个设置,其中对于每个 ArgoCD 应用程序我们都有一个/base/文件夹,并且/overlays/[environment-name]这个基础使用kustomization.yaml.

用例 A:

一个非常简单的用法 -/overlays/[environment-name]我们有一个kustomization.yamlwhich 使用:

就像一个魅力一样,因为我们可以将它重新用于部署本身以及它的相关作业,所有这些都只需一个提交参考。

用例 B:

问题:

我们使用 N 个 Job 来为 0 次停机部署进行迁移,我们运行运行迁移的 alembic 容器,并且我们有一个waitforit initContainer监听 Job 以完成即当迁移成功以便部署。

现在的问题是,我需要在一个服务的覆盖中触摸 4 个文件来修补各处的 id(我们用它来识别作业):

  • deployment.yaml 像这样:
  • job.yaml 本身更改 Job 的重新触发以进行新的部署/潜在迁移:
  • kustomization.yaml,如用例 A 中所述。

我认为应该可行的是:

  1. commit-id在 kustomization.yaml 中以某种方式定义变量和
  2. 对于用例 A 和 B,请执行以下操作:

目标:当开发人员为发布做 PR 时,他们应该只触摸一个对提交 ID 的引用,以防止拼写错误等(也更容易审查,而不是在 N 个地方检查提交 ID)

警告:我确信还有另一种方法可以代替 Jobs 进行迁移,但这通常是一件常见的事情:如何在 kustomize 中重用变量。

我知道我可以在 kustomize 中引用 ENV 变量,但我想在清单中重用一个变量。

0 投票
1 回答
212 浏览

kubernetes - argocd-notifications 单个应用程序更新也会触发所有其他应用程序上的同步事件

我通过 argocd(应用程序模式的应用程序)部署了多个应用程序(helm),所有应用程序都驻留在同一个 git 存储库中的文件夹中: app1, app2, app3... appN. 我正在使用 argocd 通知。我已经为 on-deployed 事件配置了触发器(来自 helm chart 中的示例):

和默认订阅:

现在,如果我更改文件app1夹中的文件,触发器也会在所有其他应用程序上触发:app2, app3 ... appN,向 slack 发送关于不受更改影响且未实际部署的应用程序的不需要的消息。我只想收到有关实际更新/部署的应用程序的通知。有什么解决方法可以实现这一目标吗?

0 投票
0 回答
492 浏览

airflow - Airflow2 gitSync DAG 适用于气流命名空间,但不适用于备用命名空间

我正在运行 minikube 以使用 Apache Airflow2 进行开发。我正在尝试从 GitLab 上的私人仓库同步我的 DAG,但为了让一个基本示例正常工作,我后退了几步。在默认的“airflow”命名空间的情况下,它可以工作,但是当在非默认命名空间中使用完全相同的文件时,它不会。

我有一个 values.yaml 文件,其中包含以下部分:

如果我运行helm upgrade --install airflow apache-airflow/airflow -f values.yaml -n airflow, 然后kubectl port-forward svc/airflow-webserver 8080:8080 --namespace airflow,我会按预期在 http://localhost:8080 处获得完整的 DAG 列表。

但是,如果我运行helm upgrade --install airflow apache-airflow/airflow -f values.yaml -n mynamespace, 然后kubectl port-forward svc/airflow-webserver 8080:8080 --namespace mynamespace,我在 http://localhost:8080 中没有列出任何 DAG。

如果我列出我试图解决这个问题的所有网站,这篇文章会长 10 倍。我做错了什么??

更新:我创建了一个新的命名空间,,test01以防有一些历史被搁置并导致问题。我跑了helm upgrade --install airflow apache-airflow/airflow -f values.yaml -n test01。启动网络服务器并检查,我没有看到登录屏幕,但它直接进入通常的网页,也没有显示 dags 列表,但这次在 DAG 页面顶部有一个通知:

调度程序似乎没有运行。
DAG 列表可能不会更新,并且不会安排新任务。

这又是不同的行为(尽管与mynamespace通过 gitSync 显示没有 DAG 的情况相同),尽管它似乎暗示了在这种情况下没有检索 DAG 的原因。如果一切都像以前一样启动并启动,我不明白为什么调度程序没有运行。

奇怪的是,helm show values apache-airflow/airflow --namespace test01 > values2.yaml给出了默认值dags.gitSync.enabled: falsedags.gitSync.repo: https://github.com/apache/airflow.git. 我原以为这应该反映我从 values.yaml 升级/安装的内容:enable = true 和ssh repo fetch。dags.gitSync.enabled: true通过将 values2.yaml 编辑为并重新升级,我的行为没有改变——仍然是关于调度程序没有运行和没有 DAG 的错误说明。

0 投票
0 回答
16 浏览

argocd - 未找到 argocd synchfailed ocp 资源“”

我在 OCP 上使用 ArgoCD 2.0。如果我尝试同步命名空间 yaml 文件,则可以,但如果我添加任何其他 OCP 资源(例如 imagestream),则会出现同步错误。

这是命名空间 yaml

和这个图像流 yaml

我得到 ImageStream "" not found

有谁知道问题出在哪里?

0 投票
1 回答
76 浏览

docker - 如何在 GCP 中使用 cloudbuild.yaml 创建 CI/CD 管道?

我正在尝试创建一个简单的 CI/CD 管道。客户端制作后git push,它将启动以下触发器cloudbuilder.yaml

它返回以下错误:它无法在存储库中创建图像。我该如何解决这个问题?

0 投票
2 回答
921 浏览

kubernetes - 应用 yaml 时,应用程序未显示在 ArgoCD 中

我正在尝试为 gitops 设置 ArgoCD。我使用 ArgoCD helm chart 将其部署到我的本地 Docker Desktop Kubernetes 集群。我正在尝试为 ArgoCD 使用应用程序模式的应用程序。

问题是当我应用 yaml 来创建根应用程序时,什么也没有发生。这是 yaml(由helm template apps/ -n argocdmy public repo中的命令创建https://github.com/gajewa/gitops):

资源已创建,但 Argo UI 中实际上没有发生任何事情。没有应用程序可见。所以我尝试通过 Web UI 创建应用程序,甚至将 yaml 粘贴在那里。该应用程序是在 web ui 中创建的,它似乎与 prometheus 和 argo 的 yaml 模板同步并查看 repo,但它实际上并没有在 ArgoCD 中创建 prometheus 应用程序。根应用程序的普罗米修斯部分永远在进步。

以下是一些屏幕截图: 带有根应用程序的主页(其中 argo-cd 和 prometheus 也应该可见但不可见): 在此处输入图像描述 然后是根应用程序视图,其中为每个模板创建了一些东西,但 Argo 似乎不能从此创建 kubernetes 部署/pod 等: 在此处输入图像描述

我想也许 k8s 集群中不存在 CRD 定义,但我检查了它们,它们在那里:

我已经用完了所有东西来检查为什么没有实际部署应用程序。我正在阅读本教程:https ://www.arthurkoziel.com/setting-up-argocd-with-helm/

0 投票
0 回答
29 浏览

devops - 使用 GitOps 部署时如何提供密码

我想使用 GitOps 解决方案(例如 Flux)将我的基础架构部署到 kubernetes 集群:

传递秘密信息而不将其保存在 git 中的最佳方法是什么?

0 投票
1 回答
80 浏览

kubernetes - argocd cli json 输出

我正在尝试使 argocd cli 输出 yaml/json 为脚本摄取做好准备。

根据此 PR:https ://github.com/argoproj/argo-cd/pull/2551 它应该可用,但我在 cli 帮助和文档中都找不到该选项。

0 投票
0 回答
10 浏览

git - 使用 GitOps (IaC) 时如何对配置进行 CRUD

由于我做了一些 IaC 工作,所以我所有的 App 配置都存储在 gitlab 存储库中。但是我如何在 gitlab 中查询/更新这些配置,就像我之前在 DB 中查询或更新配置一样?我们有一个名为 BaselineManage 的服务器,它管理应用程序的配置并将配置存储在数据库中,我们为每个想要更新应用程序配置的团队提供更新/查询等 api。但是,我们使用 git repo 作为存储,那么 Update/Query 不能像更新或查询数据库一样访问 git 文件。