IBM Cloud Docs
Code Engine での Kubernetes の使用

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 と対話するように環境をセットアップしなければなりません。

開始前に

以下の方法で環境をセットアップできます。

  • --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 サービス役割を参照してください。

Kubernetes当局
リソース マネージャー役割 ライター役割 リーダー役割
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 構成を取得するには、以下のようにします。

  1. IBM Cloud® Identity and Access Management (IAM) で認証して、IAM アクセス・トークンを受け取ります。
  2. IBM Cloud カタログおよび IBM Cloud Resource Controller を照会して、プロジェクトの GUID を受け取ります。
  3. 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 を検出するには、以下の手順を実行します。

  1. IBM Cloud にログインし、リージョン、アカウント、およびリソース・グループをターゲットにします。

    ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP
    
  2. ibmcloud resource コマンドを実行します。

    ibmcloud resource service-instances --service-name codeengine --long
    
  3. ユーザーの Code Engine プロジェクトを表すサービス・インスタンスを識別し、出力から GUID を判別します。

REST API を使用して Code Engine プロジェクトの GUID をディスカバーするには、以下の手順を実行します。

開始する前に、前の手順で取得した access_token を用意しておく必要があります。

  1. 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 です。

  2. 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'
    
  3. 結果リストの中のリージョンから Code Engine プロジェクトを識別します。 次のステップで使用する guid の出力を検索します。

IBM Code Engine API の照会

開始する前に、以下の情報を用意しておく必要があります。

  • 前の手順で取得した access_tokenrefresh_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

  1. IBM Cloud にログインし、リージョン、アカウント、およびリソース・グループをターゲットにします。

    ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP
    
  2. Code Engine プロジェクトを作成します。

    ibmcloud ce project create --name PROJECT
    
  3. 現行コンテキストとして Code Engine プロジェクトを選択し、このプロジェクトをデフォルトの Kubernetes 構成ファイルに追加します。

    ibmcloud ce project select --name PROJECT --kubecfg
    

ご使用のプロジェクトで kubectl コマンドを使用する準備ができました。

Code Engine API、Kubernetes API、および kubectl の使用について詳しくは、以下のトピックを参照してください。

カスタム・リソース定義 (CRD)

以下のセクションでは、Code Engine で使用するカスタム・リソース定義方法を示します。

バッチ CRD 方式

バッチ CRD は、 Code Engineでのジョブおよびジョブ実行の処理 時に使用できます。

Code Engine
グループ バージョン 種別
codeengine.cloud.ibm.com v1beta1 JobDefinition
codeengine.cloud.ibm.com v1beta1 JobRun

Kubernetes 構成を取得した後、以下の方法を使用してバッチ CRD の詳細を表示できます。

  1. kubectl explain --api-version='codeengine.cloud.ibm.com/v1beta1' <Kind> を使用します。
  2. SwaggerまたはCRD OpenAPI 仕様をダウンロードして/span>のてください。

ジョブ実行を削除するときには、関連付けられたポッドもすべて削除する必要がある点に注意してください。 propagationPolicy=Orphan オプションで削除しようとすると、拒否されます。

機能 CRD メソッド

Code Engineで関数を操作する ときに、関数 CRD を使用できます。

Code Engine
グループ バージョン 種別
codeengine.cloud.ibm.com v1beta1 Function

Serving CRD 方式

Code Engineでアプリケーションを処理する ときに、サービス提供 CRD を使用できます。

Code Engine
グループ バージョン 種別
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でのビルドおよびビルドの実行の処理 時に使用できます。

Code Engineのソースからイメージへの CRD
グループ バージョン 種別
shipwright.io v1beta1 Build
shipwright.io v1beta1 BuildRun

Kubernetes 構成を取得した後、以下の方法のいずれかを使用して Source-to-image CRD の詳細を表示できます。

サブスクリプション CRD 方式

Code Engineでのサブスクリプションの処理 時に、サブスクリプション CRD を使用できます。

Code Engine
グループ バージョン 種別
sources.codeengine.cloud.ibm.com v1alpha1 CosSource
sources.knative.dev v1beta1 KafkaSource
sources.knative.dev v1 PingSource

Kubernetes 構成を取得した後、以下の方法のいずれかを使用してサブスクリプション CRD の詳細を表示できます。