3.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 サポートにお問い合わせください。

3.3.1. KServe 依存関係のインストール

KServe をインストールする前に、いくつかの依存関係をインストールして設定する必要があります。具体的には、Red Hat OpenShift Service Mesh および Knative Serving インスタンスを作成し、Knative Serving 用にセキュアゲートウェイを設定する必要があります。

注記

現在、OpenShift Service Mesh v2 のみがサポートされています。詳細は、サポートされる構成 を参照してください。

3.3.1.1. OpenShift Service Mesh インスタンスの作成

次の手順は、Red Hat OpenShift Service Mesh インスタンスを作成する方法を示しています。

前提条件

  • OpenShift Container Platform クラスターのクラスター管理者権限を持っている。
  • クラスターには 4 つの CPU と 16 GB のメモリーを備えたノードがある。
  • OpenShift コマンドラインインターフェイス (CLI) がダウンロードおよびインストールされている。OpenShift CLI のインストール を参照してください。
  • Red Hat OpenShift Service Mesh Operator と依存する Operator が インストール されている。

手順

  1. ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、次の例に示すように OpenShift CLI にログインします。

    $ oc login <openshift_cluster_url> -u <admin_username> -p <password>
  2. Red Hat OpenShift Service Mesh に必要な namespace を作成します。

    $ oc create ns istio-system

    以下のような出力が表示されます。

    namespace/istio-system created
  3. smcp.yaml という名前の YAML ファイルに次の内容の ServiceMeshControlPlane オブジェクトを定義します。

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: minimal
      namespace: istio-system
    spec:
      tracing:
        type: None
      addons:
        grafana:
          enabled: false
        kiali:
          name: kiali
          enabled: false
        prometheus:
          enabled: false
        jaeger:
          name: jaeger
      security:
        dataPlane:
          mtls: true
        identity:
          type: ThirdParty
      techPreview:
        meshConfig:
          defaultConfig:
            terminationDrainDuration: 35s
      gateways:
        ingress:
          service:
            metadata:
              labels:
                knative: ingressgateway
      proxy:
        networking:
          trafficControl:
            inbound:
              excludedPorts:
                - 8444
                - 8022

    YAML ファイルの値の詳細は、Service Mesh コントロールプレーン設定リファレンス を参照してください。

  4. サービスメッシュコントロールプレーンを作成します。

    $ oc apply -f smcp.yaml

検証

  • 次のようにサービスメッシュインスタンスの作成を確認します。

    • OpenShift CLI で、次のコマンドを入力します。

      $ oc get pods -n istio-system

      前述のコマンドは、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

3.3.1.2. Knative Serving インスタンスの作成

次の手順は、Knative Serving をインストールしてインスタンスを作成する方法を示しています。

前提条件

  • OpenShift Container Platform クラスターのクラスター管理者権限を持っている。
  • クラスターには 4 つの CPU と 16 GB のメモリーを備えたノードがある。
  • OpenShift コマンドラインインターフェイス (CLI) がダウンロードおよびインストールされている。OpenShift CLI のインストール を参照してください。
  • Red Hat OpenShift Service Mesh インスタンスが 作成 されている。
  • Red Hat OpenShift Serverless Operator が インストール されている。

手順

  1. ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、次の例に示すように OpenShift CLI にログインします。

    $ oc login <openshift_cluster_url> -u <admin_username> -p <password>
  2. Knative Serving に必要なプロジェクト (つまり namespace) がすでに存在するかどうかを確認します。

    $ oc get ns knative-serving

    プロジェクトが存在する場合は、次の例のような出力が表示されます。

    NAME              STATUS   AGE
    knative-serving   Active   4d20h
  3. knative-serving プロジェクトがまだ存在 しない 場合は、作成します。

    $ oc create ns knative-serving

    以下のような出力が表示されます。

    namespace/knative-serving created
  4. 以下の内容で、default-smm.yaml という YAML ファイルに ServiceMeshMember オブジェクトを定義します。

    apiVersion: maistra.io/v1
    kind: ServiceMeshMember
    metadata:
      name: default
      namespace: knative-serving
    spec:
      controlPlaneRef:
        namespace: istio-system
        name: minimal
  5. istio-system namespace に ServiceMeshMember オブジェクトを作成します。

    $ oc apply -f default-smm.yaml

    以下のような出力が表示されます。

    servicemeshmember.maistra.io/default created
  6. knativeserving-istio.yaml という YAML ファイルに次の内容の KnativeServing オブジェクトを定義します。

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
      annotations:
        serverless.openshift.io/default-enable-http2: "true"
    spec:
      workloads:
        - name: net-istio-controller
          env:
            - container: controller
              envVars:
                - name: ENABLE_SECRET_INFORMER_FILTERING_BY_CERT_UID
                  value: 'true'
        - annotations:
            sidecar.istio.io/inject: "true" 1
            sidecar.istio.io/rewriteAppHTTPProbers: "true" 2
          name: activator
        - annotations:
            sidecar.istio.io/inject: "true"
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
          name: autoscaler
      ingress:
        istio:
          enabled: true
      config:
        features:
          kubernetes.podspec-affinity: enabled
          kubernetes.podspec-nodeselector: enabled
          kubernetes.podspec-tolerations: enabled

    前述のファイルは、KnativeServing オブジェクトのカスタムリソース (CR) を定義します。CR は、アクティベーター Pod とオートスケーラー Pod のそれぞれに次のアクションも追加します。

    1
    Istio サイドカーを Pod に注入します。これにより、Pod がサービスメッシュの一部になります。
    2
    Istio サイドカーが Pod の HTTP liveness プローブと readiness プローブを書き換えられるようにします。
    注記

    Knative サービスのカスタムドメインを設定する場合、TLS 証明書を使用してマップされたサービスを保護できます。これを行うには、TLS シークレットを作成してから、作成した TLS シークレットを使用するように DomainMapping CR を更新する必要があります。詳細は、Red Hat OpenShift Serverless ドキュメントの TLS 証明書を使用したマップされたサービスの保護 を参照してください。

  7. 指定された knative-serving namespace に KnativeServing オブジェクトを作成します。

    $ oc apply -f knativeserving-istio.yaml

    以下のような出力が表示されます。

    knativeserving.operator.knative.dev/knative-serving created

検証

  • istio-system namespace のデフォルトの ServiceMeshMemberRoll オブジェクトを確認します。

    $ oc describe smmr default -n istio-system

    ServiceMeshMemberRoll オブジェクトの説明で、Status.Members フィールドを見つけて、それに knative-serving namespace が含まれていることを確認します。

  • 次のように、Knative Serving インスタンスの作成を確認します。

    • OpenShift CLI で、次のコマンドを入力します。

      $ oc get pods -n knative-serving

      前述のコマンドは、knative-serving プロジェクト内で実行中の Pod 一覧を表示します。これは、Knative Serving インスタンスを作成したプロジェクトです。

    • knative-serving プロジェクト内に、アクティベーター、オートスケーラー、コントローラー、ドメインマッピング Pod、および OpenShift Serverless と OpenShift Service Mesh の統合を制御する Knative Istio コントローラーの Pod を含む多数の実行中の Pod があることを確認します。一例を示します。

      NAME                                     	READY       STATUS    	RESTARTS   	AGE
      activator-7586f6f744-nvdlb               	2/2         Running   	0          	22h
      activator-7586f6f744-sd77w               	2/2         Running   	0          	22h
      autoscaler-764fdf5d45-p2v98             	2/2         Running   	0          	22h
      autoscaler-764fdf5d45-x7dc6              	2/2         Running   	0          	22h
      autoscaler-hpa-7c7c4cd96d-2lkzg          	1/1         Running   	0          	22h
      autoscaler-hpa-7c7c4cd96d-gks9j         	1/1         Running   	0          	22h
      controller-5fdfc9567c-6cj9d              	1/1         Running   	0          	22h
      controller-5fdfc9567c-bf5x7              	1/1         Running   	0          	22h
      domain-mapping-56ccd85968-2hjvp          	1/1         Running   	0          	22h
      domain-mapping-56ccd85968-lg6mw          	1/1         Running   	0          	22h
      domainmapping-webhook-769b88695c-gp2hk   	1/1         Running     0          	22h
      domainmapping-webhook-769b88695c-npn8g   	1/1         Running   	0          	22h
      net-istio-controller-7dfc6f668c-jb4xk    	1/1         Running   	0          	22h
      net-istio-controller-7dfc6f668c-jxs5p    	1/1         Running   	0          	22h
      net-istio-webhook-66d8f75d6f-bgd5r       	1/1         Running   	0          	22h
      net-istio-webhook-66d8f75d6f-hld75      	1/1         Running   	0          	22h
      webhook-7d49878bc4-8xjbr                 	1/1         Running   	0          	22h
      webhook-7d49878bc4-s4xx4                 	1/1         Running   	0          	22h

3.3.1.3. Knative Serving 用の安全なゲートウェイの作成

