ArgoCD-Ingress-Setup

Jan 12 2023
Voraussetzung: – Ingress-Nginx muss in Ihrem Cluster vorhanden sein! Ingress kann auf verschiedene Arten konfiguriert werden. Ich werde mehrere Ingress-Objekte und Hosts erstellen.
ArgoCD-Ingress-Setup

Voraussetzung:-

Ingress-Nginx muss in Ihrem Cluster vorhanden sein!

Ingress kann auf verschiedene Arten konfiguriert werden. Ich werde mehrere Ingress-Objekte und Hosts erstellen.

A – Von außen zugänglicher argocd-Endpunkt (Wenn Sie Single Sign-On verwenden , ist dies für die Einrichtung von Okta SSO erforderlich.)

[Es ist möglich, Okta SSO mit einer privaten Argo-CD-Installation einzurichten, bei der die Okta-Rückruf-URL der einzige öffentlich zugängliche Endpunkt ist ]

B – Intern zugänglicher argocd-Endpunkt (um auf Ihren privaten Kubernetes-Cluster und Ihre Pods zuzugreifen, müssen Sie einen internen argocd-Endpunkt verwenden).

Hinweis: In den meisten Fällen müssen Sie möglicherweise ArgoCD als internen Zugriffspunkt verwenden. Ich glaube, der Grund dafür ist, dass Ihr internes Team ArgoCD zur Bereitstellung von K8s-Diensten verwendet. Dies gilt auch in meinem Anwendungsfall.

Mehrere Ingress-Objekte und Hosts –

Ingress-Nginx Ingress unterstützt nur ein Protokoll pro Ingress-Objekt; Eine weitere Möglichkeit besteht darin, zwei Ingress-Objekte zu definieren. Eine für HTTP/HTTPS und eine für gRPC.

HTTP/HTTPS-Eingang –

Mein externes Ingress-Nginx (zugänglich von außerhalb Ihrer Organisation) [* Ich brauchte es, weil ich Okta für SSO [SAML (mit Dex)] verwenden muss. Wenn das jedoch nicht Ihr Anwendungsfall ist, erstellen Sie es nicht . ]

Change-ME [Ändern Sie die folgenden Schlüsselwerte gemäß Ihrer Infrastruktur]

  • ingressClassName, Host, Pfad, TLS-Hosts und TLS-Geheimnisname

> Ich habe das Geheimnis verwendet, das ich aus den Zertifikatsgeheimnissen von Let's Encrypt erhalten habe, und den geheimen Namen des TLS-Hosts geändert.

[Sie können jedes SSL-Zertifikat verwenden, nicht unbedingt das Let's Encrypt-Zertifikat]

tls:
  - hosts:
    - argocd-ex.example.com #[Change-ME]
    secretName: argocd-tls #[Change-ME] #["My Let's encrypt cert secrets name"]

Externer Ingress-Nginx mit Okta-Pfad

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server-ingress-external
  namespace: argocd
  annotations:
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  ingressClassName: external-nginx #[Change-ME]
  rules:
  - host: argocd-ex.example.com #[Change-ME] 
    http:
      paths:
      - path: /api/dex/callback  #[SAML (with Dex) SSO Setup path]
        pathType: ImplementationSpecific
        backend:
          service:
            name: argocd-server #[your argoCD server service name]
            port:
              name: http
  tls:
  - hosts:
    - argocd-ex.example.com #[Change-ME]
    secretName: argocd-tls #["My Let's encrypt cert secrets name"] #[Change-ME]

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server-ingress-internal
  namespace: argocd
  annotations:
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  ingressClassName: internal-nginx #[Change-ME]
  rules:
  - host: argocd-in.example.com #[Change-ME]
    http: 
      paths:
      - path: /
        pathType: ImplementationSpecific
        backend:
          service:
            name: argocd-server #[your argoCD server service name]
            port:
              name: https
  tls:
  - hosts:
    - argocd-in.example.com #[Change-ME]
    secretName: argocd-tls #["My Let's encrypt cert secrets name"] #[Change-ME]

Hinweis – Wenn Sie lieber verschlüsselten Datenverkehr an Ihren POD weiterleiten und TLS auf dem gRPC-Server selbst beenden möchten, fügen Sie die Ingress-Anmerkung hinzu nginx.ingress.kubernetes.io/backend-protocol: "GRPCS".

andernfalls verwenden Sie nginx.ingress.kubernetes.io/backend-protocol: „GRPC“

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server-grpc-ingress
  namespace: argocd
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "GRPCS" #[Note me]
spec:
  ingressClassName: internal-nginx #[Change-ME]
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: argocd-server #[your argoCD server service name]
            port:
              name: https
    host: grpc.argocd.example.com
  tls:
  - hosts:
    - grpc.argocd.example.com
    secretName: argocd-tls #["My Let's Encrypt Cert Secrets Name"] #[Change-ME]

kubectl get ing -n argocd

      
                
ArgoCD Ingress Objects

Warum SSO – Single Sign-On ist ein Authentifizierungsprozess, der es Benutzern ermöglicht, mit nur einem Satz Anmeldeinformationen sicher auf mehrere verwandte Anwendungen oder Systeme zuzugreifen.

Klick mich-

ArgoCD All-in-One-Setup-Anleitung.

ArgoCD High Availability (HA) [Produktionsbereit].

ArgoCD Okta-Setup. <<<< — -

ArgoCD-Image-Updater .

ArgoCD Slack-Benachrichtigungs-Setup

ArgoCD-Ressourcen-Hooks.

Ich hoffe, dass Sie diesen Artikel lehrreich und nützlich finden.

Von mir einen Kaffee ← — — — Wenn Ihnen der Blog gefällt, klatschen Sie mir bitte :) und folgen Sie mir für weitere Inhalte dieser Art.

Ihr Applaus motiviert mich, weiterhin solche Blogs zu schreiben.