Configuração de entrada do ArgoCD

Jan 12 2023
Pré-requisito:- O Ingress-Nginx precisa estar presente no seu Cluster! O ingresso pode ser configurado de várias maneiras. Criarei vários objetos e hosts de ingresso.
Configuração de entrada do ArgoCD

Pré-requisito:-

O Ingress-Nginx precisa estar presente no seu Cluster!

O ingresso pode ser configurado de várias maneiras. Criarei vários objetos e hosts de ingresso.

A- Endpoint argocd acessível externamente (se você usar o logon único , isso é necessário para a configuração do Okta SSO.)

[ É possível configurar o Okta SSO com uma instalação privada do Argo CD, onde a URL de retorno do Okta é o único terminal exposto publicamente ]

B- Endpoint argocd acessível internamente (para acessar seu cluster e pods privados do Kubernetes, você precisa usar um endpoint argocd interno).

Observação: na maioria dos casos, pode ser necessário usar o ArgoCD como um ponto de acesso interno, e acredito que o motivo seja que sua equipe interna está usando o ArgoCD para implantar os serviços K8s. Isso também é verdade no meu caso de uso.

Vários objetos e hosts de entrada -

Ingress-Nginx Ingress suporta apenas um protocolo por objeto Ingress; outra opção é definir dois objetos Ingress. Um para HTTP/HTTPS e outro para gRPC.

Entrada HTTP/HTTPS -

Meu Ingress-Nginx externo (acessível de fora da sua organização) [* Eu precisava disso porque preciso usar o Okta para SSO [SAML (com Dex)] no entanto, se esse não for o seu caso de uso, não o crie . ]

Change-ME [Altere os valores-chave abaixo de acordo com sua infra]

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

> Usei o segredo que obtive dos segredos do certificado Let's Encrypt e alterei o tls hosts secretName.

[Você pode usar qualquer certificado SSL, não necessariamente o certificado Let's Encrypt]

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

Entrada externa-Nginx com caminho 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]

Observação - Se você preferir encaminhar o tráfego criptografado para seu POD e encerrar o TLS no próprio servidor gRPC, adicione a anotação ingress nginx.ingress.kubernetes.io/backend-protocol: "GRPCS".

senão use- 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

Por que SSO - Single sign-on é um processo de autenticação que permite aos usuários acessar com segurança vários aplicativos ou sistemas relacionados usando apenas um conjunto de credenciais.

Clique em mim-

Guia de configuração do ArgoCD All-in-One.

ArgoCD High Availability (HA) [Pronto para Produção].

Configuração do ArgoCD Okta. <<<< — -

Atualizador de imagem ArgoCD .

Configuração de notificação do ArgoCD Slack

Ganchos de recursos do ArgoCD.

Espero que você ache este artigo educativo e benéfico.

Por mim um café ← — — — Se você gosta do blog, por favor me dê um Clap : ) e siga-me para mais conteúdos como esse.

Seus aplausos me motivam a continuar escrevendo esses blogs.