ArgoCD 和 Traefik 2.x:如何配置 argocd-server 部署以在禁用 TLS 的情况下运行(在哪里放置 --insecure 标志)

问题描述 投票:0回答:2

我们设置了 Traefik 作为入口控制器/CRD 和 ArgoCD。我们将 ArgoCD 安装到我们的 EKS 设置中,如Argo 入门指南中所述:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

现在如文档所述正确配置Traefik的

IngressRoute
对象看起来像这样:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: argocd-server
  namespace: argocd
spec:
  entryPoints:
    - websecure
  routes:
    - kind: Rule
      match: Host(`argocd.tekton-argocd.de`)
      priority: 10
      services:
        - name: argocd-server
          port: 80
    - kind: Rule
      match: Host(`argocd.tekton-argocd.de`) && Headers(`Content-Type`, `application/grpc`)
      priority: 11
      services:
        - name: argocd-server
          port: 80
          scheme: h2c
  tls:
    certResolver: default
    

现在 文档中有一个错误 - 因此请务必删除

options: {}
,以便让 Traefik 接受配置。

Traefik 在仪表板中显示一切正常:

但是,如果我们尝试通过 https://argocd.tekton-argocd.de 访问 ArgoCD 仪表板,我们会收到多个

HTTP 307
重定向,最终无法访问仪表板。您可以在开发者工具中看到重定向:

正在寻找我们已经找到的解决方案这个问题问题的描述:

问题是默认情况下 Argo-CD 会自行处理 TLS 终止 并且始终将 HTTP 请求重定向到 HTTPS。将其与 入口控制器还处理 TLS 终止并且始终 通过 HTTP 与后端服务通信,您将获得 Argo-CD 服务器总是响应重定向到 HTTPS。

还概述了解决方案:

因此解决方案之一是在 Argo-CD 上禁用 HTTPS,这 您可以通过在 argocd-server 上使用 --insecure 标志来完成。

但是我们如何配置

argocd-server
部署以将
--insecure
标志添加到 argocd-server 命令中 - 正如 ArgoCD 文档中所述?

kubernetes kubernetes-ingress traefik kustomize argocd
2个回答
15
投票

0。为什么使用 Kustomize 进行声明式 ArgoCD 设置是配置自定义参数的好方法

如何配置 ArgoCD 有多种选项。一个很好的方法是使用声明式方法,这应该是默认的 Kubernetes 风格。浏览 ArgoCD 文档,有一个

附加配置部分,可以在其中找到 ConfigMap argocd-cmd-params-cm

 的可能标志。这些标志在 
argocd-cmd-params-cm.yaml 中进行了描述。其中之一是旗帜server.insecure

## Server properties # Run server without TLS server.insecure: "false"
https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

附带的

argocd-server
部署将使用此参数(如果在 argocd-cmd-params-cm ConfigMap 中定义了该参数)。
为了以声明方式配置 ArgoCD 配置,

ArgoCD 文档有一个很棒的部分

,介绍了如何使用 Kustomize 进行此操作。事实上,ArgoCD 团队本身就使用这种方法来部署他们自己的 ArgoCD 实例 - 可以在此处进行实时部署https://cd.apps.argoproj.io/,所使用的配置可以在 GitHub 上找到 将此应用到我们的用例中,我们需要将 ArgoCD 安装从简单使用

kubectl apply -f

切换为基于 Kustomize 的安装。 ArgoCD 文档也有

关于如何执行此操作的部分
。以下是简要步骤:

1。使用新文件创建

argocd/installation 目录
kustomization.yaml

我们稍微增强了文档中提出的

kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - https://raw.githubusercontent.com/argoproj/argo-cd/v2.3.3/manifests/install.yaml

## changes to config maps
patches:
  - path: argocd-cmd-params-cm-patch.yml

namespace: argocd

由于文档声明

建议将清单包含为远程资源并 使用 Kustomize 补丁应用其他自定义。

我们使用
patchesStrategicMerge

配置键,其中包含我们需要创建的另一个新文件,名为

argocd-cmd-params-cm-patch.yml

2。创建一个新文件

argocd-cmd-params-cm-patch.yml

这个新文件仅包含我们要在 ConfigMap 中更改的配置

argocd-cmd-params-cm

:

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cmd-params-cm
data:
  server.insecure: "true"

3.使用 Kustomization 文件安装 ArgoCD & 

kubectl apply -k

有一个单独的

kustomize

CLI,可以安装,例如通过

brew install kustomize
。但由于 Kustomize 内置于
kubectl
中,我们只需使用
kubectl apply -k
并将其指向我们新创建的
argocd/installation
目录,如下所示。我们还需要确保创建了
argocd
命名空间:
kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -    
kubectl apply -k argocd/installation

这将安装 ArgoCD 并配置 
argocd-server

部署以根据需要使用

--insecure
标志,以阻止 Argo 自行处理 TLS 终止并将该责任交给 Traefik。现在访问
https://argocd.tekton-argocd.de
应按预期打开 ArgoCD 仪表板:


0
投票

apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: argocd-server namespace: argocd spec: entryPoints: - websecure routes: - kind: Rule match: Host(`argocd.example.com`) priority: 10 services: - name: argocd-server port: 80 - kind: Rule match: Host(`argocd.example.com`) && Headers(`Content-Type`, `application/grpc`) priority: 11 services: - name: argocd-server port: 80 scheme: h2c tls: {}

使用 traefik 2.6.3 对我有用。

故障排除在

tls: {}

    

© www.soinside.com 2019 - 2024. All rights reserved.