Konfiguracja wejścia ArgoCD

Jan 12 2023
Wymagania wstępne:- Ingress-Nginx musi być obecny w twoim klastrze! Ingress można skonfigurować na wiele sposobów. Stworzę wiele obiektów wejściowych i hostów.
Konfiguracja wejścia ArgoCD

Warunek wstępny:-

Ingress-Nginx musi być obecny w twoim klastrze!

Ingress można skonfigurować na wiele sposobów. Stworzę wiele obiektów wejściowych i hostów.

A- Dostępny z zewnątrz punkt końcowy argocd (Jeśli używasz pojedynczego logowania , jest to wymagane do konfiguracji Okta SSO.)

[Możliwe jest skonfigurowanie Okta SSO z prywatną instalacją Argo CD, gdzie adres URL wywołania zwrotnego Okta jest jedynym publicznie ujawnionym punktem końcowym ]

B- Wewnętrznie dostępny punkt końcowy argocd (aby uzyskać dostęp do prywatnego klastra Kubernetes i kapsuł, musisz użyć wewnętrznego punktu końcowego argocd).

Uwaga: w większości przypadków może być konieczne użycie ArgoCD jako wewnętrznego punktu dostępu i uważam, że powodem jest to, że Twój wewnętrzny zespół używa ArgoCD do wdrażania usług K8s. Jest to również prawdą w moim przypadku użycia.

Wiele obiektów wejściowych i hostów —

Ingress-Nginx Ingress obsługuje tylko jeden protokół na obiekt Ingress; inną opcją jest zdefiniowanie dwóch obiektów Ingress. Jeden dla HTTP/HTTPS i jeden dla gRPC.

Ruch przychodzący HTTP/HTTPS –

Mój zewnętrzny Ingress-Nginx (dostępny spoza Twojej organizacji) [* Potrzebowałem tego, ponieważ potrzebuję używać Okta do SSO [SAML (z Dex)] jednak jeśli to nie jest twój przypadek użycia, nie twórz go . ]

Change-ME [Zmień poniższe kluczowe wartości zgodnie ze swoją infra]

  • ingressClassName, host , Path, tls hosts & tls secretName

> Użyłem sekretu, który otrzymałem z sekretów certyfikatu Let's Encrypt i zmieniłem sekret hosta tls.

[Możesz użyć dowolnego certyfikatu ssl, niekoniecznie certyfikatu Let's Encrypt]

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

Zewnętrzny Ingress-Nginx ze ścieżką Okta —

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]

Uwaga — jeśli wolisz przekazywać zaszyfrowany ruch do urządzenia POD i zakończyć TLS na samym serwerze gRPC, dodaj adnotację dotyczącą ruchu przychodzącego nginx.ingress.kubernetes.io/backend-protocol: "GRPCS".

w przeciwnym razie użyj 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

Dlaczego SSO — jednokrotne logowanie to proces uwierzytelniania, który umożliwia użytkownikom bezpieczny dostęp do wielu powiązanych aplikacji lub systemów przy użyciu tylko jednego zestawu poświadczeń.

Kliknij-

Podręcznik konfiguracji urządzenia wielofunkcyjnego ArgoCD.

ArgoCD High Availability (HA) [gotowy do produkcji].

Konfiguracja ArgoCD Okta. <<<< — —

Aktualizator obrazu ArgoCD .

Konfiguracja powiadomień ArgoCD Slack

Haki zasobów ArgoCD.

Mam nadzieję, że ten artykuł uznasz za edukacyjny i pożyteczny.

By me a Coffee ← — — — Jeśli blog ci się podoba, poklasknij :) i śledź mnie po więcej tego typu treści.

Wasze brawa motywują mnie do dalszego pisania takich blogów.