Настройка входа ArgoCD

Jan 12 2023
Обязательное условие: Ingress-Nginx должен присутствовать в вашем кластере! Вход можно настроить несколькими способами. Я создам несколько входных объектов и хостов.
Настройка входа ArgoCD

Предпосылки:-

Ingress-Nginx должен присутствовать в вашем кластере!

Вход можно настроить несколькими способами. Я создам несколько входных объектов и хостов.

A- Доступная извне конечная точка argocd (если вы используете единый вход , это необходимо для настройки Okta SSO.)

[Можно настроить Okta SSO с частной установкой Argo CD, где URL-адрес обратного вызова Okta является единственной общедоступной конечной точкой ]

B- Конечная точка argocd с внутренним доступом (для доступа к вашему частному кластеру Kubernetes и модулям вам необходимо использовать внутреннюю конечную точку argocd).

Примечание. В большинстве случаев вам может потребоваться использовать ArgoCD в качестве внутренней точки доступа, и я полагаю, что причина в том, что ваша внутренняя команда использует ArgoCD для развертывания сервисов K8s. Это также верно в моем случае использования.

Несколько объектов Ingress и хостов —

Ingress-Nginx Ingress поддерживает только один протокол для каждого объекта Ingress; другой вариант — определить два объекта Ingress. Один для HTTP/HTTPS и один для gRPC.

Вход HTTP/HTTPS —

Мой внешний Ingress-Nginx (доступный из-за пределов вашей организации) [* Мне это нужно, потому что мне нужно использовать Okta для SSO [SAML (с Dex)], однако, если это не ваш вариант использования, не создавайте его . ]

Change-ME [Измените приведенные ниже ключевые значения в соответствии с вашей инфраструктурой]

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

> Я использовал секрет, полученный из секретов сертификата Let's Encrypt, и изменил имя секрета хостов tls.

[Вы можете использовать любой сертификат ssl, не обязательно сертификат Let's Encrypt]

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

Внешний Ingress-Nginx с путем 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]

Примечание. Если вы предпочитаете пересылать зашифрованный трафик на POD и завершать TLS на самом сервере gRPC, добавьте аннотацию ingress nginx.ingress.kubernetes.io/backend-protocol: "GRPCS".

в противном случае используйте 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

Почему SSO — единый вход — это процесс проверки подлинности, который позволяет пользователям безопасно получать доступ к нескольким связанным приложениям или системам, используя только один набор учетных данных.

Нажми на меня-

Полное руководство по установке ArgoCD.

ArgoCD High Availability (HA) [готов к производству].

Настройка ArgoCD Окта. <<<< — —

Средство обновления изображений ArgoCD .

Настройка уведомлений ArgoCD Slack

Ресурсные хуки ArgoCD.

Я надеюсь, что вы найдете эту статью поучительной и полезной.

От меня Кофе ← — — — Если вам нравится блог, пожалуйста, хлопните мне в ладоши : ) и подпишитесь на меня, чтобы узнать больше такого контента.

Ваши аплодисменты мотивируют меня продолжать писать такие блоги.