标签: gitops

GitOps - 在同一个存储库或单独的存储库中配置?

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

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

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

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

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

  • 应用程序仓库:foo-organisation/bar-application
  • 配置仓库:foo-organisation/bar-application-config

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

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

git github kubernetes monorepo gitops

7
推荐指数
1
解决办法
3641
查看次数

ArgoCD 无法与“请求 SSH 代理但未指定 SSH_AUTH_SOCK”同步

我们已经愉快地将 ArgoCD 与公共存储库一起使用了一段时间,但在尝试将 ArgoCD 连接到私有存储库时遇到了问题。我们有一个Application看起来像这样的:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: example-app
  namespace: argocd
spec:
  destination:
    name: example-cluster
    namespace: open-cluster-management-agent
  project: ops
  source:
    path: .
    repoURL: ssh://git@github.com/example-org/example-repo.git
    targetRevision: HEAD
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - Validate=false
    - ApplyOutOfSyncOnly=true
Run Code Online (Sandbox Code Playgroud)

以及相应的密钥,其密钥如下所示:

apiVersion: v1
metadata:
  labels:
    argocd.argoproj.io/secret-type: repository
  name: example-repo
  namespace: argocd
type: Opaque
stringData:
  sshPrivateKey: |
    -----BEGIN OPENSSH PRIVATE KEY-----
    ...
    -----END OPENSSH PRIVATE KEY-----
  url: ssh://git@github.com/example-org/example-repo.git
kind: Secret
Run Code Online (Sandbox Code Playgroud)

ArgoCD 无法同步此应用程序并显示以下错误:

rpc error: code = Unknown desc = …
Run Code Online (Sandbox Code Playgroud)

git ssh kubernetes gitops argocd

6
推荐指数
1
解决办法
2万
查看次数

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

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

\n

