Kubernetes にクラウドネイティブ マイクロサービス ゲートウェイ APISIX を迅速にデプロイする方法

Kubernetes にクラウドネイティブ マイクロサービス ゲートウェイ APISIX を迅速にデプロイする方法

1. 一般的なゲートウェイの比較

  • C言語で開発されたモジュール式リバースプロキシソフトウェアNginx
  • NginxベースのWeb開発プラットフォームであるOpenRestyは、Luaスクリプトを解析して実行できます。
  • OpenRestyのアプリケーションであるKongは、API管理とリクエストプロキシ機能を備えたAPIゲートウェイであり、ストレージにはPostgreSQLを使用しています。
  • APISIX は、Nginx のコアライブラリ実装に基づいて、Kong の PostgreSQL を Etcd に置き換えます。

APISIX の利点は、API 管理および拡張機能が提供されるため、ゲートウェイが単なる転送サービスではなく、構成およびカスタマイズできることです。 Nginx と比較して、APISIX は動的ルーティングを使用するため、構成後に再ロードするリスクを回避できます。同時に、APISIX は HTTP(S)、HTTP2、Dubbo、QUIC、MQTT、TCP/UDP などのより多くのプロトコルをサポートし、より優れた使用エコシステムを備えています。

上記はAPISIXのアーキテクチャ図です。データ プレーンはクライアント要求を処理し、コントロール プレーンはルーティングを管理します。

2. APISIX はどのような問題を解決できますか?

  • エッジルーティング

コンピュータ室で外部に公開されるアクセスエントリ IP アドレスの数は、通常は非常に少ないですが、多くのサービスをサポートします。たとえば、アクセス IP は 1.2.3.4 ですが、同時に a.domain.com と b.domain.com へのアクセス サービスを提供します。これには、異なるドメイン名からのアクセスを異なるイントラネット アドレスに転送するエッジ ルーティングの使用が必要です。

APISIX でエッジ ルーティングを登録する方法は、ダッシュボード、イングレス コントローラー、管理 API の 3 つがあります。

  • 基本的なゲートウェイ機能

ゲートウェイの機能はトラフィックの転送に限定されません。さらに重要なのは、電流制限と回路遮断が含まれることです。

APISIX には、APM、ログ記録、回路遮断、認証、証明書管理、フォールト インジェクションなどの機能を提供する多くの組み込みプラグインがあります。同時に、新しいプラグインのドラッグ アンド ドロップや、ビジネス ニーズに合わせた新しいプラグインの開発もサポートしています。

  • サーバーレス

APISIX はプラグイン経由で Serverless を提供し、現在は Lua のみをサポートしています。しかし、APIGateway + Serverless の組み合わせは非常に想像力に富んでいます。

サーバーレスを使用すると、サーバーレス API を外部に迅速に提供したり、さまざまなサービスを結合したり、機能的なサービスを外部に直接提供したりできます。

  • グレースケールリリース

ゲートウェイ層が制御されるため、APISIX では、グレースケール リリースに使用できる重みを設定することで、トラフィックの転送動作をユーザーが制御できます。

3. KubernetesにAPISIXをインストールする

(1)Helmソースを追加する

  • Helmリポジトリを追加する
  1. $ helm リポジトリに apisix を追加します https://charts.apiseven.com  
  2. $ helm リポジトリの更新
  • チャートパッケージを見つける
  1. $ helm リポジトリ apisix を検索 
  2. 名前 チャートバージョン アプリバージョン 説明 
  3. apisix/apisix 0.3.5 2.7.0 Apache APISIX 用の Helm チャート 
  4. apisix/apisix-dashboard 0.1.5 2.7.0 Apache APISIX ダッシュボード用の Helm チャート 
  5. apisix/apisix-ingress-controller 0.5.0 1.0.0 Kubernetes 用 Apache APISIX Ingress コントローラー

(2)APISIXをインストールする

  • APISIXのインストール
  1. $ helm install apisix apisix/apisix --set gateway.type = NodePort --set admin.allow.ipList = "{0.0.0.0/0}" -n apisix --create-namespace
  • エントリーアドレスを表示
  1. $ エクスポートNODE_PORT =$(kubectl get --namespace apisix -o jsonpath = "{.spec.ports[0].nodePort}" services apisix-gateway)  
  2. $ エクスポートNODE_IP =$(kubectl get nodes --namespace apisix -o jsonpath = "{.items[0].status.addresses[0].address}" )  
  3. $ echo http://$NODE_IP:$NODE_PORT  
  4. http://1.1.1.1:32462

ここでのエントリ アドレスは、バックエンド サービスのエントリ アドレスです。実稼働環境の場合は、LoadBalancer によって提供されるアドレスを使用する必要があります。

  • apisix-adminインターフェースキーを表示する
  1. $ export POD_NAME =$(kubectl get pods --namespace apisix -l "app.kubernetes.io/インスタンス= apisix 、app.kubernetes.io/名前=apisix " -o jsonpath=" {.items[0].metadata.name}")
  2. $ kubectl -n apisix exec -it $POD_NAME cat conf/config.yaml |grep キー 
  3. 管理者キー:  
  4. キー: edd1c9f034335f136f87ad84b625c8f1  
  5. キー: 4054f7cf07e344346cd3f287985e76a2

最初のキーは admin で、2 番目のキーは viewer です。ここでのキーは、管理 API を介して APISIX を構成するために使用でき、他のシステムが APISIX を統合するためのエントリ ポイントを提供します。

(3)ダッシュボードをインストールする

  • ダッシュボードをインストール
  1. $ helm install apisix-dashboard apisix/apisix-dashboard -n apisix --create-namespace

デフォルトのアカウントはadminです。デフォルトのパスワードはadminです。

  • ダッシュボード アクセス ポータルを表示
  1. $ エクスポートNODE_PORT =$(kubectl get --namespace apisix -o jsonpath = "{.spec.ports[0].nodePort}" services apisix-gateway)  
  2. $ エクスポートNODE_IP =$(kubectl get nodes --namespace apisix -o jsonpath = "{.items[0].status.addresses[0].address}" )  
  3. $ echo http://$NODE_IP:$NODE_PORT  
  4. http://1.1.1.1:31501

(4) ingress-controllerをインストールする

  • ingress-controllerをインストールする
  1. $ helm install apisix-ingress-controller apisix/apisix-ingress-controller --set config.apisix.baseURL = http ://apisix-admin:9180/apisix/admin --set config.apisix.adminKey = edd1c9f034335f136f87ad84b625c8f1 -n apisix

ここで、上記で取得した管理者キーを設定する必要があります。実際、ingress-controller は管理 API を呼び出してルーティングも構成します。

4. サービステストを作成する

前述のとおり、APISIX は管理 API を通じてルーティングを構成し、操作方法は 3 つあります。ここでは主にダッシュボードと Ingress の使用を確認します。

  • サービスの作成
  1. $ kubectl デプロイメント Web を作成します--image = gcr .io/google-samples/hello-app:1.0
  • サービスの公開
  1. $ kubectl デプロイメント Web を公開--type = NodePort   --ポート= 8080  
  • サービスを見る

$ kubectl ウェブサービスを取得

名前 タイプ クラスター IP 外部 IP ポート 年齢

webNodePort 10.233.58.113 <なし> 8080:30572/TCP 28d

(1)ダッシュボード設定ルーティング

  • 新しいアップストリームサービスを作成する

ここで、上で作成したクラスター アクセス アドレスを入力する必要があります: web.default.svc.cluster.local

  • 新しいルートを作成する

「次へ」をクリックした後、上記で作成したサービス Web を選択すると、関連するパラメータが自動的に入力されます。

  • アクセステスト

(2)イングレス構成ルーティング

  • ApisixRouteルートを作成する

ここでは ingress-controller コンポーネントがデプロイされていますが、使用時に ApisixRoute オブジェクトが作成されます。

  1. apiバージョン: apisix.apache.org/v1  
  2. 種類: ApisixRoute  
  3. メタデータ:  
  4. 名前: ウェブルート 
  5. 仕様:  
  6. http:  
  7. - 名前: ウェブ 
  8. マッチ:  
  9. ホスト:  
  10. - dev4.chenshaowen.com  
  11. パス:  
  12. - "/router-web/*"  
  13. バックエンド:  
  14. サービス名: web  
  15. サービスポート: 8080
  • アクセステスト

  • 作成されたルートを表示する

ルーティングは ingress-controller によって引き継がれ、手動で編集する必要がないことがわかります。

  • サービスを見る

サービスは主に 4 つのバックエンドによって提供されていることがわかります。

  • サービスポッドのIPを表示する
  1. $ kubectl get pod -o ワイド 
  2. 名前 準備完了 ステータス 再起動 年齢 IP ノード 指名ノード 準備完了 ゲート 
  3. web-79d88c97d6-2sdlj 1/1 実行中 0 27d 10.233.105.34 node4 <なし>             <なし>    
  4. web-79d88c97d6-7bfbb 1/1 実行中 0 27d 10.233.105.32 node4 <なし>             <なし>    
  5. web-79d88c97d6-hccqk 1/1 実行中 0 27d 10.233.105.33 node4 <なし>             <なし>    
  6. web-79d88c97d6-mh9gz 1/1 実行中 0 28d 10.233.105.22 node4 <なし>             <なし>  

