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

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

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

推薦する

エッジコンピューティングの支出は2026年までに3,170億ドルに達する

IDC は、今年最も大きな投資が見られた 3 つのユースケースとして、コンテンツ配信ネットワーク、仮...

Alexaの評判値に基づいてPR価値を予測する

PRとは:PR値の正式名称はPageRank(ページランク)で、2001年9月に米国特許を取得しまし...

人材ネットワークから見たSEO業界の変化と特徴

私は長年タレント ウェブサイトで働いてきましたが、SEO がゼロから有望なものに、独身から裕福なもの...

格安 VPS レンタル: 10 年の経験、海外の格安 VPS レンタル業者のグループを推奨、Alipay での支払いも可能です!

格安 VPS レンタル: ウェブマスターの海外 VPS 使用経験約 10 年に基づき、格安 VPS ...

SonicVPS-6 USD/512 MB RAM/KVM/20 GB HDD/2500 GB フロー

SonicVPS は 2009 年に設立された VPS 業者です。簡単に言うと、buyvm の再販業...

レポート:共同購入サイトの半数が閉鎖

中国電子商取引研究センターが最近発表した「2012年中国オンライン共同購入市場データ監視レポート」に...

分散、高同時実行性、マルチスレッドを区別できますか?

これら 3 つの単語を見ると、分散 = 高い同時実行性 = マルチスレッドと考える人が多いのではない...

Kubernetesを素早く導入する方法

Kubernetes とは何ですか? Kubernetes という単語はギリシャ語に由来し、操舵手...

サーバーハブフリー仮想ホスト 1GSSD/25G トラフィック

serverhub 2回目の無料仮想ホストです。昨年登場した最初の無料仮想ホストは、15G SSDが...

Baibo.comとMSNが共同で中国の求人チャンネルを構築し、求人検索エンジンに転換

5月21日午前、MSN中国と百博ドットコムは本日、戦略的提携に達したと発表した。両者は協力してMSN...

Baiduの検索エンジン最適化技術の変化に関する3年間の経験

今日は愚痴を言います。SEO業務を3年以上やっていますが、ウェブサイトを最適化する方法が分からない気...

Jidong.comのLv Wensheng氏が成功と失敗を振り返る:お金を使いすぎると成長が妨げられる

呂文生記者メモ:最も古い動画サイトの一つである Jidong.com は、まだ大きな成功を収めていな...

GBServers UK - XEN PV/HVM が 50% オフ

gbservers は 2007 年に設立されたイギリスの VPS 業者です。米国と英国に 2 つの...

クラウドコンピューティングのキーテクノロジー「仮想化技術」を探る

企業が成長するにつれて、ビジネスとアプリケーションは増加し続け、IT システムの規模はますます大きく...