问题是,当我应用 yaml 来创建根应用程序时,没有任何反应。\n这是 yaml(由helm template apps/ -n argocd我的公共存储库中的命令创建https://github.com/gajewa/gitops):

\n
apiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: root\n  finalizers:\n    - resources-finalizer.argocd.argoproj.io\nspec:\n  destination:\n    server: http://kubernetes.default.svc\n    namespace: argocd\n  project: default\n  source:\n    path: apps/\n    repoURL: https://github.com/gajewa/gitops.git\n    targetRevision: HEAD\n  syncPolicy:\n    automated:\n      prune: true\n      selfHeal: true\n
Run Code Online (Sandbox Code Playgroud)\n

资源已创建,但 Argo UI 中实际上没有发生任何事情。没有可见的应用程序。因此,我尝试通过 Web UI 创建应用程序,甚至将 yaml 粘贴到其中。该应用程序是在 Web ui 中创建的,它似乎与 prometheus 和 argo 的 yaml 模板同步并查看存储库,但它实际上并未在 ArgoCD 中创建 prometheus 应用程序。根应用程序的普罗米修斯部分正在不断进步。

\n …

deployment kubernetes devops gitops argocd

6
推荐指数
1
解决办法
1万
查看次数

将 Kubernetes 连接到 GitLab 容器注册表

我在将 k3s 集群连接到 GitLab Docker 注册表时遇到问题。

在集群上,我在默认名称空间中创建了秘密,如下所示

kubectl create secret docker-registry regcred --docker-server=https://gitlab.domain.tld:5050 --docker-username=USERNAME --docker-email=EMAIL --docker-password=TOKEN
Run Code Online (Sandbox Code Playgroud)

然后在部署配置中我得到了这个秘密,我的配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
  labels:
    app.kubernetes.io/name: "app"
    app.kubernetes.io/version: "1.0"
  namespace: default
spec:
  template:
    metadata:
      labels:
        app: app
    spec:
      imagePullSecrets:
        - name: regcred
      containers:
      - image: gitlab.domain.tld:5050/group/appproject:1.0
        name: app
        imagePullPolicy: Always
        ports:
        - containerPort: 80
Run Code Online (Sandbox Code Playgroud)

但创建的 pod 仍然无法拉取该镜像。仍然有错误信息:

failed to authorize: failed to fetch anonymous token: unexpected status: 403 Forbidden
Run Code Online (Sandbox Code Playgroud)

你能帮我看看错误可能出在哪里吗?如果我尝试通过本地 docker 上的秘密连接到这个 GitLab 注册表,它工作正常,docker 登录是正确的,也可以拉取该图像。

谢谢

gitlab docker kubernetes k3s gitops

3
推荐指数
1
解决办法
1856
查看次数

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

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

kubectl patch configmap argocd-cm -n argocd -p '{"data": {"accounts.tekton": "apiKey"}}'
Run Code Online (Sandbox Code Playgroud)

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

argocd account generate-token --account tekton
Run Code Online (Sandbox Code Playgroud)

将此令牌作为 the passwordusername tekton我们做了argocd login类似的事情

argocd login $(kubectl get service argocd-server -n argocd --output=jsonpath='{.status.loadBalancer.ingress[0].hostname}') --username=tekton --password="$TOKEN";
Run Code Online (Sandbox Code Playgroud)

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

$ argocd app create microservice-api-spring-boot --repo https://gitlab.com/jonashackt/microservice-api-spring-boot-config.git --path deployment --dest-server https://kubernetes.default.svc …
Run Code Online (Sandbox Code Playgroud)

continuous-deployment kubernetes gitops tekton argocd

2
推荐指数
1
解决办法
7970
查看次数

argocd:为什么 helm 应用程序不应用values.yml

我想使用 argocd 安装 helm 版本,我以声明方式定义了一个 helm 应用程序,如下所示:

\n
apiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: moon\n  namespace: argocd\nspec:\n  project: aerokube\n  source:\n    chart: moon2\n    repoURL: https://charts.aerokube.com/\n    targetRevision: 2.4.0\n    helm:\n      valueFiles:\n      - values.yml\n  destination:\n    server: "https://kubernetes.default.svc"\n    namespace: moon1\n  syncPolicy:\n    syncOptions:\n      - CreateNamespace=true\n
Run Code Online (Sandbox Code Playgroud)\n

我的values.yml在哪里:

\n
customIngress:\n  enabled: true\n  annotations:\n    cert-manager.io/cluster-issuer: "letsencrypt"   \n  ingressClassName: nginx\n  host: moon3.benighil-mohamed.com\n  tls:\n  - secretName: moon-tls\n    hosts:\n    - moon3.benighil-mohamed.com\nconfigs:\n  default:\n    containers:\n      vnc-server:\n        repository: quay.io/aerokube/vnc-server\n        resources:\n          limits:\n            cpu: 400m\n            memory: 512Mi\n          requests:\n            cpu: 200m\n            memory: 512Mi\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,该应用程序没有考虑values.yml,并且我收到以下错误:

\n
rpc error: code …
Run Code Online (Sandbox Code Playgroud)

kubernetes argo kubernetes-helm gitops argocd

2
推荐指数
1
解决办法
6562
查看次数

如何从 git 存储库初始化 ArgoCD 应用程序

我想直接从 git 存储库创建一个 argoCD 应用程序,即 gitOps 方式。我已经为应用程序创建了一个 CRD 文件,如下所示:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-service
  namespace: argocd
spec:
  destination:
    namespace: default
    server: https://kubernetes.default.svc
  syncPolicy:
    syncOptions:
    - CreateNamespace=true
  project: default
  source:
    path: clusters/helm-chart
    repoURL: https://github.com/user/my-repo.git
    targetRevision: HEAD
    helm:
      values: |
        image:
          repository: user/my-image
          pullPolicy: Always
          tag: xxx


Run Code Online (Sandbox Code Playgroud)

我当前的工作流程是将此 CRD 应用于我的集群k apply -f application.yaml

问题:如何指示 ArgoCD 去同步/创建我定义的应用程序,而https://github.com/user/my-repo.git无需首先“手动”创建该应用程序?

kubernetes gitops argocd

1
推荐指数
1
解决办法
1216
查看次数