API7 Enterprise Proxy 在 Kubernetes 集群中的应用方式
January 24, 2024
クラウドネイティブ技術が急速に進化する中、Kubernetesは、多くの企業がレジリエントでスケーラブルなアプリケーションを構築するための主要なソリューションとして登場しています。API7 Enterpriseは、セキュリティとトラフィック管理において強力な機能を提供し、優れたパフォーマンスを発揮します。API7 EnterpriseはKubernetesのサービスディスカバリと統合し、Kubernetesクラスター内にデプロイされたアプリケーションのプロキシとして機能します。ここでは、API7 Enterpriseを利用してKubernetesクラスター内のアプリケーションをプロキシするプロセスを探ってみましょう。
前提条件
- API7 Enterpriseをインストールする
注: API7 EnterpriseがKubernetesクラスター内にまだデプロイされていない場合、API7 EEをホストするマシンのネットワーク設定を構成し、Kubernetes環境内のアップストリームポッドにアクセスできるようにしてください。
- 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
- 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サービスレジストリへの接続
-
既存のゲートウェイグループに移動し、左側のメニューからサービスレジストリにアクセスします。
-
サービスレジストリ接続を追加ボタンをクリックします。ディスカバリタイプとしてKubernetesを選択し、Kubernetes APIサービスのアクセスアドレスとトークンを提供します。
- API7 Enterpriseがサービスレジストリへの接続に成功すると、正常なステータスが表示されます。
テスト用サービスの公開
-
サービスページに移動し、新しいサービスを作成して
/anything
ルートを追加します。 -
サービスを公開し、適切なアップストリームを選択します。
- 公開後、
curl
を使用してテストできます。
まとめ
以上、API7 Enterpriseを利用してKubernetesサービスをプロキシする手順について説明しました。API7 Enterpriseの機能についてさらに詳しく知りたい場合は、ぜひお問い合わせください。