API7 Enterprise Proxy 在 Kubernetes 集群中的应用方式

January 24, 2024

Products

クラウドネイティブ技術が急速に進化する中、Kubernetesは、多くの企業がレジリエントでスケーラブルなアプリケーションを構築するための主要なソリューションとして登場しています。API7 Enterpriseは、セキュリティとトラフィック管理において強力な機能を提供し、優れたパフォーマンスを発揮します。API7 EnterpriseはKubernetesのサービスディスカバリと統合し、Kubernetesクラスター内にデプロイされたアプリケーションのプロキシとして機能します。ここでは、API7 Enterpriseを利用してKubernetesクラスター内のアプリケーションをプロキシするプロセスを探ってみましょう。

前提条件

  1. API7 Enterpriseをインストールする

: API7 EnterpriseがKubernetesクラスター内にまだデプロイされていない場合、API7 EEをホストするマシンのネットワーク設定を構成し、Kubernetes環境内のアップストリームポッドにアクセスできるようにしてください。

  1. Kubernetesにサービスをデプロイする

Kubernetesにすでにサービスをデプロイしている場合は、このステップをスキップできます。そうでない場合は、以下のコマンドを実行してサービスを作成します。

# 新しい名前空間を作成
kubectl create namespace api7ee

kubectl create deployment httpbin --image=kennethreitz/httpbin:latest -n api7ee
kubectl create service clusterip httpbin --tcp=80:80 -n api7ee
  1. Kubernetesサービスアカウントを作成する
  • API7 Enterpriseは、Kubernetes APIにアクセスし、アップストリーム設定を取得するためにこの認証情報を利用します。そのため、まずRBACリソースを作成する必要があります。以下は具体的なYAMLファイルの設定です。

      # rbac.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: api7-k8s-sd-watcher
      rules:
        - apiGroups: [""]
          resources: ["endpoints"]
          verbs: ["list", "watch"]
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: api7-k8s-sd-watcher-binding
      subjects:
        - kind: ServiceAccount
          name: api7-k8s-sd-sa
          namespace: api7ee
      roleRef:
        kind: ClusterRole
        name: api7-k8s-sd-watcher
        apiGroup: rbac.authorization.k8s.io
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: api7-k8s-sd-sa
        namespace: api7ee
      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: api7-k8s-sd-secret
        namespace: api7ee
        annotations:
          kubernetes.io/service-account.name: api7-k8s-sd-sa
      type: kubernetes.io/service-account-token
    
    
  • RBACリソースを作成し、トークンを取得します。

    kubectl apply -f rbac.yaml -n api7ee
    kubectl get secrets api7-k8s-sd-secret -n api7ee -ojsonpath='{.data.token}' | base64 -d
    

API7 EnterpriseでのKubernetesサービスディスカバリの実装

Kubernetesサービスレジストリへの接続

  1. 既存のゲートウェイグループに移動し、左側のメニューからサービスレジストリにアクセスします。

  2. サービスレジストリ接続を追加ボタンをクリックします。ディスカバリタイプとしてKubernetesを選択し、Kubernetes APIサービスのアクセスアドレスとトークンを提供します。

PA_1

  1. API7 Enterpriseがサービスレジストリへの接続に成功すると、正常なステータスが表示されます。

PA_2

テスト用サービスの公開

  1. サービスページに移動し、新しいサービスを作成して/anythingルートを追加します。

  2. サービスを公開し、適切なアップストリームを選択します。

PA_3

  1. 公開後、curlを使用してテストできます。

まとめ

以上、API7 Enterpriseを利用してKubernetesサービスをプロキシする手順について説明しました。API7 Enterpriseの機能についてさらに詳しく知りたい場合は、ぜひお問い合わせください

Tags: