第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
sudo dnf install skupper-cli
Copy to Clipboard Copied! クラスターを設定します。
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
export KUBECONFIG=~/.kube/config-west # Enter your provider-specific login command kubectl create namespace west kubectl config set-context --current --namespace west
Copy to Clipboard Copied! East:
export KUBECONFIG=~/.kube/config-east # Enter your provider-specific login command kubectl create namespace east kubectl config set-context --current --namespace east
export KUBECONFIG=~/.kube/config-east # Enter your provider-specific login command kubectl create namespace east kubectl config set-context --current --namespace east
Copy to Clipboard Copied! フロントエンドとバックエンドをデプロイします。
この例では、フロントエンドとバックエンドを異なるクラスター上の別々の Kubernetes 名前空間で実行します。
kubectl create deployment
を使用して、フロントエンドを West に、バックエンドを East にデプロイします。West:
kubectl create deployment frontend --image quay.io/skupper/hello-world-frontend
kubectl create deployment frontend --image quay.io/skupper/hello-world-frontend
Copy to Clipboard Copied! East:
kubectl create deployment backend --image quay.io/skupper/hello-world-backend --replicas 3
kubectl create deployment backend --image quay.io/skupper/hello-world-backend --replicas 3
Copy to Clipboard Copied! サイトを作成します。
Skupper サイトは、アプリケーションのコンポーネントが実行される場所です。サイトは相互にリンクされ、アプリケーションのネットワークを形成します。Kubernetes では、サイトは名前空間に関連付けられます。
名前空間ごとに、
skupper init
を使用してサイトを作成します。これにより、Skupper ルーターとコントローラーがデプロイされます。次に、skupper status
を使用して結果を確認します。West:
skupper init skupper status
skupper init skupper status
Copy to Clipboard Copied! 出力サンプル
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.
Copy to Clipboard Copied! East:
skupper init skupper status
skupper init skupper status
Copy to Clipboard Copied! 出力サンプル
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.
Copy to Clipboard Copied! 以下の手順を実行する場合は、いつでも
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
Copy to Clipboard Copied! 出力サンプル
skupper token create ~/secret.token
$ skupper token create ~/secret.token Token written to ~/secret.token
Copy to Clipboard Copied! East:
skupper link create ~/secret.token
skupper link create ~/secret.token
Copy to Clipboard Copied! 出力サンプル
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'.
Copy to Clipboard Copied! ターミナルセッションが異なるマシン上にある場合は、トークンを安全に転送するために
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
Copy to Clipboard Copied! 出力サンプル
skupper expose deployment/backend --port 8080
$ skupper expose deployment/backend --port 8080 deployment backend exposed as backend
Copy to Clipboard Copied! フロントエンドにします。
アプリケーションを使用およびテストするには、フロントエンドへの外部アクセスが必要です。
kubectl port-forward
を使用して、フロントエンドをlocalhost:8080
で利用できるようにします。West:
kubectl port-forward deployment/frontend 8080:8080
kubectl port-forward deployment/frontend 8080:8080
Copy to Clipboard Copied! ブラウザーで http://localhost:8080 に移動すると、Web インターフェイスにアクセスできるようになります。