ArgoCD 和 Traefik 2.x:如何配置 argocd-server 部署以在禁用 TLS 的情况下运行(放置 --insecure 标志的位置)
回答问题 我们将 Traefik 设置为 Ingress Controller / CRD 和 ArgoCD。我们将 ArgoCD 安装到我们的 EKS 设置中,如Argo 入门指南中所述: kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/ar
回答问题
我们将 Traefik 设置为 Ingress Controller / 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 文档](https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#traefik-v22)中说明的[?
Answers
0.为什么使用 Kustomize 进行声明性 ArgoCD 设置是配置自定义参数的好方法
关于如何配置 ArgoCD 有多种选择。一个很好的方法是使用声明式方法,这应该是默认的 Kubernetes 风格。浏览 ArgoCD 文档有一个附加配置部分可以找到 ConfigMapargocd-cmd-params-cm
的可能标志。标志在argocd-cmd-params-cm.yaml中描述。其中之一是标志server.insecure
## Server properties
# Run server without TLS
server.insecure: "false"
附带的argocd-server
部署 https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml将使用此参数,如果它在argocd-cmd-params-cm
ConfigMap 中定义。
为了以声明方式配置 ArgoCD 配置,ArgoCD 文档有一个很棒的部分关于如何使用Kustomize进行配置。事实上,ArgoCD 团队本身使用这种方法来部署他们自己的 ArgoCD 实例 - 可以在此处获取实时部署https://cd.apps.argoproj.io/和使用的配置可以在 GitHub上找到。
将其应用到我们的用例中,我们需要将 ArgoCD 安装从简单地使用kubectl apply -f
切换到基于 Kustomize 的安装。 ArgoCD 文档也有关于如何执行此操作的部分。以下是简要步骤:
1.用新文件kustomization.yaml
创建一个argocd/installation
目录
我们稍微增强了文档中提出的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
patchesStrategicMerge:
- argocd-cmd-params-cm-patch.yml
namespace: argocd
由于文档状态
建议将清单作为远程资源包含在内,并使用 Kustomize 补丁应用其他自定义。
我们使用patchesStrategicMerge
配置密钥,其中包含我们需要创建的另一个新文件argocd-cmd-params-cm-patch.yml
。
2.新建文件argocd-cmd-params-cm-patch.yml
这个新文件只包含我们想要在 ConfigMapargocd-cmd-params-cm
中更改的配置:
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cmd-params-cm
data:
server.insecure: "true"
3.使用 Kustomization 文件和kubectl apply -k
安装 ArgoCD
可以安装一个单独的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)