GitLabの継続的な統合環境をすばやく構築するための7つのステップを教えてください

ヘッドpicture.jpg

著者| Cunchengアリババクラウドエラスティックコンピューティングチーム
ソース| 「サーバーレステクノロジーオープンコース」から編集されたサーバーレス公式アカウント

はじめに:コースのこのセクションでは、Alibaba Cloud Serverless Kubernetes(ASK)サービスに基づいてGitLab継続的統合環境をすばやく構築する方法を紹介します。

ASK紹介

1.PNG

まず、ASKとは何ですか?ASKは、AlibabaCloudによって開始されたサーバーレスKubernetesコンテナサービスです。従来のKubernetesサービスと比較すると、ASKの最大の機能は、仮想ノードを介してKubernetesクラスターに接続し、KubernetesマスターノードもAlibaba Cloud ContainerServiceによって完全にホストされていることです。したがって、ASKクラスター全体で、ユーザーは実際のノードを管理および操作する必要はなく、ポッドリソースのみを気にする必要があります。ASKのポッドは、Alibaba Cloud Elastic Container InstanceECIによってホストされます。

ASKの主な利点は次のとおりです。

  • ユーザーがノードノードを管理せずにKubernetesを使用するためのしきい値を下げます。
  • ノード容量の計画を考慮する必要はありません。
  • ポッドに基づくオンデマンド請求。
  • ダウンタイムの失敗による影響は小さく、ポッドレベルです。

同時に、ASKの主な適用可能なシナリオは次のとおりです。

  • オンラインビジネスの柔軟性(ビデオライブ放送、オンライン教育);
  • ビッグデータコンピューティング(スパーク);
  • 時限タスク
  • CI / CDの継続的な統合。

ASKでのGitLabCIの利点

CI / CDと言えば、最もよく知られている2つのツールはJenkinsとGitLab CIです。Devopsの役割の人気により、継続的な統合ツールとしてGitLabCIを採用する企業が増えています。 ASKでGitLabCIをダウンロードします。gitlab-runnerはポッドとしてASKクラスターに登録され、各CI / CDステージはポッドに対応します。

2.png

これの利点は次のとおりです。

  • 高いサービス可用性(展開+ PVC);
  • K8のマスターノードとノードノードを維持する必要はありません。構築タスクがなければ、実行する必要があるポッド(gitlab-runner)は1つだけです。
  • ビルドタスクをトリガーし、ポッドを開始して、オンデマンドで課金します。
  • ダウンタイムの失敗は、ユニットとしてのポッドにのみ影響します。

実用的なデモンストレーション

次に、Alibaba Cloud ASKクラスターにgitlab-runnerをデプロイし、gitlabCICDパイプラインを介してJavaアプリケーションをASKクラスターにデプロイする方法を示します。

関連する主な知識ポイントは次のとおりです。

  • configMapを使用してgitlabrunnerとexecutorの構成を保存します。
  • シークレットを介して、ASKクラスターのアクセス資格情報とミラーウェアハウスのキーを保存します。
  • PVCを介してランナーキャッシュとメイヴンウェアハウスをキャッシュします。
  • imageCacheを介してコンテナイメージをキャッシュします。

このレッスンに関係するすべての構成ファイル(yaml)は、誰もがダウンロードできるようにgithubにアップロードされています[ダウンロードリンク]。

デモンストレーションを始めましょう。ビデオデモンストレーションについては、[リンクを見る]をクリックしてください

1.ASKクラスターを準備します

  • [ Container ServiceConsole]標準のサーバーレスK8sクラスターを作成します

3.png

  • クラスターが作成された後、基本情報にAPIサーバーのパブリックネットワークリンクアドレスが含まれます

4.png

  • 接続情報にASKクラスターアクセス資格情報があります

5.png

2. PV / PVCを準備します

gitlabランナーキャッシュ用とmavenウェアハウス用の2つのnasディスクを準備します。nasサーバーのアドレスとパスを自分で置き換えてください

kubectl apply -f mvn-pv.yaml
kubectl apply -f mvn-pvc.yaml
kubectl apply -f nas-pv.yaml
kubectl apply -f nas-pvc.yaml

3.秘密を準備する

  • kubeconfigの証明書の公開鍵と秘密鍵をsecret、secret.yamlにコピーします
kubectl apply -f secret.yaml
  • docker-registry、ECIの認証情報はパスワードなしのプルをサポートしていますが、プッシュドッカーイメージを使用する必要があります
kubectl create secret docker-registry registry-auth-secret --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=${xxx} --docker-password=${xxx}
  • 生成されたシークレットを表示するには、次のコマンドを使用できます
kubectl get secret registry-auth-secret --output=yaml

4.ConfigMapを準備します

gitlabランナーのURLとトークン、およびASKクラスターのapiサーバーアドレスをconfig.yamlにコピーします。

kubectl apply -f config-map.yaml

5. imageCacheを準備します(オプション、画像のプル時間を節約します)

現在、AS Kはデフォルトでimagecache-crdをインストールしますが、次のコマンドを使用してクエリを実行できます。そうでない場合は、自分でインストールできます。

# 查看image cache crd 是否安转
kubectl get crd
# 安装image cache crd
kubectl apply -f imagecache-crd.yaml
# 制作imagecache
kubectl apply -f imagecache.yaml

6.gitlabランナーを展開します

kubectl apply -f gitlab-runner-deployment.yaml

6.png

7.簡単なCIタスクを実行します

7.png

git repoの.gitlab-ci.ymlはJenkinsfileに似ており、ビルドタスクのワークフローを定義します。デモプロジェクトのsrc / main / webapp / index.jspファイルを変更してから、git commit -m "change indexinfo"を送信します。gitlabのパイプラインタスクがトリガーされ、プロセス全体にコンパイル、パッケージ化、および展開が含まれます。

8.png

9.png

コスト比較

ASKとプリペ​​イドECSの使用のコスト比較:

10.png

上記のコスト計算から、1日あたりのCI / CDタスクが126未満の場合、月額サブスクリプションでECSを購入するよりも、ASK + ECIを使用する方が費用効果が高いことがわかります。オンデマンドでの支払いを楽しみながら、運用や保守のコストも削減します。さらに重要なのは、事業規模が拡大し、CI / CDタスクの数が急増した場合、ノードノードの拡大を心配する必要がないことです。ASK + ECIソリューションは、CI / CDの継続的な統合シナリオに合わせた標準と見なすことができます。

サーバーレス公式アカウントは、サーバーレステクノロジーに関する最新情報を公開し、サーバーレステクノロジーの最も完全なコンテンツを収集し、サーバーレストレンドに注意を払い、実際に遭遇する混乱や問題にさらに注意を払います。

おすすめ

転載: blog.51cto.com/14902238/2562256