4.3. KServe の手動インストール
すでに Red Hat OpenShift Service Mesh Operator をインストールして ServiceMeshControlPlane
リソースを作成している場合、または Red Hat OpenShift Serverless Operator をインストールして KNativeServing
リソースを作成している場合は、Red Hat OpenShift AI Operator は KServe をインストールして、その依存関係を設定できません。この状況では、KServe を手動でインストールする必要があります。
このセクションの手順は、KServe とその依存関係の 新規 インストールを実行する方法を示しており、完全なインストールと設定のリファレンスとして意図されています。すでに OpenShift Service Mesh または OpenShift Serverless をインストールして設定している場合は、すべての手順に従う必要はない場合があります。KServe を使用するために既存の設定にどの更新を適用すればよいかわからない場合は、Red Hat サポートにお問い合わせください。
シングルモデルサービングプラットフォームの手動インストール中に、KServe を Unmanaged
モードで実行できます。 このモードは、KServe コントローラーのリソース制限の変更など、KServe コンポーネントをより詳細に制御する必要がある場合に便利です。
4.3.1. KServe 依存関係のインストール リンクのコピーリンクがクリップボードにコピーされました!
KServe をインストールする前に、いくつかの依存関係をインストールして設定する必要があります。具体的には、Red Hat OpenShift Service Mesh および Knative Serving インスタンスを作成し、Knative Serving 用にセキュアゲートウェイを設定する必要があります。
現在、OpenShift Service Mesh v2 のみがサポートされています。詳細は、サポートされる構成 を参照してください。
4.3.2. OpenShift Service Mesh インスタンスの作成 リンクのコピーリンクがクリップボードにコピーされました!
次の手順は、Red Hat OpenShift Service Mesh インスタンスを作成する方法を示しています。
前提条件
- OpenShift クラスターのクラスター管理者権限を持っている。
- クラスターには 4 つの CPU と 16 GB のメモリーを備えたノードがある。
- OpenShift コマンドラインインターフェイス (CLI) をダウンロードしてインストールした。OpenShift CLI のインストール (OpenShift Dedicated) または OpenShift CLI のインストール (Red Hat OpenShift Service on AWS) を参照してください。
- Red Hat OpenShift Service Mesh Operator と依存する Operator が インストール されている。
手順
ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、次の例に示すように OpenShift CLI にログインします。
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenShift Service Mesh に必要な namespace を作成します。
oc create ns istio-system
$ oc create ns istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
namespace/istio-system created
namespace/istio-system created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow smcp.yaml
という名前の YAML ファイルに次の内容のServiceMeshControlPlane
オブジェクトを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML ファイルの値の詳細は、Service Mesh コントロールプレーン設定リファレンス を参照してください。
サービスメッシュコントロールプレーンを作成します。
oc apply -f smcp.yaml
$ oc apply -f smcp.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のようにサービスメッシュインスタンスの作成を確認します。
OpenShift CLI で、次のコマンドを入力します。
oc get pods -n istio-system
$ oc get pods -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前述のコマンドは、
istio-system
プロジェクト内で実行中の Pod 一覧を表示します。これは、OpenShift Service Mesh がインストールされるプロジェクトです。サービスメッシュコントロールプレーン、Ingress ゲートウェイ、および Egress ゲートウェイの実行中の Pod があることを確認します。これらの Pod には次の命名パターンがあります。
NAME READY STATUS RESTARTS AGE istio-egressgateway-7c46668687-fzsqj 1/1 Running 0 22h istio-ingressgateway-77f94d8f85-fhsp9 1/1 Running 0 22h istiod-data-science-smcp-cc8cfd9b8-2rkg4 1/1 Running 0 22h
NAME READY STATUS RESTARTS AGE istio-egressgateway-7c46668687-fzsqj 1/1 Running 0 22h istio-ingressgateway-77f94d8f85-fhsp9 1/1 Running 0 22h istiod-data-science-smcp-cc8cfd9b8-2rkg4 1/1 Running 0 22h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. Knative Serving インスタンスの作成 リンクのコピーリンクがクリップボードにコピーされました!
次の手順は、Knative Serving をインストールしてインスタンスを作成する方法を示しています。
前提条件
- OpenShift クラスターのクラスター管理者権限を持っている。
- クラスターには 4 つの CPU と 16 GB のメモリーを備えたノードがある。
- OpenShift コマンドラインインターフェイス (CLI) をダウンロードしてインストールした。OpenShift CLI のインストール (OpenShift Dedicated) または OpenShift CLI のインストール (Red Hat OpenShift Service on AWS) を参照してください。
- Red Hat OpenShift Service Mesh インスタンスが 作成 されている。
- Red Hat OpenShift Serverless Operator が インストール されている。
手順
ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、次の例に示すように OpenShift CLI にログインします。
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Knative Serving に必要なプロジェクト (つまり namespace) がすでに存在するかどうかを確認します。
oc get ns knative-serving
$ oc get ns knative-serving
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトが存在する場合は、次の例のような出力が表示されます。
NAME STATUS AGE knative-serving Active 4d20h
NAME STATUS AGE knative-serving Active 4d20h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow knative-serving
プロジェクトがまだ存在 しない 場合は、作成します。oc create ns knative-serving
$ oc create ns knative-serving
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
namespace/knative-serving created
namespace/knative-serving created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容で、
default-smm.yaml
という YAML ファイルにServiceMeshMember
オブジェクトを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow istio-system
namespace にServiceMeshMember
オブジェクトを作成します。oc apply -f default-smm.yaml
$ oc apply -f default-smm.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
servicemeshmember.maistra.io/default created
servicemeshmember.maistra.io/default created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow knativeserving-istio.yaml
という YAML ファイルに次の内容のKnativeServing
オブジェクトを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前述のファイルは、
KnativeServing
オブジェクトのカスタムリソース (CR) を定義します。CR は、アクティベーター Pod とオートスケーラー Pod のそれぞれに次のアクションも追加します。注記Knative サービスのカスタムドメインを設定する場合、TLS 証明書を使用してマップされたサービスを保護できます。これを行うには、TLS シークレットを作成してから、作成した TLS シークレットを使用するように
DomainMapping
CR を更新する必要があります。詳細は、Red Hat OpenShift Serverless ドキュメントの TLS 証明書を使用してマッピングされたサービスを保護する を参照してください。オプション:
allow-zero-initial-scale
オートスケーラー設定を使用して、リビジョンの初期スケールをゼロにするようにknative serving
を設定できます。spec: config: autoscaler: allow-zero-initial-scale: "true"
spec: config: autoscaler: allow-zero-initial-scale: "true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次の例に示すように、
kubernetes.podspec-init-containers
機能フラグを追加して、knative serving
インスタンスに対してinitContainers
を有効化できます。spec: config: features: kubernetes.podspec-init-containers: "enabled"
spec: config: features: kubernetes.podspec-init-containers: "enabled"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow knative-serving
namespace のconfig-feature
ConfigMap にフラグを追加することもできます。詳細は、機能および拡張フラグ を参照してください。指定された
knative-serving
namespace にKnativeServing
オブジェクトを作成します。oc apply -f knativeserving-istio.yaml
$ oc apply -f knativeserving-istio.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
knativeserving.operator.knative.dev/knative-serving created
knativeserving.operator.knative.dev/knative-serving created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
istio-system
namespace のデフォルトのServiceMeshMemberRoll
オブジェクトを確認します。oc describe smmr default -n istio-system
$ oc describe smmr default -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServiceMeshMemberRoll
オブジェクトの説明で、Status.Members
フィールドを見つけて、それにknative-serving
namespace が含まれていることを確認します。次のように、Knative Serving インスタンスの作成を確認します。
OpenShift CLI で、次のコマンドを入力します。
oc get pods -n knative-serving
$ oc get pods -n knative-serving
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前述のコマンドは、
knative-serving
プロジェクト内で実行中の Pod 一覧を表示します。これは、Knative Serving インスタンスを作成したプロジェクトです。knative-serving
プロジェクト内に、アクティベーター、オートスケーラー、コントローラー、ドメインマッピング Pod、および OpenShift Serverless と OpenShift Service Mesh の統合を制御する Knative Istio コントローラーの Pod を含む多数の実行中の Pod があることを確認します。一例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.4. Knative Serving 用の安全なゲートウェイの作成 リンクのコピーリンクがクリップボードにコピーされました!
Knative Serving インスタンスとサービスメッシュ間のトラフィックを保護するには、Knative Serving インスタンス用のセキュアゲートウェイを作成する必要があります。
次の手順では、OpenSSL バージョン 3 以降を使用してワイルドカード証明書とキーを生成し、それらを使用して Knative Serving のローカルゲートウェイと Ingress ゲートウェイを作成する方法を示します。
ゲートウェイの設定時に指定する独自のワイルドカード証明書とキーがある場合は、この手順のステップ 11 に進んでください。
前提条件
- OpenShift クラスターのクラスター管理者権限を持っている。
- OpenShift コマンドラインインターフェイス (CLI) をダウンロードしてインストールした。OpenShift CLI のインストール (OpenShift Dedicated) または OpenShift CLI のインストール (Red Hat OpenShift Service on AWS) を参照してください。
- Red Hat OpenShift Service Mesh インスタンスが 作成 されている。
- Knative Serving インスタンスが 作成 されている。
- ワイルドカード証明書とキーを生成する場合は、OpenSSL バージョン 3 以降を ダウンロードしてインストールしている。
手順
ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、次の例に示すように OpenShift CLI にログインします。
oc login <openshift_cluster_url> -u <admin_username> -p <password>
$ oc login <openshift_cluster_url> -u <admin_username> -p <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ゲートウェイの設定時に指定する独自のワイルドカード証明書とキーがある場合は、この手順のステップ 11 に進みます。
環境変数を設定して、ゲートウェイのワイルドカード証明書とキーを生成するためのベースディレクトリーを定義します。
export BASE_DIR=/tmp/kserve export BASE_CERT_DIR=${BASE_DIR}/certs
$ export BASE_DIR=/tmp/kserve $ export BASE_CERT_DIR=${BASE_DIR}/certs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 環境変数を設定して、OpenShift クラスターの Ingress コントローラーで使用される共通名を定義します。
export COMMON_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}' | awk -F'.' '{print $(NF-1)"."$NF}')
$ export COMMON_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}' | awk -F'.' '{print $(NF-1)"."$NF}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 環境変数を設定して、OpenShift クラスターの Ingress コントローラーによって使用されるドメイン名を定義します。
export DOMAIN_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}')
$ export DOMAIN_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以前に設定した環境変数に基づいて、証明書の生成に必要なベースディレクトリーを作成します。
mkdir ${BASE_DIR} mkdir ${BASE_CERT_DIR}
$ mkdir ${BASE_DIR} $ mkdir ${BASE_CERT_DIR}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワイルドカード証明書を生成するための OpenSSL 設定を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルート証明書を生成します。
openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 \ -subj "/O=Example Inc./CN=${COMMON_NAME}" \ -keyout ${BASE_CERT_DIR}/root.key \ -out ${BASE_CERT_DIR}/root.crt
$ openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 \ -subj "/O=Example Inc./CN=${COMMON_NAME}" \ -keyout ${BASE_CERT_DIR}/root.key \ -out ${BASE_CERT_DIR}/root.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ルート証明書によって署名されたワイルドカード証明書を生成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ワイルドカード証明書を確認します。
openssl verify -CAfile ${BASE_CERT_DIR}/root.crt ${BASE_CERT_DIR}/wildcard.crt
$ openssl verify -CAfile ${BASE_CERT_DIR}/root.crt ${BASE_CERT_DIR}/wildcard.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スクリプトによって作成されたワイルドカードキーと証明書を新しい環境変数にエクスポートします。
export TARGET_CUSTOM_CERT=${BASE_CERT_DIR}/wildcard.crt export TARGET_CUSTOM_KEY=${BASE_CERT_DIR}/wildcard.key
$ export TARGET_CUSTOM_CERT=${BASE_CERT_DIR}/wildcard.crt $ export TARGET_CUSTOM_KEY=${BASE_CERT_DIR}/wildcard.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 独自 のワイルドカードキーと証明書を新しい環境変数にエクスポートするには、次のコマンドを入力します。
export TARGET_CUSTOM_CERT=<path_to_certificate> export TARGET_CUSTOM_KEY=<path_to_key>
$ export TARGET_CUSTOM_CERT=<path_to_certificate> $ export TARGET_CUSTOM_KEY=<path_to_key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記提供する証明書では、OpenShift クラスターの Ingress コントローラーで使用されるドメイン名を指定する必要があります。この値は、次のコマンドを実行して確認できます。
$ oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}'
ワイルドカード証明書とキーに設定した環境変数を使用して、
istio-system
namespace に TLS シークレットを作成します。oc create secret tls wildcard-certs --cert=${TARGET_CUSTOM_CERT} --key=${TARGET_CUSTOM_KEY} -n istio-system
$ oc create secret tls wildcard-certs --cert=${TARGET_CUSTOM_CERT} --key=${TARGET_CUSTOM_KEY} -n istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の内容を含む
gateways.yaml
YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow gateways.yaml
ファイルを適用して、定義されたリソースを作成します。oc apply -f gateways.yaml
$ oc apply -f gateways.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
service/knative-local-gateway created gateway.networking.istio.io/knative-ingress-gateway created gateway.networking.istio.io/knative-local-gateway created
service/knative-local-gateway created gateway.networking.istio.io/knative-ingress-gateway created gateway.networking.istio.io/knative-local-gateway created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
作成したゲートウェイを確認します。
oc get gateway --all-namespaces
$ oc get gateway --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例に示すように、
knative-serving
namespace で作成したローカルゲートウェイと Ingress ゲートウェイが表示されていることを確認します。NAMESPACE NAME AGE knative-serving knative-ingress-gateway 69s knative-serving knative-local-gateway 2m
NAMESPACE NAME AGE knative-serving knative-ingress-gateway 69s knative-serving knative-local-gateway 2m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.5. KServe のインストール リンクのコピーリンクがクリップボードにコピーされました!
KServe の手動インストールを完了するには、Red Hat OpenShift AI Operator をインストールする Red Hat OpenShift AI アドオンをインストールする必要があります。その後、Operator を使用して KServe をインストールできます。
前提条件
- OpenShift クラスターのクラスター管理者権限を持っている。
- クラスターには 4 つの CPU と 16 GB のメモリーを備えたノードがある。
- OpenShift コマンドラインインターフェイス (CLI) をダウンロードしてインストールした。OpenShift CLI のインストール (OpenShift Dedicated) または OpenShift CLI のインストール (Red Hat OpenShift Service on AWS) を参照してください。
- Red Hat OpenShift Service Mesh インスタンスが 作成 されている。
- Knative Serving インスタンスが 作成 されている。
- Knative Serving 用の セキュアなゲートウェイが作成 されている。
-
OpenShift クラスターに Red Hat OpenShift AI アドオンがインストールされている。これにより、Red Hat OpenShift AI Operator がインストールされ、デフォルトの
DataScienceCluster
オブジェクトが作成されます。
手順
- OpenShift Web コンソールにクラスター管理者としてログインします。
-
Web コンソールで、Operators
Installed Operators をクリックし、Red Hat OpenShift AI Operator をクリックします。 KServe をインストールするには、OpenShift Service Mesh コンポーネントを次のように設定します。
- DSC Initialization タブをクリックします。
- default-dsci オブジェクトをクリックします。
- YAML タブをクリックします。
spec
セクションで、次のようにserviceMesh
コンポーネントを追加して設定します。spec: serviceMesh: managementState: Unmanaged
spec: serviceMesh: managementState: Unmanaged
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックします。
KServe をインストールするには、KServe および OpenShift Serverless コンポーネントを次のように設定します。
-
Web コンソールで、Operators
Installed Operators をクリックし、Red Hat OpenShift AI Operator をクリックします。 - Data Science Cluster タブをクリックします。
- default-dsc DSC オブジェクトをクリックします。
- YAML タブをクリックします。
spec.components
セクションで、次のようにkserve
コンポーネントを設定します。spec: components: kserve: managementState: Managed
spec: components: kserve: managementState: Managed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kserve
コンポーネント内で、serving
コンポーネントを追加し、次のように設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックします。
-
Web コンソールで、Operators
4.3.6. KServe の依存関係の無効化 リンクのコピーリンクがクリップボードにコピーされました!
KServe コンポーネントを 有効にしていない (つまり managementState
フィールドの値を Removed
に設定している) 場合は、エラーを回避するために、依存する Service Mesh コンポーネントも無効にする必要があります。
前提条件
- OpenShift コマンドラインインターフェイス (CLI) または Web コンソールを使用して、KServe コンポーネントを無効にした。
手順
- OpenShift Web コンソールにクラスター管理者としてログインします。
-
Web コンソールで、Operators
Installed Operators をクリックし、Red Hat OpenShift AI Operator をクリックします。 次のようにして OpenShift Service Mesh コンポーネントを無効にします。
- DSC Initialization タブをクリックします。
- default-dsci オブジェクトをクリックします。
- YAML タブをクリックします。
spec
セクションで、serviceMesh
コンポーネントを追加し (存在しない場合)、managementState
フィールドを次のように設定します。spec: serviceMesh: managementState: Removed
spec: serviceMesh: managementState: Removed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックします。
検証
Web コンソールで、Operators
Installed Operators をクリックし、Red Hat OpenShift AI Operator をクリックします。 Operator の詳細ページが開きます。
- Conditions セクションで、ステータス値が Unknown の ReconcileComplete 条件がないことを確認します。