著者| Cunchengアリババクラウドエラスティックコンピューティングチーム
ソース| 「サーバーレステクノロジーオープンコース」から編集されたサーバーレス公式アカウント
はじめに:コースのこのセクションでは、Alibaba Cloud Serverless Kubernetes(ASK)サービスに基づいてGitLab継続的統合環境をすばやく構築する方法を紹介します。
ASK紹介
まず、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ステージはポッドに対応します。
これの利点は次のとおりです。
- 高いサービス可用性(展開+ 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クラスターを作成します
- クラスターが作成された後、基本情報にAPIサーバーのパブリックネットワークリンクアドレスが含まれます
- 接続情報にASKクラスターアクセス資格情報があります
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
7.簡単なCIタスクを実行します
git repoの.gitlab-ci.ymlはJenkinsfileに似ており、ビルドタスクのワークフローを定義します。デモプロジェクトのsrc / main / webapp / index.jspファイルを変更してから、git commit -m "change indexinfo"を送信します。gitlabのパイプラインタスクがトリガーされ、プロセス全体にコンパイル、パッケージ化、および展開が含まれます。
コスト比較
ASKとプリペイドECSの使用のコスト比較:
上記のコスト計算から、1日あたりのCI / CDタスクが126未満の場合、月額サブスクリプションでECSを購入するよりも、ASK + ECIを使用する方が費用効果が高いことがわかります。オンデマンドでの支払いを楽しみながら、運用や保守のコストも削減します。さらに重要なのは、事業規模が拡大し、CI / CDタスクの数が急増した場合、ノードノードの拡大を心配する必要がないことです。ASK + ECIソリューションは、CI / CDの継続的な統合シナリオに合わせた標準と見なすことができます。
サーバーレス公式アカウントは、サーバーレステクノロジーに関する最新情報を公開し、サーバーレステクノロジーの最も完全なコンテンツを収集し、サーバーレストレンドに注意を払い、実際に遭遇する混乱や問題にさらに注意を払います。