Configuration d'entrée ArgoCD

Jan 12 2023
Prérequis :- Ingress-Nginx doit être présent dans votre cluster ! L'entrée peut être configurée de plusieurs façons. Je vais créer plusieurs objets et hôtes d'entrée.
Configuration d'entrée ArgoCD

Prérequis:-

Ingress-Nginx doit être présent dans votre cluster !

L'entrée peut être configurée de plusieurs façons. Je vais créer plusieurs objets et hôtes d'entrée.

A- Point de terminaison argocd accessible de l'extérieur (si vous utilisez l'authentification unique , cela est nécessaire pour la configuration d'Okta SSO.)

[ Il est possible de configurer Okta SSO avec une installation de CD Argo privé, où l'URL de rappel Okta est le seul point de terminaison exposé publiquement ]

B- Point de terminaison argocd accessible en interne (pour accéder à votre cluster Kubernetes privé et à vos pods, vous devez utiliser un point de terminaison argocd interne).

Remarque : Dans la plupart des cas, vous devrez peut-être utiliser ArgoCD comme point d'accès interne, et je pense que la raison en est que votre équipe interne utilise ArgoCD pour déployer les services K8s. Ceci est également vrai dans mon cas d'utilisation.

Objets et hôtes d'entrée multiples -

Ingress-Nginx Ingress ne prend en charge qu'un seul protocole par objet Ingress ; une autre option consiste à définir deux objets Ingress. Un pour HTTP/HTTPS et un pour gRPC.

Entrée HTTP/HTTPS -

Mon Ingress-Nginx externe (accessible depuis l'extérieur de votre organisation) [* J'en avais besoin car j'ai besoin d'utiliser Okta pour SSO [SAML (avec Dex)] cependant si ce n'est pas votre cas d'utilisation, ne le créez pas . ]

Change-ME [Modifier les valeurs clés ci-dessous selon votre infra]

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

> J'ai utilisé le secret que j'ai obtenu des secrets de certificat Let's Encrypt et changé le secretName des hôtes tls.

[Vous pouvez utiliser n'importe quel certificat SSL, pas nécessairement le certificat Let's Encrypt]

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

Entrée externe-Nginx avec chemin 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]

Remarque - Si vous préférez transférer le trafic chiffré vers votre POD et terminer TLS sur le serveur gRPC lui-même, ajoutez l'annotation d'entrée nginx.ingress.kubernetes.io/backend-protocol: "GRPCS".

sinon utilisez 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

Pourquoi SSO - L'authentification unique est un processus d'authentification qui permet aux utilisateurs d'accéder en toute sécurité à plusieurs applications ou systèmes connexes à l'aide d'un seul ensemble d'informations d'identification.

Cliquez sur moi-

Guide d'installation ArgoCD tout-en-un.

ArgoCD Haute Disponibilité (HA) [Production Ready].

Configuration d'ArgoCD Okta. <<<< — -

Mise à jour des images ArgoCD .

Configuration de la notification ArgoCD Slack

Crochets de ressources ArgoCD.

J'espère que vous trouverez cet article instructif et bénéfique.

Par moi un café ← — — — Si vous aimez le blog, s'il vous plaît donnez-moi un Clap : ) et suivez-moi pour plus de contenu.

Vos applaudissements me motivent à continuer à écrire de tels blogs.