APISIX は、サービス経由で転送せずに、ポッドの IP アドレスをトラフィック バックエンドとして直接使用します。これは、Kubernetes のサービス転送および負荷分散メカニズムとは異なります。

5. まとめ

この記事では、いくつかのゲートウェイの違いを簡単に説明し、APISIX がどのような問題の解決に役立つかを考え、最後に Kubernetes でそれを実践します。内容は以下のとおりです。

  • APISIXは、NginxネットワークライブラリをベースにしたAPIゲートウェイアプリケーションで、Etcdをストレージバックエンドとして使用します。
  • APISIX はエッジ ルーターとして使用できます。その動的特性により、Nginx のリロードによって発生するジッターを回避します。
  • APISIXは管理API管理ルーティングを提供し、それを構成するには3つの方法があります。
  • KubernetesのAPISIXはKubernetes Serviceをスキップし、トラフィックをPod IPに直接転送します。

6. 参考

  • https://github.com/apache/apisix
  • https://bbs.huaweicloud.com/blogs/125686
  • https://github.com/apache/apisix-ingress-controller/blob/master/docs/en/latest/concepts/apisix_route.md

<<:  クラウド ストレージ サービス: 大規模データ ストレージと管理への新しいアプローチ

>>:  サンライフファイナンシャル、デジタルサービスの変革に向けた長期戦略クラウドプロバイダーとしてアマゾンウェブサービスを選択

推薦する

GDPR に備えてクラウド導入を準備するための 4 つのベスト プラクティス

[51CTO.com クイック翻訳] システム監査やプロアクティブなセキュリティなど、あらゆるレベル...

検索エンジンはどのようにしてウェブサイトのユーザーエクスペリエンスを判断するのでしょうか?

検索エンジンがウェブサイトのユーザー エクスペリエンスをどのように判断するかについて、私と同じように...

ダンダンの没落:度重なる機会の喪失と夫婦間の牽制と均衡の欠如

文/ジン・メイ中国の「アマゾン」、米国株式市場に上場した初のB2C企業、時価総額が4分の3に縮小、上...

現在ウェブサイトのランキングに影響を与える重要な要素の分析

Baidu アルゴリズムの継続的なアップグレードにより、現在のウェブサイト最適化は以前とは異なります...

オリジナル記事だけがランキングの基準ではない

最近、「自分のオリジナル記事は1位にならないのに、転載された自分の記事は1位になる」という声が増えて...

テクノロジー界の新たなスター、エッジコンピューティングは、クラウドコンピューティングの「終焉の兆し」となるのでしょうか?

「コンピューティングは中心からエッジへと移行している」、「コンピューティングは周辺化されている」.....

Kubernetes の高度なデプロイメント戦略

最新のアプリケーション テクノロジーの分野では、コンテナ オーケストレーション プラットフォームによ...

SMO は SEO よりも効果的ですか?

SEO の概念と技術の人気が高まるにつれて、SEO の競争はますます激しくなっています。「何千もの軍...

Rabbit High Defense CDN: (無料版あり) DDoS に対する高い防御力、CC 防御、申請不要、あらゆる業界へのアクセス、香港 CN2 を含む大規模なノード

「湖北ラビットクラウドテクノロジー株式会社」は、主にエンタープライズレベルのクラウドプラットフォーム...

タオバオ、ショッピングガイドウェブサイトの禁止を強化:アカウントログイン機能を廃止

淘宝網が美麗碼と莫谷街へのログイン機能を廃止した後、この2つのソーシャル電子商取引プラットフォームは...

クラウドへの効果的な移行のための 7 つのヒント

[[358359]]調査会社ガートナーは、適切な戦略を採用しないと、クラウド プラットフォームに移行...

ウェブサイトネットワークプロモーションを成功させる方法

インターネットの急速な発展に伴い、オンラインマーケティングにおける競争はますます激しくなっています。...

ネットワークブランドを構築し、ネットワークマーケティングの効率を向上

現在、ブランド認知は徐々に企業のマーケティングに組み込まれています。ブランドは独立した部分ではなく、...

justhost UK VPS はいかがでしょうか?内部環境の測定データの共有

justhost.asia は英国ロンドンにデータセンターを開設し、英国 VPS サービスを提供して...

rootnerds: 日本直営 VPS、5.49 ユーロ/メモリ 1g/ハードディスク 50g/日本 Verizon 回線

rootnerdsは、専用サーバーやVPS事業を主に運営するHostRoyale Technolog...