Code Engine での Kubernetes の使用
IBM Cloud® Code Engine は、その上に構築されている基礎にあるテクノロジーと対話する必要がないように設計されています。 ただし、Kubernetes または Knative に基づく既存のツールがある場合でも、Code Engine で使用できます。Code Engine は、Kubernetes (および Knative) API とその CLI コマンドをサポートします。 Knative について詳しくは、Code Engine での Knative の使用を参照してください。
もしCode Engineで Kubernetesを使うことを決めたら、以下の情報を考慮してください:
- Kubernetes で実行されるほとんどのコンテナーまたはポッドは、Code Engine でも実行されます。
- デプロイメントなどの Kubernetes 構成体は、セキュリティー・ポリシーなどのクラスター全体の機能を使用しない場合、Code Engine 上で実行されます。Code Engine のスコープは、Kubernetes 名前空間で実行できるものに設定されます。
Code Engine は、OpenShift 固有のリソースや、Docker Swarm や Compose Swarm などの他のコンテナー・オーケストレーション・プラットフォームをサポートしません。
Kubernetes コマンド・ライン・インターフェースのインストール
KubernetesCLIをインストールするには、kubectl
CLIをダウンロードしてインストールする。
必ず、システムの PATH 環境変数に kubectl
のバイナリーを追加してください。
上級者向け: Kubernetes API との対話
Kubernetes コマンド・ライン・インターフェース kubectl
、または Knative kn
からプロジェクトと対話するには、Code Engineの Kubernetes API と対話するように環境をセットアップしなければなりません。
開始前に
- プロジェクトを作成し、プロジェクトの状況が
active
になっている必要があります。 - Kubernetes の CLI (
kubectl
) と Knative の CLI (kn
) をインストールします。
以下の方法で環境をセットアップできます。
-
--kubecfg
コマンドにproject select
オプションを追加します。 以下に例を示します。ibmcloud ce project select --name PROJECT_NAME --kubecfg
-
kubeconfig
ファイルを直接エクスポートします。ibmcloud ce project current
コマンドを実行して、現在ターゲットに設定しているプロジェクトを確認します。 このコマンドは、kubeconfig
ファイルの**export
**コマンドも返します。 以下に例を示します。ibmcloud ce project current
出力例
Getting the current project context... OK Name: myproject ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Subdomain: aabon2dfwa0 Domain: us-south.codeengine.appdomain.cloud Region: us-south Kubectl Context: 4svg40kna19 Kubernetes Config: Context: aabon2dfwa0 Environment Variable: export KUBECONFIG=/user/myusername/.bluemix/plugins/code-engine/myproject-01234567-abcd-abcd-abcd-abcdabcd1111.yaml
このエクスポート・コマンドをコピーし、コマンド・ライン・インターフェースに貼り付けて実行します。
kubectl config
コマンドを実行して、環境が正しく設定されていることを確認します。
kubectl config current-context
コンテキストが正しく設定されていれば、出力がプロジェクトの Kubectl Context
値と一致します。 例えば、プロジェクトの Kubectl Context
値が 4svg40kna19
の場合、コマンドは 4svg40kna19
を返します。
Kubernetes に関する詳細情報と、それが Code Engine アーキテクチャーと連携する方法については、Code Engine アーキテクチャーとワークロードの分離についてを参照してください。
Kubernetes API の操作に必要なアクセス権限
環境をセットアップした後、Kubernetes API と対話できます。 特定のタスクに適したレベルの権限が必要です。 これらの役割は、「ID およびアクセス管理」で設定されます。 IBM Cloud サービス役割を参照してください。
リソース | マネージャー役割 | ライター役割 | リーダー役割 |
---|---|---|---|
serviceaccounts |
get , list , watch |
get , list , watch |
なし |
secrets |
get , list , watch , create , delete , update , patch , apply , edit |
get , list , watch , create , delete , update , patch , apply , edit |
なし |
configmaps |
get , list , watch , create , delete , update , patch , apply , edit |
get , list , watch , create , delete , update , patch , apply , edit |
なし |
events |
get , list , watch |
get , list , watch |
なし |
pods/log |
get , list , watch |
get , list , watch |
get , list , watch |
pods |
get , list , watch , create , delete , patch , apply |
get , list , watch , create , delete , patch , apply |
get , list , watch |
services |
get , list , watch , create , delete , patch , apply |
get , list , watch , create , delete , patch , apply |
get , list , watch |
pods/exec |
create |
create |
なし |
pods/portforward |
create |
create |
なし |
pods/attach |
create |
なし | なし |
pods/status |
get , list |
get , list |
なし |
resourcequotas |
get , list , watch |
get , list , watch |
get、list、watch |
limitranges |
get , list , watch |
get , list , watch |
なし |
deployments |
get , list , watch , create , delete , patch , apply |
get , list , watch , create , delete , patch , apply |
get , list , watch |
daemonset |
get , list , watch |
get , list , watch |
get , list , watch |
pods.metrics.k8s.io |
リスト | リスト | リスト |
Kubernetes 構成の取得
Kubernetes 構成は、 REST API または Code Engine CLI を使用して取得できます。
REST API を使用した Kubernetes 構成の取得
REST API を使用して Kubernetes 構成を取得するには、以下のようにします。
- IBM Cloud® Identity and Access Management (IAM) で認証して、IAM アクセス・トークンを受け取ります。
- IBM Cloud カタログおよび IBM Cloud Resource Controller を照会して、プロジェクトの GUID を受け取ります。
- IBM Cloud Code Engine API を使用して、Kubernetes 構成を受け取ります。
Cloud Identity and Access Management による認証
IBM Cloud IAM アクセス・トークンの作成。これは、 https://iam.cloud.ibm.com/identity/token
に対して POST 要求を行うことによって行います。
Code Engine プロジェクトの GUID の決定
Code Engine カタログと IBM Cloud を照会して、IBM Cloud プロジェクトの GUID を判別します。 この GUID は変わらないため、この手順は 1 回だけ実行する必要があります。 Code Engine プロジェクトの GUID を既に知っている場合は、この手順をスキップできます。
Code Engine CLI を使用して Code Engine プロジェクトの GUID を検出するには、以下の手順を実行します。
-
IBM Cloud にログインし、リージョン、アカウント、およびリソース・グループをターゲットにします。
ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP
-
ibmcloud resource
コマンドを実行します。ibmcloud resource service-instances --service-name codeengine --long
-
ユーザーの Code Engine プロジェクトを表すサービス・インスタンスを識別し、出力から GUID を判別します。
REST API を使用して Code Engine プロジェクトの GUID をディスカバーするには、以下の手順を実行します。
開始する前に、前の手順で取得した access_token
を用意しておく必要があります。
-
IBM Cloud カタログ API メソッド 「親カタログ・エントリーを返す」を使用します。
出力例
curl -X GET \ 'https://globalcatalog.cloud.ibm.com/api/v1?include=*&q=name:codeengine+active:true' \ -H 'Authorization: Bearer ACCESS_TOKEN'
リソース・リスト内から固有のリソース ID を識別します。 フィールド名は
ID
で、JSON パスはresources[].id
です。 -
IBM Cloudをクエリします。リソースコントローラをIBM Cloudでクエリします。リソースコントローラ API メソッド すべてのリソースインスタンスの一覧を取得する。 Code Engine プロジェクト名、プロジェクトが存在するリージョン、およびグローバル・カタログに含まれている Code Engine の固有リソース ID が必要です。 照会パラメーターには Code Engine プロジェクトの名前を使用します。
出力例
curl -X GET \ 'https://resource-controller.cloud.ibm.com/v2/resource_instances?name=MY_PROJECT&resource_id=RESOURCE_ID' \ -H 'Authorization: Bearer ACCESS_TOKEN'
-
結果リストの中のリージョンから Code Engine プロジェクトを識別します。 次のステップで使用する
guid
の出力を検索します。
IBM Code Engine API の照会
開始する前に、以下の情報を用意しておく必要があります。
- 前の手順で取得した
access_token
とrefresh_token
。 - Code Engine プロジェクトの
guid
。 - Code Engine プロジェクトが存在しているリージョン。
Kubernetes設定を取得するには、get kubeconfig for the specified project
Code EngineAPIメソッドを使用します。API メソッドを使用してKubernetes設定を取得します。
出力例
curl -X GET \
'https://resource-controller.cloud.ibm.com/v2/resource_instances?name=MY_PROJECT&resource_id=RESOURCE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN'
Kubernetesの設定をCode Engineで取得します。CLI
-
IBM Cloud にログインし、リージョン、アカウント、およびリソース・グループをターゲットにします。
ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP
-
Code Engine プロジェクトを作成します。
ibmcloud ce project create --name PROJECT
-
現行コンテキストとして Code Engine プロジェクトを選択し、このプロジェクトをデフォルトの Kubernetes 構成ファイルに追加します。
ibmcloud ce project select --name PROJECT --kubecfg
ご使用のプロジェクトで kubectl
コマンドを使用する準備ができました。
Code Engine API、Kubernetes API、および kubectl
の使用について詳しくは、以下のトピックを参照してください。
カスタム・リソース定義 (CRD)
以下のセクションでは、Code Engine で使用するカスタム・リソース定義方法を示します。
バッチ CRD 方式
バッチ CRD は、 Code Engineでのジョブおよびジョブ実行の処理 時に使用できます。
グループ | バージョン | 種別 |
---|---|---|
codeengine.cloud.ibm.com |
v1beta1 | JobDefinition |
codeengine.cloud.ibm.com |
v1beta1 | JobRun |
Kubernetes 構成を取得した後、以下の方法を使用してバッチ CRD の詳細を表示できます。
kubectl explain --api-version='codeengine.cloud.ibm.com/v1beta1' <Kind>
を使用します。- SwaggerまたはCRD
OpenAPI
仕様をダウンロードして/span>のてください。
ジョブ実行を削除するときには、関連付けられたポッドもすべて削除する必要がある点に注意してください。 propagationPolicy=Orphan
オプションで削除しようとすると、拒否されます。
機能 CRD メソッド
Code Engineで関数を操作する ときに、関数 CRD を使用できます。
グループ | バージョン | 種別 |
---|---|---|
codeengine.cloud.ibm.com |
v1beta1 | Function |
Serving CRD 方式
Code Engineでアプリケーションを処理する ときに、サービス提供 CRD を使用できます。
グループ | バージョン | 種別 |
---|---|---|
serving.knative.dev |
v1 | Configuration |
serving.knative.dev |
v1 | Revision |
serving.knative.dev |
v1 | Route |
serving.knative.dev |
v1 | Service |
これらのCRDの詳細については、Knative Serving API Specificationを参照。
Source-to-image CRD 方式
source-to-image CRD は、 Code Engineでのビルドおよびビルドの実行の処理 時に使用できます。
グループ | バージョン | 種別 |
---|---|---|
shipwright.io |
v1beta1 | Build |
shipwright.io |
v1beta1 | BuildRun |
Kubernetes 構成を取得した後、以下の方法のいずれかを使用して Source-to-image CRD の詳細を表示できます。
kubectl explain --api-version='shipwright.io/v1beta1' <KIND>
を使用します。- CRDのSwaggerまたは
OpenAPI
仕様をダウンロードしてください。
サブスクリプション CRD 方式
Code Engineでのサブスクリプションの処理 時に、サブスクリプション CRD を使用できます。
グループ | バージョン | 種別 |
---|---|---|
sources.codeengine.cloud.ibm.com |
v1alpha1 | CosSource |
sources.knative.dev |
v1beta1 | KafkaSource |
sources.knative.dev |
v1 | PingSource |
Kubernetes 構成を取得した後、以下の方法のいずれかを使用してサブスクリプション CRD の詳細を表示できます。
kubectl explain --api-version='sources.knative.dev/<VERSION>' <KIND>
を使用します。- CRDのSwaggerまたは
OpenAPI
仕様をダウンロードしてください。