问题标签 [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.
amazon-web-services - 使用 AWS Elastic Container Registry 的 Fluxcd ImageRepository 身份验证不起作用
Fluxcd
ImageRepository
使用AWS Elastic Container Registry
Not working on ARM64 graviton
node 进行身份验证。
调试后我发现用于init container
获取 cred 凭据的图像不支持Arm64
实例。
文档链接:-https://fluxcd.io/docs/guides/image-update/
kubernetes - 在 kustomize 清单中创建变量
我有一个我认为常见的用例,但我真的很难找到解决方案:
我想Kustomize
在我们的部署中重用补丁中的变量。具体来说,我们使用提交 ID 来引用图像标签(用例 A)和与部署相关的 k8s 作业(用例 B)。
我们使用一个设置,其中对于每个 ArgoCD 应用程序我们都有一个/base/
文件夹,并且/overlays/[environment-name]
这个基础使用kustomization.yaml
.
用例 A:
一个非常简单的用法 -/overlays/[environment-name]
我们有一个kustomization.yaml
which 使用:
就像一个魅力一样,因为我们可以将它重新用于部署本身以及它的相关作业,所有这些都只需一个提交参考。
用例 B:
问题:
我们使用 N 个 Job 来为 0 次停机部署进行迁移,我们运行运行迁移的 alembic 容器,并且我们有一个waitforit
initContainer
监听 Job 以完成即当迁移成功以便部署。
现在的问题是,我需要在一个服务的覆盖中触摸 4 个文件来修补各处的 id(我们用它来识别作业):
- deployment.yaml 像这样:
- job.yaml 本身更改 Job 的重新触发以进行新的部署/潜在迁移:
- kustomization.yaml,如用例 A 中所述。
我认为应该可行的是:
commit-id
在 kustomization.yaml 中以某种方式定义变量和- 对于用例 A 和 B,请执行以下操作:
目标:当开发人员为发布做 PR 时,他们应该只触摸一个对提交 ID 的引用,以防止拼写错误等(也更容易审查,而不是在 N 个地方检查提交 ID)
警告:我确信还有另一种方法可以代替 Jobs 进行迁移,但这通常是一件常见的事情:如何在 kustomize 中重用变量。
我知道我可以在 kustomize 中引用 ENV 变量,但我想在清单中重用一个变量。
kubernetes - argocd-notifications 单个应用程序更新也会触发所有其他应用程序上的同步事件
我通过 argocd(应用程序模式的应用程序)部署了多个应用程序(helm),所有应用程序都驻留在同一个 git 存储库中的文件夹中:
app1, app2, app3... appN
. 我正在使用 argocd 通知。我已经为 on-deployed 事件配置了触发器(来自 helm chart 中的示例):
和默认订阅:
现在,如果我更改文件app1
夹中的文件,触发器也会在所有其他应用程序上触发:app2, app3 ... appN
,向 slack 发送关于不受更改影响且未实际部署的应用程序的不需要的消息。我只想收到有关实际更新/部署的应用程序的通知。有什么解决方法可以实现这一目标吗?
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: false
和dags.gitSync.repo: https://github.com/apache/airflow.git
. 我原以为这应该反映我从 values.yaml 升级/安装的内容:enable = true 和ssh repo fetch。dags.gitSync.enabled: true
通过将 values2.yaml 编辑为并重新升级,我的行为没有改变——仍然是关于调度程序没有运行和没有 DAG 的错误说明。
argocd - 未找到 argocd synchfailed ocp 资源“”
我在 OCP 上使用 ArgoCD 2.0。如果我尝试同步命名空间 yaml 文件,则可以,但如果我添加任何其他 OCP 资源(例如 imagestream),则会出现同步错误。
这是命名空间 yaml
和这个图像流 yaml
我得到 ImageStream "" not found
有谁知道问题出在哪里?
docker - 如何在 GCP 中使用 cloudbuild.yaml 创建 CI/CD 管道?
我正在尝试创建一个简单的 CI/CD 管道。客户端制作后git push
,它将启动以下触发器cloudbuilder.yaml
:
它返回以下错误:它无法在存储库中创建图像。我该如何解决这个问题?
kubernetes - 应用 yaml 时,应用程序未显示在 ArgoCD 中
我正在尝试为 gitops 设置 ArgoCD。我使用 ArgoCD helm chart 将其部署到我的本地 Docker Desktop Kubernetes 集群。我正在尝试为 ArgoCD 使用应用程序模式的应用程序。
问题是当我应用 yaml 来创建根应用程序时,什么也没有发生。这是 yaml(由helm template apps/ -n argocd
my 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/
devops - 使用 GitOps 部署时如何提供密码
我想使用 GitOps 解决方案(例如 Flux)将我的基础架构部署到 kubernetes 集群:
传递秘密信息而不将其保存在 git 中的最佳方法是什么?
kubernetes - argocd cli json 输出
我正在尝试使 argocd cli 输出 yaml/json 为脚本摄取做好准备。
根据此 PR:https ://github.com/argoproj/argo-cd/pull/2551 它应该可用,但我在 cli 帮助和文档中都找不到该选项。
git - 使用 GitOps (IaC) 时如何对配置进行 CRUD
由于我做了一些 IaC 工作,所以我所有的 App 配置都存储在 gitlab 存储库中。但是我如何在 gitlab 中查询/更新这些配置,就像我之前在 DB 中查询或更新配置一样?我们有一个名为 BaselineManage 的服务器,它管理应用程序的配置并将配置存储在数据库中,我们为每个想要更新应用程序配置的团队提供更新/查询等 api。但是,我们使用 git repo 作为存储,那么 Update/Query 不能像更新或查询数据库一样访问 git 文件。