操作シナリオ
現在、Tencent Container Registry(TCR)は、パーソナル版サービスとエンタープライズ版サービスを同時に提供しています。パーソナル版サービスは個人開発者向けで、コンテナイメージの保存・配布という基本機能のみを提供します。エンタープライズ版サービスは、企業のお客様に安全で専有の高性能クラウドネイティブアプリケーションアーティファクトのホスティング・配布サービスを提供できます。パーソナル版とエンタープライズ版サービスの違いについては、仕様説明を参照してください。 本記事では、主に企業のお客様がコンテナイメージデータおよび業務設定をパーソナル版からエンタープライズ版へ移行し、業務のスムーズな移行を実現する方法について説明します。
前提条件
パーソナル版サービスからエンタープライズ版サービスへ移行するには、以下の準備作業を確認し、完了する必要があります:
パーソナル版サービスを開通して利用しており、かつ移行操作アカウントにパーソナル版イメージリポジトリ内のすべてのイメージをプルする権限があること。パーソナル版権限付与ソリューション例を参照して、事前にサブアカウントにパーソナル版のすべての管理権限を付与してください。 移行ツールの実行環境を設定済みです。移行速度を向上させ、パブリックネットワークのトラフィックコストを回避するために、VPC 内でこの移行タスクを実行することを推奨します。
VPC 内で移行ツールを実行するには:ターゲットエンタープライズ版インスタンスのプライベートネットワークアクセスに、移行ツールを実行するサーバーが配置されているプライベートネットワークを追加します。詳細については、プライベートネットワークアクセス制御を参照してください。 パブリックネットワーク環境で移行ツールを実行するには:ターゲットエンタープライズ版インスタンスのパブリックアクセスエンドポイントを有効にし、アクセス元を許可します。詳細については、パブリックネットワークアクセス制御を参照してください。 データ移行
基本実行環境の準備
1. 実際のコンテナ業務の主要なデプロイリージョンでエンタープライズ版インスタンスを購入します。
2. 同じリージョン内にイメージマイグレーション用のクラウドサーバー(CVM)を 1 台準備し、できるだけ CPU/メモリ構成が高く、プライベートネットワーク帯域幅が大きい機種を選択します。CVM の起動後、最新の Docker クライアントをインストールするか、Docker がインストール済みの OS を選択します。
3. CVM が存在する VPC を当該エンタープライズ版インスタンスに接続し、自動プライベートネットワーク名前解決を有効にします。詳細については、プライベートネットワークアクセス制御を参照してください。 4. 該当インスタンスのアクセス認証情報を取得し、移行専用 CVM 上で Docker Login を実行して、該当 CVM 上でプライベートネットワーク経由で該当インスタンスに正常にアクセスでき、ログインに成功することを確認してください。
移行設定情報の準備
1. イメージリポジトリのアクセス認証情報の取得
パーソナル版イメージリポジトリのアクセス認証情報:ユーザー名は移行対象イメージが属する Tencent Cloud アカウントの UIN であり、パスワードはパーソナル版サービスを初期化した際に設定したパスワードです。パスワードを忘れた場合は、TCR コンソール > インスタンスリストに移動し、パーソナル版インスタンスを選択して、「その他」から ログインパスワードのリセット をクリックしてパスワードをリセットしてください。 エンタープライズ版イメージリポジトリのアクセス認証情報:TCR コンソール > アクセス認証情報に移動し、作成済みのエンタープライズ版インスタンスを選択して、新規作成をクリックし、移行専用の長期アクセス認証情報を生成します。これにはユーザー名とパスワードが含まれます。なお、このアクセス認証情報を生成するユーザーは、該当インスタンスの全読み取り/書き込み権限を持っている必要があります。 2. API 呼び出し認証情報の取得
イメージ移行プロセス中に、エンタープライズ版インスタンス内にネームスペースとイメージリポジトリが自動的に作成されます。この操作には Tencent Cloud API の呼び出しが必要です。アクセス管理(CAM)コンソール > アクセスキー > API キー管理 に移動して、キーを新規作成するか、既存のキーを確認できます。このキー情報は慎重に保管してください。 移行ツールのダウンロードと実行
以下のコマンドを実行して、移行専用コンテナイメージをダウンロードします:
docker pull ccr.ccs.tencentyun.com/tcrimages/image-transfer:ccr2tcr
以下のコマンドを実行して、このツールの使用説明を確認します:
docker run --network=host --rm ccr.ccs.tencentyun.com/tcrimages/image-transfer:ccr2tcr /run --help
以下のコマンドを実行して、設定情報を変更し、移行タスクを正式に実行します。
docker run --network=host --rm ccr.ccs.tencentyun.com/tcrimages/image-transfer:ccr2tcr /run --tcrName image-transfer --ccrRegionName ap-guangzhou --tcrRegionName ap-shanghai --ccrAuth username:password --tcrAuth username:password --ccrSecretId sid- example --ccrSecretKey skey-example --tcrSecretId sid-example --tcrSecretKey skey-example --tagNum 50
パラメータ説明
|
tcrName | 移行先エンタープライズ版インスタンスの名前 |
ccrRegionName、ccrRegionName | インスタンスのリージョンです。ccr(中国国内)のデフォルトは ap-guangzhou です。tcr は実際のリージョンに応じて入力してください。例えば ap-shanghai です。 |
ccrAuth、tcrAuth | イメージリポジトリのアクセス認証情報。形式:username:password。username、password に特殊文字が含まれる場合はエスケープ処理が必要です。例えば「?」は「\\?」と記述します。 |
ccrSecretId、ccrSecretKey、tcrSecretId、tcrSecretKey | Tencent Cloud API 呼び出しキーです。同じアカウントでの移行の場合、ccr と tcr の呼び出しキーは同じです。 |
tagNum | イメージリポジトリ内の最新 N 個のバージョンのイメージのみを移行するように指定 |
実行結果の確認
パーソナル版からエンタープライズ版への移行はデフォルトで全データ移行モードを使用するため、移行時間は現在のパーソナル版内のイメージリポジトリの数とサイズに直接関係します。しばらくお待ちください。
実行後に以下のコードが表示された場合、全データ移行が成功したことを示します。それ以外の場合は、該当移行ツールを再実行して再試行してください。チケットを提出 してサポートを申請できます。 業務移行
ネットワーク環境の切り替え
TCR パーソナル版にはネットワークアクセス制御機能がありません。中国国内リージョン内のサーバーはデフォルトでプライベートネットワーク経由でこのサービスにアクセスできます。TCR エンタープライズ版はネットワークアクセス制御をサポートしており、クラスターが存在する VPC をインスタンスに接続して、プライベートネットワークアクセスを許可する必要があります。
パーソナル版ネットワーク設定:設定は不要です。デフォルトではすべてのネットワーク環境からこのサービスにアクセスでき、イメージのアップロード/ダウンロードが可能です。
エンタープライズ版ネットワーク設定:
プライベートネットワークアクセス(推奨):クラスターまたはエラスティッククラスターが存在する VPC をターゲットインスタンスに接続し、VPC 内の自動名前解決を有効にするか、DNS 名前解決を自身で管理します。詳細については、プライベートネットワークアクセス制御を参照してください。 パブリックネットワークアクセス:有効にすることは推奨しません。テスト時、または外部チームにイメージを配布する必要がある場合のみ開放し、アクセスホワイトリストを設定してください。
パーソナル版イメージ設定の再利用
次のサブディレクトリのドキュメントを参照できます:パーソナル版ドメイン名を使用したエンタープライズ版インスタンスへのアクセス。この機能を使用すると、TKE クラスター、CI/CD プラットフォーム内の既存のイメージリポジトリアドレスとアクセス認証情報の設定を変更する必要がなく、お客様は最小限のコストでエンタープライズ版サービスに切り替えることができます。
長期的に使用する場合は、パーソナル版のアクセス設定をエンタープライズ版の設定に徐々に切り替えることを推奨します。これにより、後日パーソナル版サービスの変更によるアクセス異常を回避できます。
エンタープライズ版イメージ設定の使用
アクセスアドレスの切り替え
クラスターまたはエラスティッククラスターの詳細ページに移動し、左側の「ワークロード」を選択し、ワークロードの新規作成/更新を選択します。「インスタンス内コンテナ」でイメージアドレスを選択/入力するか、YAML 内の image パラメータを直接変更します。下図に示すとおりです:
パーソナル版アドレス:デフォルトは ccr.ccs.tencentyun.com/namespace/repo:tag です。デフォルトのリージョンサービスは中国香港を除く中国国内の利用可能リージョンをカバーしており、北京、上海、広州などが含まれます。中国香港のプレフィックスドメイン名は hkccr です。多階層パスはサポートされていません。
エンタープライズ版アドレス:インスタンス名 user-define をカスタマイズできます。例えば user-define.tencentcloudcr.com/namespace/repo:tag です。カスタムドメイン名をサポートしています。例えば xxx-company.com/namespace/repo:tag です。多階層パスをサポートしており、イメージアドレスは xxx-company.com/ns/sub01/sub02/repo:tag にすることができます。
アクセス認証情報の切り替え
クラスターまたはエラスティッククラスターの詳細ページに移動し、左側の「ワークロード」を選択し、ワークロードの新規作成/更新を選択します。「イメージアクセス認証情報」でアクセス認証情報を切り替えるか、YAML 内の imagePullSecret パラメータを直接変更します。下図に示すとおりです:
パーソナル版アクセス認証情報:ネームスペースを新規作成すると、デフォルトでパーソナル版アクセス認証情報(qcloudregistrykey)が発行されます。この認証情報を選択してください。
エンタープライズ版アクセス認証情報:
推奨ソリューション:TCR エンタープライズ版専用プラグインを使用してアクセス認証情報を自動的に配布・設定し、認証情報不要のプルを実現します。このソリューションではイメージアクセス認証情報を設定する必要はありません。このパラメータの既存の値を削除し、空のままにしてください。(TKE のみサポート)
手動設定:TCR エンタープライズ版インスタンス内で長期アクセス認証情報を作成し、ネームスペース内に配布するか、ワークロード作成時にイメージアクセス認証情報を新規作成できます。
エンタープライズ版導入ベストプラクティス
本記事は、パーソナル版からエンタープライズ版への移行シナリオのみを対象に、一部のベストプラクティスについて説明します。
複数インスタンスの計画
セキュリティとコンプライアンス
操作コンプライアンス
エンタープライズ版を使用するサブアカウントには最小権限を付与することを推奨します。リポジトリレベルの権限設定をサポートしており、特定のサブアカウントに対して指定されたイメージリポジトリのプル/管理のみを許可するか、よりきめ細かい API 呼び出し権限を設定できます。操作の詳細については、エンタープライズ版権限付与ソリューション例を参照してください。 異なる使用シナリオに応じて、専用の長期アクセス認証情報を作成できます。単一アカウントで作成したすべての長期アクセス認証情報はログインのみに使用され、権限はそのアカウントに対して CAM 側で設定された権限と一致します。
インスタンスへの一時的なアクセスには、一時アクセス認証情報(1 時間有効)の使用を推奨します。操作の詳細については、一時ログインコマンドの取得を参照してください。 ネットワークセキュリティ
パブリックアクセスエンドポイントを有効にしないようにしてください。外部の権限のない主体がインスタンスにアクセスしたり、自社システムがパブリックネットワーク経由でイメージをダウンロードしてパブリックネットワークアクセス費用が発生したりすることを避けてください。
インスタンスにカスタムドメインをバインドし、そのドメインのパブリックネットワークおよび VPC 内の名前解決を管理できます。
イメージ管理
リポジトリ計画
ビジネスやチームなどを分離するためにネームスペースを使用することを推奨します。これにより、今後の権限管理と同期ルールの設定が容易になります。
多階層パスをサポートしており、必要に応じて複数階層のリポジトリを作成できます。これにより、過剰なネームスペースの作成を避けられます。
イメージのプッシュによるリポジトリの自動作成をサポートし、ネームスペース階層で公開/プライベートなどのデフォルト属性を設定できます。
注意:ネームスペース、イメージリポジトリなどはすべてパスマーカーであり、バックエンドのデータストレージは分離されていません。
バージョン命名
本番環境で latest を使用してイメージバージョンを更新することは避けてください。サービスの更新およびロールバックに影響を及ぼす可能性があります。
CI ツールを使用してイメージに自動的に名前を付けることを推奨します。これにより、後続のバージョン管理とイメージ同期が容易になります。
注意:指定バージョンのイメージを削除すると、同じ digest のイメージも同時に削除されます。
CI/CD
エンタープライズ版の組み込みサービスを使用する
エンタープライズ版の CI/CD 機能は完全に Tencent Cloud CODING DevOps 製品に基づいています。この製品を有効化し、基本設定を完了する必要があります。
イメージビルドをサポートし、コードソースとして GitHub、GitLab、Tencent Git、Gitee、CODING などを選択できます。
デリバリーパイプラインをサポートし、イメージをクラスター、エラスティッククラスター、エッジクラスターに自動的にデプロイできます。
外部サービスとの連携
トリガー(webhook)機能を使用して既存の CI/CD システムと連携できます。イメージをプッシュすると自動的に webhook 通知がトリガーされ、メッセージ本文にはイメージの基本情報が含まれます。詳細については、トリガーの管理を参照してください。 CODING DevOps のフルサービスを直接使用できます。TCR 関連のテンプレートが既に組み込まれています。