サービスの開発

このページでは、Knative serving サービスの開発を始める前に知っておくべきことを説明します。

コードの必要条件

サービスを開発する場合、次の要件を満たす必要があります。

  • サービスはリクエストをリッスンする必要があります。リクエストの送信に使われるポートを構成できます。Knative serving コンテナ インスタンス内では、リクエスト送信先ポートが PORT 環境変数の値に常に反映されます。この PORT 環境変数が存在するかどうかをコードで検査してください。存在する場合は、移植性が最大になるようそのポートでリッスンするのが適切です。
  • サービスはステートレスである必要があります。永続的なローカル状態に依存することはできません。
  • サービスは、リクエスト処理の範囲外のバックグラウンド アクティビティを実行することはできません。

これらの制約については、コンテナ ランタイムの契約をご覧ください。

プログラミング言語のサポート

Knative serving では、任意のプログラミング言語でコードを作成できます。

ウェブサーバーの使用

ウェブサーバーを使用して必要なポートをリッスンし、受信リクエストの処理とルーティングを行うことができます。Node.js で開発する場合は Express.js を、Python で開発する場合は Flask を使用できます。Ruby の場合は Sinatra を使用できます。

コードのコンテナ化

Knative serving にデプロイするには、コンテナ イメージを提供する必要があります。コンテナ イメージには、コード、そのパッケージ、必要なバイナリ依存関係、使用するオペレーティング システム、サービスの実行に必要なものがすべて含まれています。

Dockerfile というファイルは、コンテナ イメージのビルド方法を宣言するために使用されています。

多くの場合、Dockerfile はベースイメージから始まります(例: FROM golang:1.11)。OS や言語の作成者によって管理されているベースイメージは Docker Hub で確認できます。Cloud Build は、Docker Hub から pull する前にキャッシュ内のイメージを確認します。サードパーティのビルドツールを使用する場合は、同じキャッシュ内のイメージを確認するように Docker デーモンを構成できます。Google が管理しているベースイメージは Google Cloud Marketplace にあります。

独自のバイナリを使用する場合は、Linux ABI x86_64 用にコンパイルする必要があります。

Dockerfiles の詳細については、次のドキュメントをご覧ください。

次のステップ