このトピックでは、Distributed Cloud Container Platform for Kubernetes (ACK One) ワークフロークラスターを使用して、イメージ連続統合 (CI) パイプラインを構築する方法について説明します。
前提条件
ワークフロークラスターが作成されました。 クラスターのkubeconfigファイルは、ACK Oneコンソールから取得され、kubectlを介してワークフロークラスターに接続するために使用されます。 詳細については、「kubectlを使用したクラスターへの接続」をご参照ください。
Resource Access Management (RAM) ユーザーは、ACK Oneワークフロークラスターの管理を許可されています。
制限
このメソッドを使用して構築されたCIパイプラインは、コードコミットに基づいてイメージビルドをトリガーできません。
ACKの利点Oneワークフロークラスター
イメージCIパイプラインの構築
ACK Oneワークフロークラスターは、BuildKitツールを使用してイメージをビルドおよびプッシュします。 この例では、BuildKitはDocker Hub ( https://hub.docker.com/r/moby/buildkit ) からダウンロードできるmoby/buildkit:v0.12.1-rootlessイメージを使用してデプロイされます。
手順1: Container Registry Enterprise Editionインスタンスにログインするためのユーザー名とパスワードを保存するためのシークレットをワークフロークラスターに作成します。
Container Registry Enterprise Editionインスタンスのアクセス資格情報を設定します。 詳細については、「Container Registry Enterprise Editionインスタンスのアクセス資格情報の設定」をご参照ください。
次のコマンドを実行して、ワークフロークラスターにシークレットを作成し、認証情報を保存します。これは、BuildKitがContainer Registry Enterprise Editionインスタンスにアクセスするために使用できます。
次のコードブロックの
${workflow_kubeconfig}と$username:$passwordを実際の値に置き換えます。# repositoryDomain: For example, you can set the value to demo-test-registry.cn-hangzhou.cr.aliyuncs.com. kubectl --kubeconfig ${workflow_kubeconfig} create secret generic docker-config --from-literal="config.json={\"auths\": {\"$repositoryDomain\": {\"auth\": \"$(echo -n $username:$password|base64)\"}}}"
手順2: ワークフロークラスターでのWorkflowTemplateの作成
WorkflowTemplateを使用して、Gitリポジトリからのコードの複製、イメージの構築、およびイメージのプッシュを設定できます。
Gitリポジトリからのコードクローニング: この例では、パブリックGitリポジトリが使用されています。 プライベートGitリポジトリを使用する場合は、プライベートリポジトリにログオンするためのトークンを指定します。 例:
git clone https://[username]:[token]@ gitlab.com/demo3624733/echo-server.gitImage building and pushing: この例では、BuildKitツールを使用してイメージをビルドおよびプッシュします。
次のセクションでは、共有ストレージを使用しないWorkflowTemplateとApsara File storage NAS (NAS) を使用するWorkflowTemplateを作成する方法について説明します。
共有ストレージを使用しないWorkflowTemplateの作成
この方法では、簡単な手順でCIパイプラインを構築できます。 次のWorkflowTemplateは、initコンテナーを構成して、emptyDirボリュームにコードを複製し、一時ディレクトリにイメージを構築します。
次のYAMLテンプレートに基づいて、worktemplate-1.yamlという名前のファイルを作成します。
パラメーターセクションで、リポジトリ、ブランチ、およびイメージを指定します。 次のテンプレートのユーザー名とトークンを、実際に使用されているものに置き換えます。
次のコマンドを実行して、ワークフロークラスターにWorkflowTemplateを作成します。
kubectl -- kubeconfig ${ackone_argo_kubeconfig} apply -f worktemplate-1.yaml
NASを使用するWorkflowTemplateの作成
このメソッドは、Gitリポジトリからコードを複製するために作成されたポッドと、イメージを構築するために作成されたポッドとの間でNASを使用してデータを共有します。 ワークフロークラスターでNASボリュームをプロビジョニングする方法の詳細については、「ボリュームの使用」をご参照ください。
次のYAMLテンプレートに基づいて、worktemplate-2.yamlという名前のファイルを作成します。
パラメーターセクションで、リポジトリ、ブランチ、およびイメージを指定します。 次のテンプレートのユーザー名とトークンを、実際に使用されているものに置き換えます。
次のコマンドを実行して、ワークフロークラスターにWorkflowTemplateを作成します。
kubectl --kubeconfig ${ackone_argo_kubeconfig} apply -f worktemplate-2.yaml
ステップ3: ワークフローの作成
次のyamlテンプレートに基づいてworkflow. YAMLという名前のファイルを作成します。
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: annotations: workflows.argoproj.io/pod-name-format: v1 generateName: echo-server- spec: workflowTemplateRef: name: echo-server次のコマンドを実行して、ワークフロークラスターにワークフローを作成します。
kubectl --kubeconfig ${ackone_argo_kubeconfig} create -f workflow.yaml
ステップ4: ACK Oneコンソールでワークフローを表示する
インターネットアクセスを有効にすると、Distributed Cloud Container Platform for Kubernetes (ACK One) コンソールからArgoコンソールにアクセスできます。
ACK Oneコンソールにログインします。 左側のナビゲーションウィンドウで、[ワークフロークラスター] をクリックします。
[基本情報] タブで、[一般的な操作] セクションの [ワークフローコンソール (アルゴ)] をクリックします。
ワークフローコンソールの左側で、NAMESPACEをデフォルトに設定して、作成したワークフローを表示します。