# Talend Management Consoleタスク向けのカスタムDockerレジストリの設定

Dynamic Engine環境内のデータ統合ジョブ、ビッグデータジョブ、データサービス、ルート向けに、外部Dockerレジストリを設定します。

外部Dockerレジストリは環境ごとに設定されます。

情報メモヒント: バージョン1.6.0より前のDynamic Engineでは、この手順はデータサービスおよびルートタスクにのみ適用されます。

## 始める前に

* レジストリがHTTPS経由でアクセス可能であることを確認します。
* dynamic-engine-crdカスタムリソース定義は、oci://ghcr.io/talend/helm/dynamic-engine-crd Helmチャートを使用してインストールされている必要があります。インストールされていない場合は、次のコマンドを実行してインストールしてください。
  1. 使用するチャートのバージョンを見つけます。

     * 次のHelmコマンドを実行します:
       ```
       helm show chart oci://ghcr.io/talend/helm/dynamic-engine-crd --version <engine_version>
       ```
     * Talend Management Consoleから直接バージョンを見るか、自分のDynamic Engineバージョンに含まれているチャートバージョンの[Dynamic Engine変更ログ](https://help.qlik.com/talend/en-US/dynamic-engine-changelog/Cloud)をチェックしてください。
     * [Dynamic Engineバージョンエンドポイント](https://talend.qlik.dev/apis/dynamic-engine/2021-03/#operation_return-all-supported-dynamic-engine-versions)へのAPIコールを使用します。

  2. 次のコマンドを実行し、目的のバージョンのHelmチャートをインストールします。

     ```
     helm install dynamic-engine-crd oci://ghcr.io/talend/helm/dynamic-engine-crd --version <helm_chart_version>
     ```

     &lt;helm\_chart\_version&gt;を、お使いのDynamic Engineバージョンでサポートされているチャートのバージョンに置換します。

     バージョンを指定しないと、利用可能な最新のdynamic-engine-crdチャートバージョンがインストールされます。

## 手順

1. 外部レジストリ接続用のカスタムvaluesファイルを作成するには、次のコマンドを実行します。
   ```
   cat <<EOF > custom-artifact-registry-values.yaml
   configuration:
     registry:
       url: myregistry.example.com
       path: my-specific-registry
       username: foo
       password: bar
       secretName: my-specific-registry
   EOF
   ```

   このコマンドは、レジストリ接続の資格情報を提供するvaluesファイルを作成します。シークレットは機密情報を保存するためのKubernetesオブジェクトです。

   資格情報が必要ない場合は、username、password、secretNameフィールドを空のままにします。
2. カスタムvaluesファイルを使用して Dynamic Engine 環境をインストールまたはアップグレードするには、次のコマンドを実行します。
   ```
   helm upgrade --install dynamic-engine-environment-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
    -f $DYNAMIC_ENGINE_ENVIRONMENT_ID-values.yaml \
    -f custom-artifact-registry-values.yaml \
    oci://ghcr.io/talend/helm/dynamic-engine-environment \
    --version $DYNAMIC_ENGINE_VERSION
   ```

   このコマンドは、Dynamic Engine 環境がインストールされているかどうかに応じて、環境をアップグレードまたはインストールします。
3. デプロイメントを検証します。
   * 対応する Dynamic Engine 環境ネームスペースで、次を確認します。
     * dpe-data-service-route-deployerポッドが実行中であること。
     * レジストリに資格情報が必要な場合は、my-specific-registryおよびdpe-data-service-route-deployerシークレットが存在し、my-specific-registryにはレジストリ認証を表す.dockerconfigjson値が含まれ、dpe-data-service-route-deployerにREGISTRY\_CREDENTIALS値が含まれていること。
   * タスクをデプロイした後、次のコマンドを実行して、レジストリに画像が存在することを確認します。
     ```
     docker pull myregistry.example.com/my-specific-registry/<artifact_name>:<artifact_version>
     ```

## タスクの結果

Dynamic Engineは現在、タスクイメージ用に独自のDockerレジストリに接続して利用できるようになっていますが、そのレジストリサービスはDynamic Engineの外部で設定する必要があります。Dynamic Engineには、レジストリを設定するための機能は提供されていません。

情報メモヒント: Dynamic Engineには、迅速なデプロイを可能にするための内部Dockerレジストリが含まれています。このレジストリは本番環境での使用は推奨されず、本番環境におけるオートスケーリング用にカスタマイズすべきではありません。

本番環境において、オートスケーリングの設定など、内部Dockerレジストリをカスタマイズしている場合は、その設定を独自の外部Dockerレジストリ用のvaluesファイルに移行し、目的のDynamic Engine環境に対してそのファイルをデプロイしてください。たとえば、以下のようにします。

```
cat <<EOF > autoscaling-external-registry.yaml
configuration:
  dockerRegistry:
    replicaCount: 2
    autoscaling:
      enabled: true
      maxReplicas: 5
EOF
```

その設定を内部Dockerレジストリに保持する必要がある場合、そのセットアップは本番環境での使用には適さない点にご注意ください。また、オートスケーリングのために複数のレプリカを使用する場合など、多くのユースケースにおいては、Dynamic Engineの永続共有ストレージ設定をtrue (configuration.persistence.enabled=true)のままにしておく必要があります。この場合、Dynamic Engineおよびそのすべての環境をデプロイする上で、永続的な共有ストレージが要件となります。