Knative Serving インスタンスとサービスメッシュ間のトラフィックを保護するには、Knative Serving インスタンス用のセキュアゲートウェイを作成する必要があります。

次の手順では、OpenSSL を使用してワイルドカード証明書とキーを生成し、それらを使用して Knative Serving のローカルゲートウェイと Ingress ゲートウェイを作成する方法を示します。

重要

ゲートウェイの設定時に指定する独自のワイルドカード証明書とキーがある場合は、この手順のステップ 11 に進んでください。

前提条件

  • OpenShift Container Platform クラスターのクラスター管理者権限を持っている。
  • OpenShift コマンドラインインターフェイス (CLI) がダウンロードおよびインストールされている。OpenShift CLI のインストール を参照してください。
  • Red Hat OpenShift Service Mesh インスタンスが 作成 されている。
  • Knative Serving インスタンスが 作成 されている。
  • ワイルドカード証明書とキーを生成する場合は、OpenSSL を ダウンロードしてインストール している。

手順

  1. ターミナルウィンドウで、クラスター管理者として OpenShift クラスターにまだログインしていない場合は、次の例に示すように OpenShift CLI にログインします。

    $ oc login <openshift_cluster_url> -u <admin_username> -p <password>
    重要

    ゲートウェイの設定時に指定する独自のワイルドカード証明書とキーがある場合は、この手順のステップ 11 に進みます。

  2. 環境変数を設定して、ゲートウェイのワイルドカード証明書とキーを生成するためのベースディレクトリーを定義します。

    $ export BASE_DIR=/tmp/kserve
    $ export BASE_CERT_DIR=${BASE_DIR}/certs
  3. 環境変数を設定して、OpenShift クラスターの Ingress コントローラーで使用される共通名を定義します。

    $ export COMMON_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}' | awk -F'.' '{print $(NF-1)"."$NF}')
  4. 環境変数を設定して、OpenShift クラスターの Ingress コントローラーによって使用されるドメイン名を定義します。

    $ export DOMAIN_NAME=$(oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}')
  5. 以前に設定した環境変数に基づいて、証明書の生成に必要なベースディレクトリーを作成します。

    $ mkdir ${BASE_DIR}
    $ mkdir ${BASE_CERT_DIR}
  6. ワイルドカード証明書を生成するための OpenSSL 設定を作成します。

    $ cat <<EOF> ${BASE_DIR}/openssl-san.config
    [ req ]
    distinguished_name = req
    [ san ]
    subjectAltName = DNS:*.${DOMAIN_NAME}
    EOF
  7. ルート証明書を生成します。

    $ openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 \
    -subj "/O=Example Inc./CN=${COMMON_NAME}" \
    -keyout $BASE_DIR/root.key \
    -out $BASE_DIR/root.crt
  8. ルート証明書によって署名されたワイルドカード証明書を生成します。

    $ openssl req -x509 -newkey rsa:2048 \
    -sha256 -days 3560 -nodes \
    -subj "/CN=${COMMON_NAME}/O=Example Inc." \
    -extensions san -config ${BASE_DIR}/openssl-san.config \
    -CA $BASE_DIR/root.crt \
    -CAkey $BASE_DIR/root.key \
    -keyout $BASE_DIR/wildcard.key  \
    -out $BASE_DIR/wildcard.crt
    
    $ openssl x509 -in ${BASE_DIR}/wildcard.crt -text
  9. ワイルドカード証明書を確認します。

    $ openssl verify -CAfile ${BASE_DIR}/root.crt ${BASE_DIR}/wildcard.crt
  10. スクリプトによって作成されたワイルドカードキーと証明書を新しい環境変数にエクスポートします。

    $ export TARGET_CUSTOM_CERT=${BASE_CERT_DIR}/wildcard.crt
    $ export TARGET_CUSTOM_KEY=${BASE_CERT_DIR}/wildcard.key
  11. オプション: 独自 のワイルドカードキーと証明書を新しい環境変数にエクスポートするには、次のコマンドを入力します。

    $ export TARGET_CUSTOM_CERT=<path_to_certificate>
    $ export TARGET_CUSTOM_KEY=<path_to_key>
    注記

    提供する証明書では、OpenShift クラスターの Ingress コントローラーで使用されるドメイン名を指定する必要があります。この値は、次のコマンドを実行して確認できます。

    $ oc get ingresses.config.openshift.io cluster -o jsonpath='{.spec.domain}'

  12. ワイルドカード証明書とキーに設定した環境変数を使用して、istio-system namespace に TLS シークレットを作成します。

    $ oc create secret tls wildcard-certs --cert=${TARGET_CUSTOM_CERT} --key=${TARGET_CUSTOM_KEY} -n istio-system
  13. 次の内容を含む gateways.yaml YAML ファイルを作成します。

    apiVersion: v1
    kind: Service 1
    metadata:
      labels:
        experimental.istio.io/disable-gateway-port-translation: "true"
      name: knative-local-gateway
      namespace: istio-system
    spec:
      ports:
        - name: http2
          port: 80
          protocol: TCP
          targetPort: 8081
      selector:
        knative: ingressgateway
      type: ClusterIP
    ---
    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      name: knative-ingress-gateway 2
      namespace: knative-serving
    spec:
      selector:
        knative: ingressgateway
      servers:
        - hosts:
            - '*'
          port:
            name: https
            number: 443
            protocol: HTTPS
          tls:
            credentialName: wildcard-certs
            mode: SIMPLE
    ---
    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
     name: knative-local-gateway 3
     namespace: knative-serving
    spec:
     selector:
       knative: ingressgateway
     servers:
       - port:
           number: 8081
           name: https
           protocol: HTTPS
         tls:
           mode: ISTIO_MUTUAL
         hosts:
           - "*"
    1
    Knative ローカルゲートウェイの istio-system namespace にサービスを定義します。
    2
    knative-serving namespace で Ingress ゲートウェイを定義します。ゲートウェイは、この手順の前半で作成した TLS シークレットを使用します。Ingress ゲートウェイは、Knative への外部トラフィックを処理します。
    3
    knative-serving namespace で Knative のローカルゲートウェイを定義します。
  14. gateways.yaml ファイルを適用して、定義されたリソースを作成します。

    $ oc apply -f gateways.yaml

    以下のような出力が表示されます。

    service/knative-local-gateway created
    gateway.networking.istio.io/knative-ingress-gateway created
    gateway.networking.istio.io/knative-local-gateway created

