---
title: "Amazon EKSとAPISIX Ingress Controllerが連携して複雑なトラフィックを管理する仕組み - API7.ai"
description: "背景 作为一名流量管理者，有时即使你已经做好了准备，面对..."
url: "https://api7.ai/ja/blog/how-amazon-eks-and-apisix-ingress-controller-work-together-to-manage-complex-traffic"
---

[Blog](https://api7.ai/ja/blog)

[Products](https://api7.ai/ja/category/products)[Technology](https://api7.ai/ja/category/technology)[Ecosystem](https://api7.ai/ja/category/ecosystem)[Case Study](https://api7.ai/ja/category/usercase)[Team & Community](https://api7.ai/ja/category/community)

Search

⌘ + K

[Blog](https://api7.ai/blog)

Ecosystem

# Amazon EKSとAPISIX Ingress Controllerが連携して複雑なトラフィックを管理する仕組み

API7.ai

February 7, 2021

[Ecosystem](https://api7.ai/category/ecosystem)

## 背景

トラフィックマネージャーとして、予期せぬ事態に備えていても、予期せぬ事態を止めるのは難しいものです。四方向のAPIゲートウェイを構築することが重要です！今日、**Amazon EKS + Ingress APISIX!** がそれをどのように支援できるかを紹介します。

## はじめに

Kubernetesは、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するためのオープンソースシステムです。**Amazon Elastic Kubernetes Service (Amazon EKS) は、マネージドKubernetesサービスとして、コントロールプレーンやノードのインストールやメンテナンスを必要とせずに、Amazon Cloud Technologies上でKubernetesのワークロードを簡単に実行できます。**

**Apache APISIXは、動的でリアルタイム、高性能なAPIゲートウェイです。ロードバランシング、動的なアップストリーム、グレースケールデプロイメント、トラフィックセグメンテーション、認証、可観測性などの豊富なトラフィック管理機能を提供します。** Apache APISIXを使用して、従来のクライアントとサーバー間の南北トラフィックや、サービス間の東西トラフィックを処理できます。

Ingress APISIXは、Kubernetesのエントリーコントローラーとして使用でき、Apache APISIXの優れた機能をKubernetesに導入します。これは、設計されたControllerコンポーネントによって駆動され、複雑なトラフィック管理のニーズを満たすのに役立ちます。

![apisix-ingress-controller technical architecture](https://static.api7.ai/2022/10/03/633a43ffbc48b.jpg?imageMogr2/format/webp)

## Amazon Elastic Kubernetes ServiceでIngress APISIXを設定して実行する方法

### **前提条件**

実行する前に、Amazon CloudTech上で利用可能なAmazon EKSクラスターを設定してください。

自身の環境にkubectlツールを用意し、以下のコマンドを実行してコンテキストを自身のAmazon EKSクラスターに設定してください：

```
aws eks update-kubeconfig --name  --region
```

Kubernetesクラスターが準備できたら、`ingress-apisix`という名前の名前空間を作成します。ここに、使用されるすべてのリソースが作成されます。

```
kubectl create namespace ingress-apisix
```

Ingress APISIXのすべてのコンポーネント（Apache APISIXとapisix-ingress-controller）をデプロイするためにHelmを使用しますので、[インストールガイド](https://helm.sh/docs/intro/install/)に従ってHelmをインストールしてください。Apache APISIXとapisix-ingress-controllerのHelmチャートは、[apache/apisix-helm-chart](https://github.com/apache/apisix-helm-chart)と[apache/apisix-ingress-controller](https://github.com/apache/apisix-ingress-controller)にあります。これらのパスをクローンして、対応するチャートを取得してください。

### **Apache APISIXのインストール**

Apache APISIXは、apisix-ingress-controllerのプロキシプレーンとして機能し、事前にデプロイする必要があります。

```
cd /path/to/apisix-helm-chart
helm repo add bitnami https://charts.bitnami.com/bitnami
helm dependency update . /chart/apisix
helm install apisix . /chart/apisix \
  --set gateway.type=LoadBalancer \
  --set allow.ipList="{0.0.0.0/0}" \
  --namespace ingress-apisix
kubectl get service --namespace ingress-apisix
```

上記のコマンドは、実際のトラフィックを処理する`apisix-gateway`と、すべての設定変更を処理するコントロールプレーンとして機能する`apisix-admin`という2つのKubernetes Serviceリソースを作成します。ここでは、`apisix-gateway`をLoadBalancerタイプのサービスとして作成し、Amazon Network Load Balancerの助けを借りてインターネットに公開できます。以下のコマンドでロードバランサーのホスト名を見つけることができます：

```
kubectl get service apisix-gateway \
--namespace ingress-apisix \
-o jsonpath='{.status.loadBalancer.ingress[].hostname}'
```

また、注意点として：`allow.ipList`フィールドは、自身のAmazon EKSクラスターのEKS CIDR範囲に合わせて調整する必要があります。これにより、apisix-ingress-controllerがApache APISIXによってライセンスされるようになります（リソースをプッシュするため）。

他の要件がある場合は、[value.yaml](https://github.com/apache/apisix-helm-chart/blob/master/charts/apisix/values.yaml)を参照して、すべての設定項目についてさらに情報を確認してください。

### **apisix-ingress-controllerのインストール**

Apache APISIXのデプロイが成功したら、Controllerコンポーネントをインストールします。

```
cd /path/to/apisix-ingress-controller
# 基本リソースをインストールします。例：ServiceAccount。
helm install ingress-apisix-base -n ingress-apisix . /charts/base
# apisix-ingress-controllerをインストールします。
helm install ingress-apisix . /charts/ingress-apisix \
  --set ingressController.image.tag=dev \
  --set ingressController.config.apisix.baseURL=http://apisix-admin:9180/apisix/admin \
  --set ingressController.config.apisix.adminKey={YOUR ADMIN KEY} \
  --namespace ingress-apisix
```

`ingress-apisix-base`チャートは、apisix-ingress-controllerの基本的な依存関係（例：ServiceAccountとその専用のCRD）をインストールします。

`ingress-apisix`チャートは、Controller自体のインストールをガイドします。イメージタグを希望のリリースに変更し、上記のコマンドで`ingressController.config.apisix.adminKey`の値を変更できます。これらの設定は、実際のシナリオに応じて調整できます（ここで使用するAdminキーが、Apache APISIXのデプロイで使用したキーと同じであることを確認してください）。他の要件がある場合は、value.yamlを参照して、すべての設定項目についてさらに情報を確認してください。

次に、**Amazon EKSコンソール**を開き、クラスターを選択してWorkloadsタブをクリックすると、Apache APISIXのすべてのPod、etcd、およびapisix-ingress-controllerが準備されていることがわかります。

### **テストを開始する**

この時点で、Ingress APISIXのすべてのコンポーネントをデプロイしましたので、すべてが正しく動作していることを確認してください。次に、httpbinサービスをデプロイし、Apache APISIXに「local.httpbin.org」ホストへのすべてのリクエストをこのサービスにルーティングするように依頼します。

これを行うには、まずhttpbinワークロードを作成し、公開する必要があります。

```
kubectl run httpbin --image kennethreitz/httpbin --port 80
kubectl expose pod httpbin --port 80
```

Apache APISIXがリクエストを正しくルーティングするためには、ApisixRouteリソースを作成してプロセスを駆動する必要があります。

```
# ar-httpbin.yaml
apiVersion: apisix.apache.org/v1
kind: ApisixRoute
metadata:
  name: httpserver-route
spec:
  rules:
  - host: local.httpbin.org
    http:
      paths:
      - backend:
          serviceName: httpbin
          servicePort: 80
        path: /*
```

上記のApisixRouteリソースにより、Apache APISIXは「local.httpbin.org」というホストヘッダーを持つリクエストをhttpbinバックエンド（先ほど作成したもの）にルーティングします。

この設定を適用しますが、サービスとApisixRouteリソースは同じ名前空間に配置する必要があり、apisix-ingress-controllerは名前空間を跨ぐことができないことに注意してください。

```
kubectl apply -f ar-httpbin.yaml
```

Apache APISIXサービスに到達できる場所から、簡単なcurlコールで結果をテストします。

```
$ curl http://{apisix-gateway-ip}:{apisix-gateway-port}/headers -s -H 'Host: local.httpbin.org'

{
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.64.1",
    "X-Amzn-Trace-Id": "Root=1-5ffc3273-2928e0844e19c9810d1bbd8a"
  }
}
```

ServiceタイプがClusterIPの場合、Amazon EKSクラスター内のPodにログインし、ClusterIPまたはService FQDNを使用してApache APISIXにアクセスする必要があります。すでに公開されている場合（NodePortまたはLoadBalancerとして公開されている場合）、到達可能な外部エンドポイントに直接アクセスできます。

注：この記事はawsのWeChat公式サイトから転載されています。

Tags:

[APISIX Ingress Controller](https://api7.ai/tags/apisix-ingress-controller)

[AWS](https://api7.ai/tags/aws)

[Traffic Management](https://api7.ai/tags/traffic-management)

Share article link

Share

Related Posts

[![AWS Graviton3のパフォーマンスはどうなのか？](https://static.api7.ai/uploads/2023/01/12/I6dWwBSn_aws.png)](https://api7.ai/blog/installation-and-performance-testing-of-api-gateway-apache-apisix-on-aws-graviton3)

## [AWS Graviton3のパフォーマンスはどうなのか？](https://api7.ai/blog/installation-and-performance-testing-of-api-gateway-apache-apisix-on-aws-graviton3)

[![Apache APISIX Ingress Controller 中的流量分割](https://static.api7.ai/uploads/2024/09/06/4ZG5lbPP_Traffic%20Split.png)](https://api7.ai/blog/traffic-split-in-apache-apisix-ingress-controller)

## [Apache APISIX Ingress Controller 中的流量分割](https://api7.ai/blog/traffic-split-in-apache-apisix-ingress-controller)

Table of Contents

- [背景](#%E8%83%8C%E6%99%AF)

- [はじめに](#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB)

- [Amazon Elastic Kubernetes ServiceでIngress APISIXを設定して実行する方法](#amazon-elastic-kubernetes-service%E3%81%A7ingress-apisix%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)

  - [**前提条件**](#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6)
  - [**Apache APISIXのインストール**](#apache-apisix%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
  - [**apisix-ingress-controllerのインストール**](#apisix-ingress-controller%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
  - [**テストを開始する**](#%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E9%96%8B%E5%A7%8B%E3%81%99%E3%82%8B)

## Related Posts

[![APISIX Ingress Controller と AWS ACM の使用](https://static.api7.ai/uploads/2024/12/25/dCJQYedL_apisix-aws-certificate-manager.png)](https://api7.ai/ja/blog/using-apisix-ingress-with-aws-acm)

Ecosystem

December 30, 2022

#### [APISIX Ingress Controller と AWS ACM の使用](https://api7.ai/ja/blog/using-apisix-ingress-with-aws-acm)

APISIX Ingress Controller が AWS ACM と連携し、Kubernetes で TLS 証明書を終端するための2つの設定方法（NLB と Ingress）について学びましょう。

[APISIX Ingress Controller](https://api7.ai/tags/apisix-ingress-controller)

[AWS](https://api7.ai/tags/aws)

[Kubernetes](https://api7.ai/tags/kubernetes)

[![使用APISIX Ingress Controller和Flagger实现平滑的Canary发布](https://static.api7.ai/uploads/2024/12/24/cvXqlz1e_apisix-flagger.png)](https://api7.ai/ja/blog/apisix-ingress-and-flagger-smooth-canary-release)

Ecosystem

January 19, 2023

#### [使用APISIX Ingress Controller和Flagger实现平滑的Canary发布](https://api7.ai/ja/blog/apisix-ingress-and-flagger-smooth-canary-release)

Apache APISIX Ingress Controller と Flagger を組み合わせることで、スムーズなカナリアリリースを実現し、リリース効率を向上させ、リリースリスクを低減することができます。

[APISIX Ingress Controller](https://api7.ai/tags/apisix-ingress-controller)

[Flagger](https://api7.ai/tags/flagger)

[![从Traefik到APISIX，地平线机器人在Ingress Controller中的探索](https://static.api7.ai/uploads/2023/09/19/iywAV6td_20230919-103358.jpeg)](https://api7.ai/ja/blog/why-horizon-robotics-migrated-from-traefik-to-apche-apisix)

Ecosystem

October 10, 2022

#### [从Traefik到APISIX，地平线机器人在Ingress Controller中的探索](https://api7.ai/ja/blog/why-horizon-robotics-migrated-from-traefik-to-apche-apisix)

Horizon Robotics（地平线机器人），一家汽车AI计算公司，为了确保业务的高效性，从Traefik迁移到了APISIX作为Ingress Controller。

[APISIX Ingress Controller](https://api7.ai/tags/apisix-ingress-controller)

[Comparison to Competitors](https://api7.ai/tags/comparison-to-competitors)

[Artificial Intelligence](https://api7.ai/tags/artificial-intelligence)
