Обслуживание ArgoCD за Traefik в Kubernetes
Я хотел бы запустить ArgoCD за Traefik, чтобы я мог получить доступ к веб-интерфейсу ArgoCD и взаимодействовать с API, используяargocd
инструмент командной строки.
Я развернул ArgoCD в кластере Kubernetes из вышестоящих манифестов .
Я развернул Traefik как входной сервер из диаграммы управления . Я не устанавливал никаких значений диаграммы, кроме уровня журнала.
Я использую следующий ресурс Ingress:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: argocd spec: tls: - hosts: - argocd.internal secretName: argocd-certificate rules: - host: argocd.internal http: paths: - path: / pathType: Prefix backend: service: name: argocd-server port: name: http
Секрет
argocd-certificate
существует и имеет действительный сертификат и ключtls.crt
иtls.key
.
После этого я могу получить доступ к ArgoCD по адресуhttp://argocd.internal
, но пытается получить к нему доступ по адресуhttps://argocd.internal
потерпеть неудачу с:
$ curl https://argocd.internal
404 page not found
(Обратите внимание, что ошибки сертификата нет; конечная точка обслуживает сертификат, настроенный во входном ресурсе.)
Я не уверен, что здесь происходит: я не привязал это к какой-либо конкретной конечной точке Traefik, поэтому я ожидаю, что он будет доступен на всех конечных точках... и когда мы запрашиваем API Traefik, мы видим:
$ 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
сервис выглядит так:
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