Kubernetes内のマイクロサービスにIngressコントローラーNGINXとHAproxyを設定する方法


  1. NGINX Ingressコントローラーのセットアップ:

    • NGINX Ingressコントローラーをデプロイするために、まずNGINX Ingressコントローラーのマニフェストファイルを作成します。以下は、例として使用できるシンプルなマニフェストファイルの一部です。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
      name: my-ingress
      spec:
      rules:
      - host: example.com
       http:
         paths:
         - path: /service1
           pathType: Prefix
           backend:
             service:
               name: service1
               port:
                 number: 80
    • マニフェストファイルを使用してNGINX Ingressコントローラーをデプロイします。

      kubectl apply -f nginx-ingress-controller.yaml
  2. HAproxyのセットアップ:

    • HAproxyをデプロイするために、HAproxyのマニフェストファイルを作成します。以下は、例として使用できるシンプルなマニフェストファイルの一部です。

      apiVersion: v1
      kind: Service
      metadata:
      name: haproxy
      spec:
      selector:
       app: haproxy
      ports:
      - protocol: TCP
       port: 80
       targetPort: 80
      - protocol: TCP
       port: 443
       targetPort: 443
    • マニフェストファイルを使用してHAproxyをデプロイします。

      kubectl apply -f haproxy.yaml
  3. Ingressリソースの設定:

    • マイクロサービスの各Ingressリソースを作成し、適切なパスやホストにマッピングします。以下は、例として使用できるIngressリソースの一部です。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
      name: service1-ingress
      spec:
      rules:
      - host: example.com
       http:
         paths:
         - path: /service1
           pathType: Prefix
           backend:
             service:
               name: service1
               port:
                 number: 80
    • 必要なマイクロサービスのIngressリソースを作成します。

      kubectl apply -f service1-ingress.yaml
  4. サービスのデプロイ:

    • マイクロサービスのデプロイメントとサービスを行います。以下は、例として使用できるマニフェストファイルの一部です。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
      name: service1
      spec:
      replicas: 3
      selector:
       matchLabels:
         app: service1
    • マニフェストファイルを使用してマイクロサービスをデプロイします。

      kubectl apply -f service1-deployment.yaml

これらの手順を実行することで、Kubernetesクラスタ内でマイクロサービスをデプロイし、NGINXとHAproxyを使用してトラフィックをルーティングすることができます。