首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Kubernetes的Traefik后面为ArgoCD服务

在Kubernetes的Traefik后面为ArgoCD服务
EN

Server Fault用户
提问于 2022-09-25 15:01:12
回答 2查看 741关注 0票数 1

我希望在Traefik之后运行ArgoCD,以便既可以访问ArgoCD web,又可以使用argocd命令行工具与D0交互。

  • 我已经将ArgoCD部署到上游表现的Kubernetes集群中。
  • 我已经部署了Traefik作为从舵图的入口服务器。除了日志级别之外,我没有设置任何图表值。
  • 我正在使用以下信息: apiVersion: networking.k8s.io/v1种类:入口元数据: name: argocd spec: tls:- argocd.internal secretName: argocd-证书规则:- host: argocd.internal http: path:-path:/ pathType:前缀后端: service:名称:argocd-服务器端口:名称: http
  • 秘密argocd-certificate存在,并且在tls.crttls.key中有一个有效的证书和密钥。

在这样的情况下,我可以访问ArgoCD at http://argocd.internal,但是在https://argocd.internal上访问它的尝试失败了:

代码语言:javascript
运行
复制
$ curl https://argocd.internal
404 page not found

(请注意,没有证书错误;端点正在服务器上服务器上配置的证书。)

我不知道这里发生了什么:我还没有将它绑定到任何特定的Traefik端点,所以当我们查询Traefik时,我希望它在所有endpoints...and上都是可用的,我们看到:

代码语言:javascript
运行
复制
$ curl -sf 'http://localhost:9000/api/http/routers?search=&status=&per_page=6&page=1' |
  jq '.[]|select(.service == "argocd-argocd-server-80")'
{
  "entryPoints": [
    "metrics",
    "web",
    "websecure"
  ],
  "service": "argocd-argocd-server-80",
  "rule": "Host(`argocd.internal`) && PathPrefix(`/`)",
  "status": "enabled",
  "using": [
    "metrics",
    "web",
    "websecure"
  ],
  "name": "argocd-argocd-argocd-internal@kubernetes",
  "provider": "kubernetes"
}

它确认路由器在所有端点上都是可用的。

这里发生了什么--为什么这只在通过http://而不是通过https://访问时才会做正确的事情?

如果有帮助,argocd-server服务如下所示:

代码语言:javascript
运行
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: server
    app.kubernetes.io/name: argocd-server
    app.kubernetes.io/part-of: argocd
  name: argocd-server
  namespace: argocd
spec:
  clusterIP: 10.96.117.77
  clusterIPs:
  - 10.96.117.77
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - name: http
    port: 80
    targetPort: 8080
  - name: https
    port: 443
    targetPort: 8080
  selector:
    app.kubernetes.io/name: argocd-server
EN

回答 2

Server Fault用户

回答已采纳

发布于 2022-09-26 02:51:45

我能够使用一对IngressRoute资源来完成工作:

  1. 一个用于http://端点: apiVersion: traefik.conto.us/v1alpha 1种类: IngressRoute元数据:名称: argocd-http spec: entryPoints:- web路由:-类别:规则匹配:主机(argocd.internal)优先级:10个中间件:- name: redirecting服务:-类别:服务名称:argocd-服务器端口: http -这使用重定向中间件将所有请求重定向到https://端点:apiVersion: traefik.conto.us/v1alpha 1类:中间件元数据:名称:重定向-http- https规范: redirectScheme: That :https永久: true,这意味着IngressRouteservices:部分实际上是不操作的,但它是模式所要求的。
  2. 其中一个用于https://端点: apiVersion: traefik.conto.us/v1alpha 1种类: IngressRoute元数据:名称: argocd-https规范: entryPoints:- websecure路由:-IngressRoute:规则匹配:主机(argocd.internal)优先级:10个服务:-类别:服务名称:argocd服务器端口: http -种类:规则匹配: Host(argocd.internal) && Header(Content-Typeapplication/grpc)优先级: 11种服务:-种类:服务名称:argocd-服务器端口: http方案: h2c tls: secretName: argocd证书我们使用Content-Type来区分gRPC请求和gRPC请求,并使用适当的协议方案连接到后端服务器。
票数 0
EN

Server Fault用户

发布于 2022-09-25 15:55:18

验证您的服务本身是否有效。Traefik可能正常工作,但由于健康检查失败、标签不匹配或安全策略,服务可能不可用。

尝试从Kubernetes内部使用digpingtelnet访问它,例如使用netshoot容器映像。

使用内部服务名称作为主机名:

..svc.cluster.local

票数 -1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1111526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档