マイクロサービス アーキテクチャの人気に伴い、API ゲートウェイはマイクロサービス アーキテクチャの不可欠な部分として企業からの価値がますます高まっています。 APIゲートウェイは主に外部ファサードとして機能し、エントリポイントを提供し、プロトコル変換、分散負荷分散、セキュリティ認証、API管理などの一連の機能を担います。多くのアプリケーション シナリオにおいて、API ゲートウェイは技術レベルで多くの問題を解決するだけでなく、ビジネス レベルでの迅速な反復や柔軟な拡張などの利点も実現します。
この記事では、Go 言語を使用して Kong ベースの API ゲートウェイを構築する方法 (Kong を使用した API とプラグインの管理、Go 言語と Kong API を使用した Kong 構成の操作など) を紹介します。
1. Kong の概要
Kong は、一連の API 管理およびセキュリティ機能を提供し、さまざまな環境で実行できるオープンソース API ゲートウェイです。主に、ロードバランシング、サービスディスカバリ、ルーティング、認証、認可、電流制限、モニタリング、プラグインなどの管理ツールを提供します。 Kong はプロキシ サーバーとして Nginx を使用し、プラグイン メカニズムを使用して HTTP トラフィックにさまざまな高度な機能を追加します。 Kong のプラグインは必要に応じて有効にできるため、Kong はさまざまな特定のビジネス シナリオやニーズに対応できるため、非常に人気があります。
2. Kong を使用して API とプラグインを管理する
Kong 公式のインストール ガイドを参照して、さまざまなインストール環境を選択できます。 Webサイト。ここでは例として Ubuntu を示します。
$ echo "deb https://kong.bintray.com/kong-deb `lsb_release -sc` main" | sudo tee -a /etc/apt/sources.list $ curl -o bintray.key https://bintray.com/user/downloadSubjectPublicKey?username=bintray $ sudo apt-key add bintray.key $ sudo apt-get update && sudo apt-get install -y kong
インストールが成功すると、Kong 構成ファイルが /etc/kong
ディレクトリに生成されます。
$ kong start
Kong の Admin API を使用して API を管理します。
$ curl -i -X POST --url http://localhost:8001/apis/ --data 'name=helloworld' --data 'uris=/hello' --data 'upstream_url=http://example.com/hello'
上の例では、Admin API を介して helloworld という名前の API を作成し、ルーティング URI は /hello、アップストリーム サーバー アドレスは http://example.com/hello です。 http://localhost :8000/hello にアクセスすると、http://example.com/hello にアクセスできます。
Kong を使用すると、プラグインを簡単に追加でき、API の機能をさらに強化できます。
$ curl -i -X POST --url http://localhost:8001/apis/helloworld/plugins/ --data 'name=key-auth'
上の例では、Admin API を通じて key-auth という名前のプラグインを helloworld API に追加します。このプラグインは、API キーに基づく認証に使用されます。
3. Go 言語と Kong API を使用して Kong 構成を操作する
Admin API を使用して API とプラグインを管理することに加えて、Kong が提供する RESTful API を使用してより詳細な設定を行うこともできます。 -粒度の高いコントロール Kong の内部データ モデルに完全に準拠しており、Admin API よりも便利です。
ここでは Go 言語を使用し、Kong Client SDK と組み合わせて Kong の設定を操作します。
$ go get github.com/Kong/go-kong/kong
conf := kong.Configuration{ KongAdminURL: "http://localhost:8001", // Kong Admin接口地址 KongURL: "http://localhost:8000", // Kong代理服务地址 }
api := &kong.Api{ Name: kong.String("helloworld"), RequestHost: kong.String("example.com"), UpstreamURL: kong.String("http://example.com/hello"), } route := &kong.Route{ Name: kong.String("hello-route"), Paths: kong.StringSlice([]string{"/hello"}), Methods: kong.StringSlice([]string{"GET"}), }
作成後、次のコードを使用してそれらを関連付けることができます:
service, err := kong.CreateServiceWithDefaults(conf, api) // 用默认配置创建Service if err != nil { panic(err) } route, err = kong.CreateRouteWithDefaults(conf, route, service) if err != nil { panic(err) }
このようにして、helloworld という名前のワールドが作成され、ルーティング URI は /hello、アップストリーム サーバー アドレスはhttp:// example.com/hello、GET リクエストを使用してアクセスされたルート。
プラグインの追加も非常に簡単で、ここではユーザー認証用のトークンベースの認証プラグインを追加します。コードは次のとおりです。
plugin := &kong.Plugin{ Name: kong.String("jwt"), Config: kong.Configuration{ "anonymous": "true", }, } route.Plugins = []*kong.Plugin{plugin} _, err = kong.UpdateRouteWithDefaults(conf, route, service) if err != nil { panic(err) }
ここではプラグイン名を jwt として使用するため、JWT 認証を追加できます。ここでは匿名認証を使用します。
概要
この記事では、Go 言語と Kong クライアント SDK を使用して API ゲートウェイを構築するプロセスを紹介します。 Kong を使用すると、API ゲートウェイを迅速に構築し、API とプラグインを管理し、認証や電流制限などの機能を実装できます。 Kong は、Go 言語と Kong クライアント SDK を使用してさらに制御および管理できます。これらのツールにより、API ゲートウェイのスケーラビリティと管理が向上し、マイクロサービスがビジネスにより適切にサービスを提供できるようになります。
以上がGo言語を使用してAPIゲートウェイを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。