著者は、 Write for DOnations プログラムの一環として、 Free and Open SourceFundを選択して寄付を受け取りました。

序章

Ambassador は、クラウドネイティブアプリケーション用のAPIゲートウェイであり、異種サービス間でトラフィックをルーティングし、分散型ワークフローを維持します。 単一のエントリポイントとして機能し、サービスディスカバリ、構成管理、ルーティングルール、レート制限などのタスクをサポートします。 それはあなたのサービスに大きな柔軟性と設定の容易さを提供します。

Envoy は、クラウドネイティブアプリケーション向けに設計されたオープンソースのサービスプロキシです。 Kubernetesでは、Ambassadorを使用してEnvoy構成をインストールおよび管理できます。 Ambassadorは、ダウンタイムなしの構成変更と、認証、サービスディスカバリ、サービスメッシュなどの他の機能との統合をサポートします。

このチュートリアルでは、Helmを使用してKubernetesクラスターにAmbassador API Gatewayをセットアップし、ルーティングルールに基づいて着信トラフィックをさまざまなサービスにルーティングするように構成します。 ホスト名または関連するサービスへのパスに基づいてトラフィックをルーティングするように、これらのルールを構成します。

前提条件

このガイドを開始する前に、次のものが必要です。

ステップ1—アンバサダーのインストール

このセクションでは、KubernetesクラスターにAmbassadorをインストールします。 Ambassadorは、Helmチャートを使用するか、YAML構成ファイルをkubectlコマンドに渡すことでインストールできます。

注:DigitalOceanKubernetesではデフォルトでRBACが有効になっているため、インストールにYAML構成ファイルを使用する場合は、RBACが有効な構成ファイルを使用する必要があります。 Ambassadorのドキュメントで、YAMLを介したAmabassadorのKubernetesへのデプロイの詳細を確認できます。

このチュートリアルでは、 Helm チャートを使用して、Ambassadorをクラスターにインストールします。 前提条件を満たしたら、Helmをクラスターにインストールします。

まず、次のコマンドを実行して、Helm経由でAmbassadorをインストールします。

  1. helm upgrade --install --wait ambassador stable/ambassador

次のような出力が表示されます。

Output
Release "ambassador" does not exist. Installing it now. NAME: ambassador LAST DEPLOYED: Tue Jun 18 02:15:00 2019 NAMESPACE: default STATUS: DEPLOYED RESOURCES: ==> v1/Deployment NAME READY UP-TO-DATE AVAILABLE AGE ambassador 3/3 3 3 2m39s ==> v1/Pod(related) NAME READY STATUS RESTARTS AGE ambassador-7d55c468cb-4gpq9 1/1 Running 0 2m38s ambassador-7d55c468cb-jr9zr 1/1 Running 0 2m38s ambassador-7d55c468cb-zhm7l 1/1 Running 0 2m38s ==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ambassador LoadBalancer 10.245.183.114 139.59.52.164 80:30001/TCP,443:31557/TCP 2m40s ambassador-admins ClusterIP 10.245.46.43 <none> 8877/TCP 2m41s ==> v1/ServiceAccount NAME SECRETS AGE ambassador 1 2m43s ==> v1beta1/ClusterRole NAME AGE ambassador 2m41s ==> v1beta1/ClusterRoleBinding NAME AGE ambassador 2m41s ==> v1beta1/CustomResourceDefinition NAME AGE authservices.getambassador.io 2m42s consulresolvers.getambassador.io 2m41s kubernetesendpointresolvers.getambassador.io 2m42s kubernetesserviceresolvers.getambassador.io 2m43s mappings.getambassador.io 2m41s modules.getambassador.io 2m41s ratelimitservices.getambassador.io 2m42s tcpmappings.getambassador.io 2m41s tlscontexts.getambassador.io 2m42s tracingservices.getambassador.io 2m43s . . .

これにより、Kubernetesクラスターノードが接続されたAmbassadorデプロイメント、サービス、およびロードバランサーが作成されます。 ドメインのAレコードにマップするには、ロードバランサーのIPが必要です。

アンバサダーロードバランサーのIPアドレスを取得するには、次のコマンドを実行します。

  1. kubectl get svc --namespace default ambassador

次のような出力が表示されます。

Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ambassador LoadBalancer your_cluster_IP your-IP-address 80:30001/TCP,443:31557/TCP 8m4s

この手順で外部IPyour-IP-addressをメモし、ドメインを(ドメインプロバイダー経由で)svc1.your-domainsvc2.your-domain、およびsvc3.your-domainをマップしてこのIPアドレスを指すようにします。 。

SSLターミネーションの構成方法に記載されている手順を使用して、DigitalOceanロードバランサーでHTTPSを有効にできます。 ロードバランサーを介してTLSターミネーションを構成することをお勧めします。 TLSターミネーションを設定する別の方法は、AmbassadorのTLSサポートを使用することです。

Helmを使用してKubernetesクラスターにAmbassadorをインストールしました。これにより、デフォルトの名前空間に3つのレプリカを持つAmbassadorデプロイメントが作成されました。 これにより、すべてのトラフィックをAPIGatewayにルーティングするためのパブリックIPを備えたロードバランサーも作成されました。 次に、このAPIゲートウェイのテストに使用する3つの異なるサービスのKubernetesデプロイを作成します。

ステップ2—Webサーバー展開のセットアップ

このセクションでは、3つの異なるWebサーバーコンテナーを実行するための3つのデプロイメントを作成します。 3つの異なるウェブサーバーコンテナのKubernetesデプロイの定義を使用してYAMLファイルを作成し、kubectlを使用してデプロイします。

好みのテキストエディタを開いて、NginxWebサーバーの最初のデプロイメントを作成します。

  1. nano svc1-deploy.yaml

ファイルに次のyaml構成を入力します。

svc1-deploy.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: svc1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
      name: svc1
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: nginx
        name: svc1
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - name: http
          containerPort: 80

ここでは、[X118X]