第1章 Knative Serving を使い始める
1.1. Serverless アプリケーション リンクのコピーリンクがクリップボードにコピーされました!
サーバーレスアプリケーションは、ルートと設定で定義され、YAML ファイルに含まれる Kubernetes サービスとして作成およびデプロイされます。OpenShift Serverless を使用してサーバーレスアプリケーションをデプロイするには、Knative Service
オブジェクトを作成する必要があります。
Knative Service
オブジェクトの YAML ファイルの例
以下の方法のいずれかを使用してサーバーレスアプリケーションを作成できます。
OpenShift Container Platform Web コンソールからの Knative サービスの作成
OpenShift Container Platform の場合は、開発者パースペクティブを使用したアプリケーションの作成 を参照してください。
-
Knative (
kn
) CLI を使用して Knative サービスを作成します。 -
oc
CLI を使用して、KnativeService
オブジェクトを YAML ファイルとして作成し、適用します。
1.1.1. Knative CLI を使用したサーバーレスアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
Knative (kn
) CLI を使用してサーバーレスアプリケーションを作成すると、YAML ファイルを直接修正するよりも合理的で直感的なユーザーインターフェイスが得られます。kn service create
コマンドを使用して、基本的なサーバーレスアプリケーションを作成できます。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn
) CLI がインストールされている。 - OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
手順
Knative サービスを作成します。
kn service create <service-name> --image <image> --tag <tag-value>
$ kn service create <service-name> --image <image> --tag <tag-value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
-
--image
は、アプリケーションのイメージの URI です。 --tag
は、サービスで作成される初期リビジョンにタグを追加するために使用できるオプションのフラグです。コマンドの例
kn service create showcase \ --image quay.io/openshift-knative/showcase
$ kn service create showcase \ --image quay.io/openshift-knative/showcase
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
1.1.2. YAML を使用したサーバーレスアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
YAML ファイルを使用して Knative リソースを作成する場合、宣言的 API を使用するため、再現性の高い方法でアプリケーションを宣言的に記述することができます。YAML を使用してサーバーレスアプリケーションを作成するには、Knative Service
を定義する YAML ファイルを作成し、oc apply
を使用してこれを適用する必要があります。
サービスが作成され、アプリケーションがデプロイされると、Knative はこのバージョンのアプリケーションのイミュータブルなリビジョンを作成します。また、Knative はネットワークプログラミングを実行し、アプリケーションのルート、ingress、サービスおよびロードバランサーを作成し、Pod をトラフィックに基づいて自動的にスケールアップ/ダウンします。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
- OpenShift Container Platform でアプリケーションおよび他のワークロードを作成するために、プロジェクトを作成しているか、適切なロールおよびパーミッションを持つプロジェクトにアクセスできる。
-
OpenShift CLI (
oc
) がインストールされている。
手順
以下のサンプルコードを含む YAML ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML ファイルが含まれるディレクトリーに移動し、YAML ファイルを適用してアプリケーションをデプロイします。
oc apply -f <filename>
$ oc apply -f <filename>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenShift Container Platform Web コンソールで Developer パースペクティブに切り替えたくない場合、または Knative (kn
) CLI または YAML ファイルを使用したくない場合は、OpenShift Container PlatformWeb コンソールの Administator パースペクティブを使用して Knative コンポーネントを作成できます。
1.1.3. Administrator パースペクティブを使用したサーバーレスアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
サーバーレスアプリケーションは、ルートと設定で定義され、YAML ファイルに含まれる Kubernetes サービスとして作成およびデプロイされます。OpenShift Serverless を使用してサーバーレスアプリケーションをデプロイするには、Knative Service
オブジェクトを作成する必要があります。
Knative Service
オブジェクトの YAML ファイルの例
サービスが作成され、アプリケーションがデプロイされると、Knative はこのバージョンのアプリケーションのイミュータブルなリビジョンを作成します。また、Knative はネットワークプログラミングを実行し、アプリケーションのルート、ingress、サービスおよびロードバランサーを作成し、Pod をトラフィックに基づいて自動的にスケールアップ/ダウンします。
前提条件
Administrator パースペクティブを使用してサーバーレスアプリケーションを作成するには、以下の手順を完了していることを確認してください。
- OpenShift Serverless Operator および Knative Serving がインストールされていること。
- Web コンソールにログインしており、Administrator パースペクティブを使用している。
手順
-
Serverless
Serving ページに移動します。 - Create リストで、Service を選択します。
- YAML または JSON 定義を手動で入力するか、またはファイルをエディターにドラッグし、ドロップします。
- Create をクリックします。
1.1.4. オフラインモードを使用したサービスの作成 リンクのコピーリンクがクリップボードにコピーされました!
オフラインモードで kn service
コマンドを実行すると、クラスター上で変更は発生せず、代わりにサービス記述子ファイルがローカルマシンに作成されます。記述子ファイルを作成した後、クラスターに変更を伝播する前にファイルを変更することができます。
Knative CLI のオフラインモードはテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
Knative (
kn
) CLI がインストールされている。
手順
オフラインモードでは、ローカルの Knative サービス記述子ファイルを作成します。
kn service create showcase \ --image quay.io/openshift-knative/showcase \ --target ./ \ --namespace test
$ kn service create showcase \ --image quay.io/openshift-knative/showcase \ --target ./ \ --namespace test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Service 'showcase' created in namespace 'test'.
Service 'showcase' created in namespace 'test'.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --target ./
フラグはオフラインモードを有効にし、./
を新しいディレクトリーツリーを保存するディレクトリーとして指定します。既存のディレクトリーを指定せずに、
--target my-service.yaml
などのファイル名を使用すると、ディレクトリーツリーは作成されません。代わりに、サービス記述子ファイルmy-service.yaml
のみが現在のディレクトリーに作成されます。ファイル名には、
.yaml
、.yml
または.json
拡張子を使用できます。.json
を選択すると、JSON 形式でサービス記述子ファイルが作成されます。--namespace test
オプションは、新規サービスをテスト
namespace に配置します。--namespace
を使用せずに OpenShift Container Platform クラスターにログインしていると、記述子ファイルが現在の namespace に作成されます。それ以外の場合は、記述子ファイルがdefault
の namespace に作成されます。
作成したディレクトリー構造を確認します。
tree ./
$ tree ./
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
--target
で指定する現在の./
ディレクトリーには新しいtest/
ディレクトリーが含まれます。このディレクトリーの名前は、指定の namespace をもとに付けられます。 -
test/
ディレクトリーには、リソースタイプの名前が付けられたksvc
ディレクトリーが含まれます。 -
ksvc
ディレクトリーには、指定のサービス名に従って名前が付けられる記述子ファイルshowcase.yaml
が含まれます。
-
生成されたサービス記述子ファイルを確認します。
cat test/ksvc/showcase.yaml
$ cat test/ksvc/showcase.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいサービスに関する情報をリスト表示します。
kn service describe showcase --target ./ --namespace test
$ kn service describe showcase --target ./ --namespace test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --target ./
オプションは、namespace サブディレクトリーを含むディレクトリー構造のルートディレクトリーを指定します。または、
--target
オプションで YAML または JSON ファイルを直接指定できます。使用可能なファイルの拡張子は、.yaml
、.yml
、および.json
です。--namespace
オプションは、namespace を指定し、この namespace は必要なサービス記述子ファイルを含むサブディレクトリーのkn
と通信します。--namespace
を使用せず、OpenShift Container Platform クラスターにログインしている場合、kn
は現在の namespace にちなんで名付けられたサブディレクトリーでサービスを検索します。それ以外の場合は、kn
はdefault/
サブディレクトリーで検索します。
サービス記述子ファイルを使用してクラスターでサービスを作成します。
kn service create -f test/ksvc/showcase.yaml
$ kn service create -f test/ksvc/showcase.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow