第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 サービスを作成します。 -
ocCLI を使用して、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/showcaseCopy 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
1.1.3. オフラインモードを使用したサービスの作成 リンクのコピーリンクがクリップボードにコピーされました!
オフラインモードで 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 testCopy 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.yamlCopy 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 testCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.4. サーバーレスアプリケーションのデプロイメントの確認 リンクのコピーリンクがクリップボードにコピーされました!
サーバーレスアプリケーションが正常にデプロイされたことを確認するには、Knative によって作成されたアプリケーション URL を取得してから、その URL に要求を送信し、出力を確認する必要があります。OpenShift Serverless は HTTP および HTTPS URL の両方の使用をサポートしますが、oc get ksvc からの出力は常に http:// 形式を使用して URL を出力します。
前提条件
- OpenShift Serverless Operator および Knative Serving がクラスターにインストールされている。
-
ocCLI がインストールされている。 - Knative サービスを作成している。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
アプリケーション URL を検索します。
oc get ksvc <service_name>
$ oc get ksvc <service_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME URL LATESTCREATED LATESTREADY READY REASON showcase http://showcase-default.example.com showcase-00001 showcase-00001 True
NAME URL LATESTCREATED LATESTREADY READY REASON showcase http://showcase-default.example.com showcase-00001 showcase-00001 TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターに対して要求を実行し、出力を確認します。
HTTP リクエストの例 (HTTPie ツールを使用)
http showcase-default.example.com
$ http showcase-default.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow HTTPS 要求の例
https showcase-default.example.com
$ https showcase-default.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: システムに HTTPie ツールがインストールされていない場合は、代わりに curl ツールを使用できる可能性があります。
HTTPS 要求の例
curl http://showcase-default.example.com
$ curl http://showcase-default.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{"artifact":"knative-showcase","greeting":"Ciao"}{"artifact":"knative-showcase","greeting":"Ciao"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 証明書チェーンで自己署名証明書に関連するエラーが発生した場合は、HTTPie コマンドに
--verify=noフラグを追加して、エラーを無視できます。https --verify=no showcase-default.example.com
$ https --verify=no showcase-default.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要自己署名証明書は、実稼働デプロイメントでは使用しないでください。この方法は、テスト目的にのみ使用されます。
オプション: OpenShift Container Platform クラスターが認証局 (CA) で署名されているが、システムにグローバルに設定されていない証明書で設定されている場合、
curlコマンドでこれを指定できます。証明書へのパスは、--cacertフラグを使用して curl コマンドに渡すことができます。curl https://showcase-default.example.com --cacert <file>
$ curl https://showcase-default.example.com --cacert <file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
{"artifact":"knative-showcase","greeting":"Ciao"}{"artifact":"knative-showcase","greeting":"Ciao"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow