パスワードを指定せずに、Container Registry Enterprise Editionインスタンスからイメージをプルできます。 これにより、操作が簡単になり、画像の引き込みが速くなります。 このトピックでは、ワークフロークラスターのイメージキャッシュを使用してワークフローポッドを作成する方法について説明します。
前提条件
Container Registry Enterprise Editionインスタンスが作成され、イメージリポジトリが設定されます。 詳細については、「Container Registry Enterprise Editionインスタンスを使用したイメージのプッシュとプル」をご参照ください。
Container Registry Enterprise EditionインスタンスのID、リージョン、およびドメイン名が記録されます。
手順1: パスワードなしでContainer Registry Enterprise Editionインスタンスからイメージをプルするようにワークフローを設定する
workflow.yamlファイルにポッド注釈annotations: k8s.aliyun.com/acr-instance-id
を追加して、Container Registry Enterprise EditionインスタンスのIDを指定します。 acr-instance-id
をRegion ID: Instance ID
形式で設定します。 ワークフローとContainer Registry Enterprise Editionインスタンスが同じリージョンにデプロイされている場合、リージョンIDを指定する必要はありません。
apiVersion: argoproj.io/v1alpha 1
kind: ワークフロー
メタデータ:
generateName: hello-world-
spec:
entrypoint: whalesay
podMetadata:
アノテーション:
k8s.aliyun.com/acr-instance-id: "cn-hangzhou:cri-f34lmbk2rxqx41u8"# Container Registry Enterprise EditionインスタンスのリージョンIDとインスタンスID。
templates:
- name: whalesay
container:
image: acr-en-hangzhou-registry.cn-hangzhou.cr.aliyuncs.com/workflow/whalesay# Container Registry Enterprise Editionインスタンスからプルするイメージ。
コマンド: [ cowsay]
args: [ "hello world" ]
ステップ2: イメージキャッシュを使用したワークフローポッドの作成
次の操作を実行して、自動的または手動でイメージキャッシュを作成し、イメージキャッシュを使用してワークフローポッドを作成します。 イメージキャッシュの使用方法の詳細については、「イメージキャッシュの使用」をご参照ください。
イメージキャッシュを自動的に作成し、イメージキャッシュを使用してワークフローポッドを作成する
ポッド注釈の注釈: k8s.aliyun.com/eci-image-cache: "true"
をworkflow.yamlファイルに追加して、画像キャッシュを有効にします。 画像キャッシュ機能を有効にすると、ワークフローは自動的に画像キャッシュを使用できます。
指定されたイメージのイメージキャッシュが既に存在する場合、ワークフローは自動的に既存のイメージキャッシュを使用してポッドを作成します。 これにより、ポッドの作成が高速化されます。
apiVersion: argoproj.io/v1alpha 1
kind: ワークフロー
メタデータ:
generateName: hello-world-
spec:
podMetadata:
アノテーション:
k8s.aliyun.com/eci-image-cache: "true"# 自動画像キャッシュを有効にするかどうかを指定します。
entrypoint: whalesay
templates:
- name: whalesay
container:
image: docker/whalesay
コマンド: [ cowsay]
args: [ "hello world" ]
イメージキャッシュを手動で作成し、イメージキャッシュを使用してワークフローポッドを作成する
imagecache.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。
apiVersion: eci.alibabacloud.com/v1 kind: ImageCache メタデータ: 名前: imagecache-helloworld アノテーション: k8s.aliyun.com/imc-enable-reuse: "true"# イメージキャッシュの再利用機能を有効にします。 仕様: images: # キャッシュを有効にするイメージ。 -docker/whalesay imagePullSecrets: # イメージリポジトリからイメージをプルするために使用されるシークレット。 公開画像を取得するために秘密は必要ありません。 -デフォルト: secret1 imageCacheSize: # イメージキャッシュのサイズ。 単位は USD / GiB です。 デフォルト値は 20 です。 有効な値: 20 ~ 32768 20 retentionDays: # イメージキャッシュの保持期間。 イメージキャッシュは、保存期間が終了すると削除されます。 単位:日 このパラメーターはデフォルトでは空のままです。これは、イメージキャッシュの有効期限が切れないことを示します。 7
次のコマンドを実行して、イメージキャッシュを作成します。
kubectl apply -f imagecache.yaml
次のコマンドを実行して、イメージキャッシュのステータスを照会します。
kubectl get imagecaches
期待される出力:
NAME AGE CACHEID PHASE PROGRESS imagecache-helloworld 3m36s imc-f8zfxxxxレディ100%
イメージキャッシュが
準備完了
状態になったら、イメージキャッシュを使用してワークフローを作成できます。ワークフローの作成を高速化するには、ワークフロー構成でイメージキャッシュのIDを指定します。
apiVersion: argoproj.io/v1alpha 1 kind: ワークフロー メタデータ: generateName: hello-world- spec: podMetadata: アノテーション: k8s.aliyun.com/eci-image-snapshot-id: 「imc-f8zf **** 」# ワークフローポッドの作成に使用するイメージキャッシュのIDを指定します。 entrypoint: whalesay templates: - name: whalesay container: image: docker/whalesay コマンド: [ cowsay] args: [ "hello world" ]