3.5. ワークスペースの起動を迅速化するイメージのキャッシュ
OpenShift Dev Spaces ワークスペースの起動時間のパフォーマンスを改善するには、Image Puller を使用して OpenShift クラスターのイメージの事前プルに使用できる OpenShift Dev Spaces に依存しないコンポーネントを使用します。
Image Puller は、関連する OpenShift Dev Spaces ワークスペースイメージを各ノードで事前にプルするように設定できる DaemonSet を作成する追加の OpenShift デプロイメントです。これらのイメージは、OpenShift Dev Spaces ワークスペースの起動時にすでに利用可能なため、ワークスペースの開始時間が改善されています。
- https://access.redhat.com/documentation/ja-jp/red_hat_openshift_dev_spaces/3.13/html-single/user_guide/index#installing-image-puller-on-kubernetes-by-using-cli
- 「Web コンソールを使用した OpenShift への ImagePuller のインストール」
- 「CLI を使用した OpenShift への Image Puller のインストール」
- 「デフォルトの Dev Spaces イメージを事前にプルするように Image Puller の設定」
- 「カスタムイメージを事前にプルするためのイメージプルの設定」
- 「追加のイメージを事前にプルするための Image Puller の設定」
3.5.1. CLI を使用した OpenShift への Image Puller のインストール
OpenShift oc
管理ツールを使用して、OpenShift に Kubernetes Image Puller をインストールできます。
前提条件
-
OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。OpenShift CLI の使用を開始 を参照してください。
手順
リンクに移動して、プルする関連コンテナーイメージのリストを収集します。
-
https://<openshift_dev_spaces_fqdn>/plugin-registry/v3/external_images.txt
-
https://<openshift_dev_spaces_fqdn>/devfile-registry/devfiles/external_images.txt
-
メモリー要求および制限パラメーターを定義して、コンテナーをプルし、プラットフォームに実行するのに十分なメモリーがあることを確認します。
CACHING_MEMORY_REQUEST
またはCACHING_MEMORY_LIMIT
の最小値を定義する場合は、プルする各コンテナーイメージの実行に必要なメモリー容量を考慮してください。CACHING_MEMORY_REQUEST
またはCACHING_MEMORY_LIMIT
の最大値を定義する場合は、クラスターのデーモンセット Pod に割り当てられるメモリーの合計を考慮します。(memory limit) * (number of images) * (number of nodes in the cluster)
コンテナーのメモリー制限が
20Mi
の 20 ノードで 5 つのイメージをプルする場合、2000Mi
のメモリーが必要です。Image Puller リポジトリーのクローンを作成し、OpenShift テンプレートが含まれるディレクトリーを取得します。
$ git clone https://github.com/che-incubator/kubernetes-image-puller $ cd kubernetes-image-puller/deploy/openshift
以下のパラメーターを使用して、
app.yaml
、configmap.yaml
およびserviceaccount.yaml
OpenShift テンプレートを設定します。表3.37 app.yaml の Image Puller OpenShift テンプレートパラメーター 値 使用方法 デフォルト DEPLOYMENT_NAME
ConfigMap の
DEPLOYMENT_NAME
の値kubernetes-image-puller
IMAGE
kubernetes-image-puller
デプロイメントに使用されるイメージregistry.redhat.io/devspaces/imagepuller-rhel8
IMAGE_TAG
プルするイメージタグ
latest
SERVICEACCOUNT_NAME
デプロイメントで作成され、使用される ServiceAccount の名前
kubernetes-image-puller
表3.38 configmap.yaml の Image Puller OpenShift テンプレートパラメーター 値 使用方法 デフォルト CACHING_CPU_LIMIT
ConfigMap の
CACHING_CPU_LIMIT
の値.2
CACHING_CPU_REQUEST
ConfigMap の
CACHING_CPU_REQUEST
の値.05
CACHING_INTERVAL_HOURS
ConfigMap の
CACHING_INTERVAL_HOURS
の値"1"
CACHING_MEMORY_LIMIT
ConfigMap の
CACHING_MEMORY_LIMIT
の値"20Mi"
CACHING_MEMORY_REQUEST
ConfigMap の
CACHING_MEMORY_REQUEST
の値"10Mi"
DAEMONSET_NAME
ConfigMap の
DAEMONSET_NAME
の値kubernetes-image-puller
DEPLOYMENT_NAME
ConfigMap の
DEPLOYMENT_NAME
の値kubernetes-image-puller
IMAGES
ConfigMap の
IMAGES
の値{}
NAMESPACE
ConfigMap の
NAMESPACE
の値k8s-image-puller
NODE_SELECTOR
ConfigMap の
NODE_SELECTOR
の値"{}"
表3.39 serviceaccount.yaml の Image Puller OpenShift テンプレートパラメーター 値 使用方法 デフォルト SERVICEACCOUNT_NAME
デプロイメントで作成され、使用される ServiceAccount の名前
kubernetes-image-puller
Image Puller をホストする OpenShift プロジェクトを作成します。
$ oc new-project <k8s-image-puller>
テンプレートを処理してから適用し、Puller をインストールします。
$ oc process -f serviceaccount.yaml | oc apply -f - $ oc process -f configmap.yaml | oc apply -f - $ oc process -f app.yaml | oc apply -f -
検証手順
<kubernetes-image-puller> デプロイメントおよび <kubernetes-image-puller> デーモンセットがあることを確認します。デーモンセットでは、クラスター内の各ノードに Pod が必要です。
$ oc get deployment,daemonset,pod --namespace <k8s-image-puller>
<kubernetes-image-puller>
ConfigMap
の値を確認します。$ oc get configmap <kubernetes-image-puller> --output yaml
3.5.2. Web コンソールを使用した OpenShift への ImagePuller のインストール
OpenShift Web コンソールを使用して、コミュニティーでサポートされている Kubernetes Image Puller Operator を OpenShift にインストールできます。
前提条件
- クラスター管理者による OpenShift Web コンソールセッション。Web コンソールへのアクセス を参照してください。
手順
- コミュニティーでサポートされている Kubernetes Image Puller Operator をインストールします。Web コンソールを使用した OperatorHub からのインストール を参照してください。
-
コミュニティーでサポートされている Kubernetes Image Puller Operator から
KubernetesImagePuller
オペランドを作成します。インストールされた Operator からのアプリケーションの作成 を参照してください。
3.5.3. デフォルトの Dev Spaces イメージを事前にプルするように Image Puller の設定
Kubernetes Image Puller を設定して、デフォルトの OpenShift Dev Spaces イメージを事前にプルできます。Red Hat OpenShift Dev Spaces Operator は、事前にプルするイメージのリストを制御し、OpenShift Dev Spaces のアップグレード時にそれらを自動的に更新します。
前提条件
- 組織の OpenShift Dev Spaces インスタンスが Kubernetes クラスターにインストールされ、実行されている。
- Image Puller が Kubernetes クラスターにインストールされている。
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI の使用方法 を参照してください。
手順
OpenShift Dev Spaces イメージを事前にプルするように Image Puller を設定します。
oc patch checluster/devspaces \ --namespace openshift-devspaces \ --type='merge' \ --patch '{ "spec": { "components": { "imagePuller": { "enable": true } } } }'
3.5.4. カスタムイメージを事前にプルするためのイメージプルの設定
Kubernetes Image Puller を設定して、カスタムイメージを事前にプルすることができます。
前提条件
- 組織の OpenShift Dev Spaces インスタンスが Kubernetes クラスターにインストールされ、実行されている。
- Image Puller が Kubernetes クラスターにインストールされている。
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI の使用方法 を参照してください。
手順
カスタムイメージを事前にプルするように Image Puller を設定します。
oc patch checluster/devspaces \ --namespace openshift-devspaces \ --type='merge' \ --patch '{ "spec": { "components": { "imagePuller": { "enable": true, "spec": { "images": "NAME-1=IMAGE-1;NAME-2=IMAGE-2" 1 } } } } }'
- 1
- セミコロンで区切られたイメージのリスト
3.5.5. 追加のイメージを事前にプルするための Image Puller の設定
Kubernetes Image Puller を設定して、追加の OpenShift Dev Spaces イメージを事前にプルできます。
前提条件
- 組織の OpenShift Dev Spaces インスタンスが Kubernetes クラスターにインストールされ、実行されている。
- Image Puller が Kubernetes クラスターにインストールされている。
-
宛先 OpenShift クラスターへの管理権限を持つアクティブな
oc
セッション。CLI の使用方法 を参照してください。
手順
k8s-image-puller
namespace を作成します。oc create namespace k8s-image-puller
KubernetesImagePuller
カスタムリソースを作成します。oc apply -f - <<EOF apiVersion: che.eclipse.org/v1alpha1 kind: KubernetesImagePuller metadata: name: k8s-image-puller-images namespace: k8s-image-puller spec: images: "__NAME-1__=__IMAGE-1__;__NAME-2__=__IMAGE-2__" 1 EOF
- 1
- セミコロンで区切られたイメージのリスト