操作シナリオ
本記事では、Tencent Kubernetes Engine(TKE)Serverless クラスターで TCR エンタープライズ版インスタンス内のコンテナイメージをプルし、ワークロードを作成する方法について説明します。
前提条件
Tencent Container Registry(TCR)エンタープライズ版でホストされているプライベートイメージを使用してアプリケーションをデプロイする前に、以下の準備作業を完了する必要があります:
操作手順
コンテナイメージの準備
ステップ 1:ネームスペースの作成
新規作成された TCR エンタープライズ版インスタンスにはデフォルトのネームスペースが存在せず、イメージをプッシュして自動的に作成することもできません。ネームスペースの作成を参照して、必要に応じて作成してください。 ネームスペース名にはプロジェクト名またはチーム名を使用することを推奨します。本記事では docker を例に説明します。作成に成功すると、下図のようになります: ステップ 2:イメージリポジトリの作成(オプション)
コンテナイメージは特定のイメージリポジトリ内でホストされます。イメージリポジトリの作成を参照して、必要に応じて作成してください。イメージリポジトリ名は、デプロイするコンテナイメージ名に設定してください。本記事では getting-started を例に説明します。作成に成功すると、下図のようになります: 説明
docker cli やその他のイメージツール(例:jenkins)を使用してイメージをエンタープライズ版インスタンスにプッシュする際、イメージリポジトリが存在しない場合は自動的に作成されるため、事前に手動で作成する必要はありません。
ステップ 3:コンテナイメージのプッシュ
1. docker cli またはその他のイメージビルドツール(例:jenkins)を使用してイメージを指定のイメージリポジトリにプッシュできます。本記事では docker cli を例に説明します。この手順では、Docker がインストールされたクラウドサーバー(CVM)または物理マシンを使用し、アクセスするクライアントがネットワークアクセスポリシーの設定で定義されたパブリックネットワークまたはプライベートネットワークの許可範囲内にあることを確認する必要があります。 3. ログインに成功すると、ローカルで新しいコンテナイメージをビルドするか、DockerHub からパブリックイメージを取得してテストに使用できます。
本記事では、DockerHub 公式の Nginx 最新イメージを例に、コマンドラインツールで以下のコマンドを順番に実行すると、そのイメージをプッシュできます。demo-tcr、docker、getting-started を、実際に作成したインスタンス名、ネームスペース名、イメージリポジトリ名に順番に置き換えてください。
docker tag getting-started:latest demo-tcr.tencentcloudcr.com/docker/getting-started:latest
docker push demo-tcr.tencentcloudcr.com/docker/getting-started:latest
4. プッシュが成功したら、コンソールのイメージリポジトリページに移動し、リポジトリ名を選択して詳細ページで確認できます。 TKE Serverless クラスターからの TCR インスタンスへのアクセス設定
データセキュリティを保護するため、TCR および TKE Serverless は初期状態ではすべてのパブリックネットワークおよびプライベートネットワークからのアクセスを拒否します。TCR のイメージを TKE Serverless にデプロイする前に、ネットワークアクセスポリシーを設定してください。
TCR エンタープライズ版インスタンスはネットワークアクセス制御をサポートしています。TKE Serverless クラスターのネットワーク設定に応じて、パブリックネットワークまたはプライベートネットワークを介して指定インスタンスにアクセスし、コンテナイメージをプルできます。TKE Serverless クラスターと TCR インスタンスが同じリージョンにデプロイされている場合は、プライベートネットワーク経由でコンテナイメージをプルすることを推奨します。この方法はプル速度を向上させ、パブリックネットワークのトラフィックコストを節約できます。
ステップ 1:TCR インスタンスにクラスター VPC を関連付ける
ユーザーデータセキュリティを保護するため、新規作成された TCR インスタンスはデフォルトですべての送信元からのアクセスを拒否します。指定した TKE Serverless クラスターが TCR インスタンスにアクセスしてイメージをプルできるようにするには、クラスターが存在する VPC を TCR インスタンスに関連付け、対応するプライベートネットワーク名前解決を設定する必要があります。
ステップ 2:TCR インスタンスのアクセス認証情報の取得
TCR インスタンスからコンテナイメージをプルするには、まず認証情報を使用してインスタンスにログインする必要があります。インスタンスアクセス認証情報の取得を参照して、そのインスタンスの長期アクセス認証情報を保存し、後で TCR イメージを設定・デプロイするために使用してください。 TCR インスタンス内のコンテナイメージを使用したワークロードの作成
2. クラスター一覧で、Serverless クラスター ID を選択し、クラスター詳細ページに移動します。
3. クラスター詳細ページで、左側のワークロード > Deployment を選択します。
4. Deployment ページで、新規作成をクリックします。
5. Deployment の新規作成ページで、以下の主要パラメータ情報を参照して、ワークロードを作成します。
ネームスペース:必要に応じてクラスターのネームスペースを選択します。
インスタンス内コンテナ:
イメージ:イメージの選択をクリックし、表示された「イメージの選択」ウィンドウで、TCR エンタープライズ版を選択し、必要に応じてリージョン、インスタンス、イメージリポジトリを選択します。下図に示すとおりです:
イメージバージョン:イメージを選択した後、イメージバージョンの選択をクリックし、表示された「イメージバージョンの選択」ウィンドウで、必要に応じてこのイメージリポジトリのいずれかのバージョンを選択します。選択しない場合は、デフォルトで latest になります。
イメージアクセス認証情報:イメージアクセス認証情報の追加をクリックし、ドロップダウンリストで新しいアクセス認証情報を使用を選択します。下図に示すとおりです: アクセス認証情報の設定をクリックし、表示された「イメージアクセス認証情報の新規作成」ウィンドウで、このイメージのリポジトリドメイン名、ユーザー名、パスワードを正しく入力します。
リポジトリドメイン名:TCR コンソールにログインし、左側のナビゲーションバーでイメージリポジトリを選択すると、必要なイメージのリポジトリアドレスを取得できます。 ユーザー名:アカウント情報に移動してアカウント ID を取得します。アカウント ID がユーザー名です。 パスワード:上記のステップ 2:TCR インスタンスのアクセス認証情報の取得で取得したアクセス認証情報がパスワードです。 アクセス設定(Service):ユーザーは Kubernetes でさまざまなコンテナをデプロイできます。その一部は HTTP、HTTPS プロトコルを通じて外部にレイヤー 7 ネットワークサービスを提供し、別の一部は TCP、UDP プロトコルを通じてレイヤー 4 ネットワークサービスを提供します。一方、Kubernetes で定義された Service リソースは、クラスター内のレイヤー 4 ネットワークのサービスアクセスを管理するために使用できます。以下の主要なパラメータ情報を参照して、アクセス設定を完了してください。
Service:有効にチェックを入れます。
サービスアクセス方式:VPC プライベートネットワークアクセスを選択します。
6. 他のパラメータ設定を完了した後、Deployment の作成をクリックし、このワークロードのデプロイ進捗を確認します。
デプロイが成功した後、Deployment ページでこのワークロードの「実行中/期待される Pod 数」が「1/1」であることを確認できます。下図に示すとおりです: