第2章 Skupper Hello World
Skupper を使用して Kubernetes クラスター全体にデプロイされた最小限の HTTP アプリケーション
この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。
概要
この例は、Skupper を使用して Kubernetes クラスター全体にデプロイされた非常にシンプルなマルチサービス HTTP アプリケーションです。
これには 2 つのサービスが含まれます。
-
/api/hello
エンドポイントを公開するバックエンドサービス。これは、Hi, <your-name>.I am <my-name> (<pod-name>)
という形式のあいさつを返します。 - フロントエンドサービス。バックエンドにあいさつを送信し、応答として新しい挨拶を取得します。
Skupper を使用すると、バックエンドを 1 つのクラスターに配置し、フロントエンドを別のクラスターに配置して、バックエンドをパブリックインターネットに公開することなく、2 つのサービス間の接続を維持できます。
手順
- この例のリポジトリーのクローンを作成する
- Skupper コマンドラインツールをインストールする
- クラスターを設定する
- フロントエンドとバックエンドをデプロイする
- サイトを作成する
- サイトをリンクする
- バックエンドを公開する
- この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
Skupper コマンドラインツールをインストールします。
この例では、Skupper コマンドラインツールを使用して Skupper をデプロイします。開発環境ごとに
skupper
コマンドを 1 回だけインストールする必要があります。CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。
sudo dnf install skupper-cli
クラスターを設定します。
Skupper は複数の Kubernetes クラスターで使用するように設計されています。
skupper
コマンドとkubectl
コマンドは、kubeconfig と現在のコンテキストを使用して、動作するクラスターと名前空間を選択します。kubeconfig はホームディレクトリーのファイルに保存されます。
skupper
およびkubectl
コマンドは、KUBECONFIG
環境変数を使用してこれを検索します。1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。
名前空間ごとに、新しいターミナルウィンドウを開きます。各ターミナルで、
KUBECONFIG
環境変数を別のパスに設定し、クラスターにログインします。次に、使用する名前空間を作成し、現在のコンテキストに名前空間を設定します。注記ログイン手順はプロバイダーによって異なります。以下のドキュメントを参照してください。
West:
export KUBECONFIG=~/.kube/config-west # Enter your provider-specific login command kubectl create namespace west kubectl config set-context --current --namespace west
East:
export KUBECONFIG=~/.kube/config-east # Enter your provider-specific login command kubectl create namespace east kubectl config set-context --current --namespace east
フロントエンドとバックエンドをデプロイします。
この例では、フロントエンドとバックエンドを異なるクラスター上の別々の Kubernetes 名前空間で実行します。
kubectl create deployment
を使用して、フロントエンドを West に、バックエンドを East にデプロイします。West:
kubectl create deployment frontend --image quay.io/skupper/hello-world-frontend
East:
kubectl create deployment backend --image quay.io/skupper/hello-world-backend --replicas 3
サイトを作成します。
Skupper サイトは、アプリケーションのコンポーネントが実行される場所です。サイトは相互にリンクされ、アプリケーションのネットワークを形成します。Kubernetes では、サイトは名前空間に関連付けられます。
名前空間ごとに、
skupper init
を使用してサイトを作成します。これにより、Skupper ルーターとコントローラーがデプロイされます。次に、skupper status
を使用して結果を確認します。West:
skupper init skupper status
出力サンプル
$ skupper init Waiting for LoadBalancer IP or hostname... Waiting for status... Skupper is now installed in namespace 'west'. Use 'skupper status' to get more information. $ skupper status Skupper is enabled for namespace "west". It is not connected to any other sites. It has no exposed services.
East:
skupper init skupper status
出力サンプル
$ skupper init Waiting for LoadBalancer IP or hostname... Waiting for status... Skupper is now installed in namespace 'east'. Use 'skupper status' to get more information. $ skupper status Skupper is enabled for namespace "east". It is not connected to any other sites. It has no exposed services.
以下の手順を実行する場合は、いつでも
skupper status
を使用して進捗状況を確認できます。サイトをリンクします。
Skupper リンクは、2 つのサイト間の通信チャネルです。リンクは、アプリケーションの接続と要求のトランスポートとして機能します。
リンクを作成するには、
skupper token create
とskupper link create
の 2 つのskupper
コマンドを組み合わせて使用する必要があります。skupper token create
コマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモートサイトで、skupper link create
コマンドを実行すると、トークンを使用して、トークンを生成したサイトへのリンクを作成します。注記リンクトークンは実際にはシークレットです。トークンがある場合は、サイトにリンクできます。信頼できる人だけがアクセスできるようにしてください。
まず、West で
skupper token create
を使用してトークンを生成します。次に、East でskupper link create
を使用して、サイトをリンクします。West:
skupper token create ~/secret.token
出力サンプル
$ skupper token create ~/secret.token Token written to ~/secret.token
East:
skupper link create ~/secret.token
出力サンプル
$ skupper link create ~/secret.token Site configured to link to https://10.105.193.154:8081/ed9c37f6-d78a-11ec-a8c7-04421a4c5042 (name=link1) Check the status of the link using 'skupper link status'.
ターミナルセッションが異なるマシン上にある場合は、トークンを安全に転送するために
scp
または同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。バックエンドを公開します。
現在、サイトはリンクされて Skupper ネットワークを形成していますが、そのネットワーク上でサービスは公開されていません。Skupper は、
skupper expose
コマンドを使用して、リンクされたすべてのサイトで公開するサービスを 1 つのサイトから選択します。skupper expose
を使用して、East のバックエンドサービスを West のフロントエンドに公開します。East:
skupper expose deployment/backend --port 8080
出力サンプル
$ skupper expose deployment/backend --port 8080 deployment backend exposed as backend
フロントエンドにします。
アプリケーションを使用およびテストするには、フロントエンドへの外部アクセスが必要です。
kubectl port-forward
を使用して、フロントエンドをlocalhost:8080
で利用できるようにします。West:
kubectl port-forward deployment/frontend 8080:8080
ブラウザーで http://localhost:8080 に移動すると、Web インターフェイスにアクセスできるようになります。