ArgoCD イングレスのセットアップ

Jan 12 2023
前提条件:- Ingress-Nginx がクラスター内に存在する必要があります。Ingress はさまざまな方法で構成できます。複数の Ingress オブジェクトとホストを作成します。
ArgoCD イングレスのセットアップ

前提条件:-

Ingress-Nginx がクラスター内に存在する必要があります。

Ingress はさまざまな方法で構成できます。複数の Ingress オブジェクトとホストを作成します。

A- 外部からアクセス可能なargocd エンドポイント (シングル サインオンを使用する場合、これは Okta SSO セットアップに必要です)。

[ プライベート Argo CD インストールを使用して Okta SSO をセットアップすることが可能です。この場合、Okta コールバック URL が唯一公開されているエンドポイントです]

B- 内部的にアクセス可能なargocd エンドポイント (プライベート Kubernetes クラスターとポッドにアクセスするには、内部 argocd エンドポイントを使用する必要があります)。

注:ほとんどの場合、ArgoCD を内部アクセス ポイントとして使用する必要があります。その理由は、内部チームが ArgoCD を使用して K8s サービスを展開しているためだと思います。これは私のユースケースでも当てはまります。

複数の Ingress オブジェクトとホスト -

Ingress-Nginx Ingress は、Ingress オブジェクトごとに 1 つのプロトコルのみをサポートします。もう 1 つのオプションは、2 つの Ingress オブジェクトを定義することです。1 つは HTTP/HTTPS 用、もう 1 つは gRPC 用です。

HTTP/HTTPS イングレス -

私の外部 Ingress-Nginx (組織の外部からアクセス可能) [* SSO [SAML (Dex を使用)] に Okta を使用する必要があるため、これが必要でしたが、それがあなたのユースケースではない場合は、作成しないでください。 ]

Change-ME [インフラに従って以下のキー値を変更します]

  • ingressClassName、host、Path、TLS ホスト、TLS シークレット名

> Let's Encrypt 証明書シークレットから取得したシークレットを使用し、TLS ホストの SecretName を変更しました。

[Let's Encrypt 証明書でなくても、任意の SSL 証明書を使用できます]

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

Okta パスを使用した外部 Ingress-Nginx —

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 に転送し、gRPC サーバー自体で TLS を終了する場合は、 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 の理由- シングル サインオンは、ユーザーが 1 セットの資格情報だけを使用して、複数の関連するアプリケーションまたはシステムに安全にアクセスできるようにする認証プロセスです。

クリックしてください-

ArgoCD オールインワン セットアップ ガイド。

ArgoCD 高可用性 (HA) [実稼働対応]。

ArgoCD Okta のセットアップ。<<<< — -

ArgoCD イメージ アップデーター。

ArgoCD Slack 通知のセットアップ

ArgoCD リソース フック。

この記事が教育的で有益であることを願っています。

By me a Coffee ← — — —ブログを気に入っていただけましたら、拍手をお願いします : ) そして、そのようなコンテンツをもっと見るためにフォローしてください。

皆様の拍手がこのようなブログを書き続ける励みになります。