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

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

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

推薦する

winnervps-シンガポール/XEN/windows/G ポート/$7/512m メモリ/10gSSD/1T トラフィック

winnervps はインドネシア人によって開設されたようですが、設立された正確な年は不明で、ドメイ...

「斉魯地」で成長企業のビジネスイノベーションが開花

GDPは8兆円を超えており、間違いなく経済大国です。新旧の成長原動力の転換の過程において、彼らは活力...

ニュース: Justhost Dallas VPS が Netflix をサポート、月額 7 元、200M 帯域幅、無制限トラフィック

Justhost の公式スタッフが JustHost フォーラムで最新ニュースを発表しました: 米国...

ページ重量転送ガイダンスについて簡単に説明します

現在、検索エンジンは外部リンクのコントロールをますます厳しくしています。GoogleとBaiduは次...

Chiaマイニングマシン: 537ドル、2*e5-2690v4 (28C/56T)/32gDDR4/23T SSD/10Gbps帯域幅

莫大な利益が得られることから、マイニング(チアマイニング)は最近とても人気があるようです。誰もが大容...

ハイブリッド環境におけるITの可視性を向上

多くの研究機関は、ハイブリッド クラウド環境が今後 5 年以内にエンタープライズ IT の主流になる...

トップクラスのマネージドクラウドサービスプロバイダーの選び方

マネージド クラウド サービス プロバイダー (MCSP) は通常、顧客のクラウド プラットフォーム...

ウェブサイトのユーザーエクスペリエンスを反映する4つの側面

ユーザー エクスペリエンスは、Baidu が Web サイトに与える最も重要な要素となっているため、...

kube-downscaler を使用して Kubernetes クラスターのコストを削減する

導入Kube-downscaler は、Kubernetes でポッド リソースが自動的にスケールダ...

A5論文作成から得た「執筆経験」の分析

世の中のあらゆるものは発展しています。この言葉はまさに真実です。2009 年、Taoke は人気商品...

Googleペンギンアップデートに対処するためのアイデア

ほぼすべての Google アルゴリズムのアップデートは、アフィリエイト マーケターにとって大きな打...

インスタンス分析スナップショットにURLのみが表示され、説明が表示されていない理由

先週の朝、あるネットユーザーからメールを受け取りました。彼のウェブサイトは数か月前からダウンしており...

ウェブマスターがオンラインプロモーションで注意すべきいくつかの詳細

起業の道でまだ奮闘中のウェブマスターの皆さん、私は葉凡喜です。今日は、インターネットで奮闘する道で誰...

素晴らしいもの: virpus-45ドル/E3-1230/16Gメモリ/500x2ハードディスク(フリーraid1)/シアトル

Virpus はサーバーの販売を開始しましたが、驚くことではありません。同社は Wow Techno...