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-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
namespace/istio-system created
namespace/istio-system createdCopy 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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のようにサービスメッシュインスタンスの作成を確認します。
OpenShift CLI で、次のコマンドを入力します。
oc get pods -n istio-system
$ oc get pods -n istio-systemCopy 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 22hCopy 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 インスタンスが作成されている。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-servingCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトが存在する場合は、次の例のような出力が表示されます。
NAME STATUS AGE knative-serving Active 4d20h
NAME STATUS AGE knative-serving Active 4d20hCopy to Clipboard Copied! Toggle word wrap Toggle overflow knative-servingプロジェクトがまだ存在 しない 場合は、作成します。oc create ns knative-serving
$ oc create ns knative-servingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
namespace/knative-serving created
namespace/knative-serving createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容で、
default-smm.yamlという YAML ファイルにServiceMeshMemberオブジェクトを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow istio-systemnamespace にServiceMeshMemberオブジェクトを作成します。oc apply -f default-smm.yaml
$ oc apply -f default-smm.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
servicemeshmember.maistra.io/default created
servicemeshmember.maistra.io/default createdCopy 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 シークレットを使用するように
DomainMappingCR を更新する必要があります。詳細は、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-servingnamespace のconfig-featureConfigMap にフラグを追加することもできます。詳細は、機能および拡張フラグ を参照してください。指定された
knative-servingnamespace にKnativeServingオブジェクトを作成します。oc apply -f knativeserving-istio.yaml
$ oc apply -f knativeserving-istio.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような出力が表示されます。
knativeserving.operator.knative.dev/knative-serving created
knativeserving.operator.knative.dev/knative-serving createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
istio-systemnamespace のデフォルトのServiceMeshMemberRollオブジェクトを確認します。oc describe smmr default -n istio-system
$ oc describe smmr default -n istio-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow ServiceMeshMemberRollオブジェクトの説明で、Status.Membersフィールドを見つけて、それにknative-servingnamespace が含まれていることを確認します。次のように、Knative Serving インスタンスの作成を確認します。
OpenShift CLI で、次のコマンドを入力します。
oc get pods -n knative-serving
$ oc get pods -n knative-servingCopy 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 インスタンスが作成されている。OpenShift Service Mesh インスタンスの作成 を参照してください。
- Knative Serving インスタンスが作成されている。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}/certsCopy 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.crtCopy 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.crtCopy 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.keyCopy 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-systemnamespace に 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-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の内容を含む
gateways.yamlYAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow gateways.yamlファイルを適用して、定義されたリソースを作成します。oc apply -f gateways.yaml
$ oc apply -f gateways.yamlCopy 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 createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
作成したゲートウェイを確認します。
oc get gateway --all-namespaces
$ oc get gateway --all-namespacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例に示すように、
knative-servingnamespace で作成したローカルゲートウェイと 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 2mCopy 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: UnmanagedCopy 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: Managedspec: components: kserve: managementState: ManagedCopy 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: RemovedCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Save をクリックします。
検証
Web コンソールで、Operators
Installed Operators をクリックし、Red Hat OpenShift AI Operator をクリックします。 Operator の詳細ページが開きます。
- Conditions セクションで、ステータス値が Unknown の ReconcileComplete 条件がないことを確認します。