検証

  • 作成したゲートウェイを確認します。

    $ oc get gateway --all-namespaces

    次の例に示すように、knative-serving namespace で作成したローカルゲートウェイと Ingress ゲートウェイが表示されていることを確認します。

    NAMESPACE         	NAME                      	AGE
    knative-serving   	knative-ingress-gateway   	69s
    knative-serving     knative-local-gateway     	2m

3.3.2. KServe のインストール

KServe の手動インストールを完了するには、Red Hat OpenShift AI Operator をインストールする必要があります。次に、KServe をインストールするように Operator を設定できます。

前提条件

  • OpenShift Container Platform クラスターのクラスター管理者権限を持っている。
  • クラスターには 4 つの CPU と 16 GB のメモリーを備えたノードがある。
  • OpenShift コマンドラインインターフェイス (CLI) がダウンロードおよびインストールされている。OpenShift CLI のインストール を参照してください。
  • Red Hat OpenShift Service Mesh インスタンスが 作成 されている。
  • Knative Serving インスタンスが 作成 されている。
  • Knative Serving 用の セキュアなゲートウェイが作成 されている。
  • Red Hat OpenShift AI Operator が インストール され、DataScienceCluster オブジェクトが 作成 されている。

手順

  1. OpenShift Web コンソールにクラスター管理者としてログインします。
  2. Web コンソールで、Operators Installed Operators をクリックし、Red Hat OpenShift AI Operator をクリックします。
  3. KServe をインストールするには、OpenShift Service Mesh コンポーネントを次のように設定します。

    1. DSC Initialization タブをクリックします。
    2. default-dsci オブジェクトをクリックします。
    3. YAML タブをクリックします。
    4. spec セクションで、次のように serviceMesh コンポーネントを追加して設定します。

      spec:
       serviceMesh:
         managementState: Unmanaged
    5. Save をクリックします。
  4. KServe をインストールするには、KServe および OpenShift Serverless コンポーネントを次のように設定します。

    1. Web コンソールで、Operators Installed Operators をクリックし、Red Hat OpenShift AI Operator をクリックします。
    2. Data Science Cluster タブをクリックします。
    3. default-dsc DSC オブジェクトをクリックします。
    4. YAML タブをクリックします。
    5. spec.components セクションで、次のように kserve コンポーネントを設定します。

      spec:
       components:
         kserve:
           managementState: Managed
    6. kserve コンポーネント内で、serving コンポーネントを追加し、次のように設定します。

      spec:
       components:
         kserve:
           managementState: Managed
           serving:
             managementState: Unmanaged
    7. Save をクリックします。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.