アプリを(kf push
経由で)Kf に push するときには、Kf がソースコードを取得してトラフィックを処理するために使用するライフサイクルが 3 つあります。
- ソースコードのアップロード
- 構築
- 実行
ソースコードのアップロード
kf push
時に最初に行う操作は、Kf CLI(kf
)がディレクトリ(current または --path/-p
)をコンテナにパッケージ化し、スペース用に構成されたコンテナ レジストリに公開することです。これはソースコンテナと呼ばれます。次に、Kf CLI によって、アプリ マニフェストと push フラグからのソースイメージと構成の両方を含む Kubernetes の App
タイプが作成されます。
push 中にファイルを無視する
多くの場合、kf push
の間に特定のファイルをアップロードすることは望ましくありません(つまり、それらを「無視」します)。そのような場合に、.kfignore
(または .cfignore
)ファイルを使用できます。.gitignore
ファイルと同様に、このファイルは、どのファイルをソースコード コンテナに含めないかを Kf CLI に指示します。
.kfignore
ファイルを作成するには、アプリのベース ディレクトリ(マニフェスト ファイルを保存する場所と同様)に .kfignore
という名前のテキスト ファイルを作成します。次に、公開したくないファイルやディレクトリを、改行で区切ったリストで入力します。例:
bin
.idea
これにより、bin
ディレクトリと .idea
ディレクトリからは何も含めないことを Kf CLI に伝えます。
Kf は、gitignore スタイル構文をサポートしています。
構築
ビルド ライフサイクルは、Tekton TaskRun によって処理されます。push 中に指定したフラグに応じて、特定の Tekton Task を選択します。現在、Kf には、次の Tekton Task があります。
- buildpackv2
- buildpackv3
- kaniko
Kf は各 TaskRun をビルドとしてトラックします。ビルドが成功すると、結果のコンテナ イメージが実行ライフサイクルを介してデプロイされます(下記を参照)。
詳細については、ビルド ランタイムをご覧ください。
実行
実行ライフサイクルは、コンテナ イメージの取得と Kubernetes Deployment の作成を担当します。
以下も作成されます。
- Istio 仮想サービス
- Kubernetes Secrets
詳細については、ビルド ランタイムをご覧ください。
push タイムアウト
Kf では、アプリを push する間、タイムアウトするように CLI に指示する環境変数の設定がサポートされています。設定されると、変数 KF_STARTUP_TIMEOUT
または CF_STARTUP_TIMEOUT
が Go 言語スタイルの期間として解析されます(例: 15m
、1h
)。値が設定されていない場合、push タイムアウトはデフォルトで 15 分に設定されます。