アリクラウドKubernetesサービスはゼロからGitLab+Jenkins+GitOps応用発表モデルの実践全記録を構築する
GitOpsについてはGitOps:Kubernetesマルチクラスタ環境における効率的なCICD実践を参照
1.コンテナサービスコンソールでkubernetesクラスタを作成する
1.1新規Kubernetesクラスタ:
1.2新しい名前空間gitops
gitlabとjenkinsをすべてこのネーミングスペースに配置します
2.GitLabアプリケーションの作成(既存のGitLab環境に接続可能)
コンテナ・サービス・コンソールで、「市場」>「アプリケーション・ディレクトリ」>「gitlab-ce」の順にクリックします.
パラメータでexternalUrlとgitlabRootPasswordを設定した後、gitopsネーミングスペースを選択してアプリケーションを作成します.http://ls-gitlab.example.com/,dns解析がなければ,作成に成功した後にipを直接使用することができる.
コンテナ・サービス・コンソールで、ルーティングとロードの等化->サービスをクリックしてgitlabアプリケーションのアクセス・アドレスを表示します.約2分後にgitlabにアクセスしてログインできます.
3.GitLabを設定してサンプルソース項目をアップロードする
3.1 private groupアプリケーションの新規作成
private groupアプリケーションの作成:
3.2 private projectアプリケーション-demoの新規作成とアップロード
private projectアプリケーション-demoを作成します.ソースアドレスの例:
マスターからブランチlatestを新規作成するには:
マスターとlatestブランチを設定するには、管理者のみがmergeとpushコードの操作を行うことができます.
3.3 private group buildsの新規作成
3.4 private project preview-pipeline staging-pipeline production-pipelineを新規作成してアップロードする
preview-pipelineのサンプルソースアドレスは次のとおりです.
staging-pipelineのサンプルソースアドレスは次のとおりです.
production-pipelineのサンプルソースアドレスは次のとおりです.
3つの構築プロジェクトをアップロードする前に、次のフィールドを置き換える必要があります:IMAGE_REPO:コンテナミラーを適用どのミラーウェアハウスにアップロードするか、ミラーウェアハウスアドレスdingTalkToken:釘付け通知で使用する釘付けロボットaccessTokenFetch Git Repo->credentialsId:Jenkinsがgitプロジェクトを引き出すための証明書名、Jenkinsでgitlabという証明書Fetch Git Repo->url:Jenkinsがgit repoを引くurlを作成する必要がある
preview-pipeline:
staging-pipeline
production-pipeline
3.5一般開発者ユーザーdeveloperの登録
管理者ユーザーがログインすると、アプリケーショングループの開発メンバーとして開発者ユーザーを追加します.
このときdeveloperユーザーはアプリケーショングループの下でprojectsの権限しかなく、buildsグループの権限はありません.
3.6 Jenkins構成のためのapiTokenを生成するgitlabConnection
apiTokenの生成とコピー保存:
4.Jenkinsアプリケーションの作成
コンテナ・サービス・コンソールで、市場→アプリケーション・ディレクトリ→jenkinsの順にクリックします.
パラメータにMasterを設定.AdminPasswordの値を変更し、rbacを変更します.installの値はtrueです.gitopsネーミングスペースを選択し、「作成」をクリックします.
コンテナ・サービス・コンソールで、ルーティングとロードの等化->サービスをクリックしてjenkinsアプリケーションのアクセス・アドレスを表示します.約1分後にjenkinsにアクセスしてログインできます.
5.Jenkinsを構成し、構築タスクを作成する
5.1 gitlabConnectionの構成
システム管理->システム設定->Gitlab:
設定が完了したら保存をクリックします.
5.2新規構築タスクpreview-pipeline
5.2.1新規タスクを作成し、名前を入力してラインタイプを選択し、「作成」をクリックします.
5.2.2 Build Triggers領域チェックGitLabプラグイン構成図の通り:
Advancedをクリックして、図のように詳細なオプションを設定します.
GitLab webhook URLとSecret tokenの値をコピーして保存し、Gitlab上でwebhookを構成します.
5.2.3 Pipeline領域配置preview-pipeline構築プロジェクトのgit repo
設定が完了したら、「保存」をクリックします.
5.3新規構築タスクstaging-pipeline
5.3.1新規タスクを作成し、名称を入力して流水ラインタイプを選択し、クリックして作成する:
5.3.2 Build Triggers領域チェックGitLabプラグイン配置図の通り:
Advancedをクリックして、図のように詳細なオプションを設定します.
GitLab webhook URLとSecret tokenの値をコピーして保存し、Gitlab上でwebhookを構成します.
5.3.3 Pipeline区域配置staging-pipeline構築プロジェクトのgit repo
設定が完了したら、「保存」をクリックします.
5.4新規構築タスクproduction-pipeline
5.4.1新規タスクを作成し、名前を入力して流水ラインタイプを選択し、「作成」をクリックする.
5.4.2 Build Triggers領域チェックGitLabプラグイン構成図の通り:
Advancedをクリックして、図のように詳細なオプションを設定します.
GitLab webhook URLとSecret tokenの値をコピーして保存し、Gitlab上でwebhookを構成します.
5.4.3 Pipeline領域構成production-pipeline構築プロジェクトのgit repo
設定が完了したら、「保存」をクリックします.
5.5 docker registry auth secretを作成する:
5.6 clusterrolebindingの作成サービスaccount defaultによるgitopsネーミングスペースの管理権限の付与
clusterrolebinding.yaml:
5.7匿名ユーザーの読み取り可能権限の設定
システム管理→グローバルセキュリティ管理→Authorization→Allow anonymous read accessをチェックして保存:
6.GitLab webhookの構成
アプリケーション-demoプロジェクトのwebhook構成ページにアクセスします.
6.1 jenkins job preview-pipelineをトリガするトリガの構成
図に示す:
6.2 jenkins job staging-pipelineをトリガするトリガの構成
図に示す:
6.3 jenkins job production-pipelineをトリガするトリガの構成
図に示す:
7.GitOpsモデルの配布応用
7.1 developerユーザーは次の操作を行います.
7.1.1アプリケーション-demoプロジェクトに開発ブランチfeatures/change-index-1を新規作成
7.1.2 src/main/resources/static/indexを修正する.htmlのkubernetes.svgはjenkins.svgおよび変更のコミット
7.1.3要求をlatestブランチにマージするMerge Requestの作成
Open MergeRequestの動作はjenkins job preview-pipelineの自動構築をトリガーし、以下のstages:(1)引き取りを完了します.http://xxx.xxx.xxx/builds/preview-pipeline.gitプロジェクトはJenkinsが定義した内容に従って次の内容を実行します(2)Fetch Git Repo:アプリケーションソースプロジェクトを引き出しますhttp://xxx.xxx.xxx.xxx/application/application-demo.git(3)Maven Build:パッケージング(4)Maven Test:テスト(5)Docker Build And Publish:dockerミラー構築とプッシュ(6)Kubectl Deploy:Kubernetesクラスタへの配備(本例では本クラスタの動的に作成されたネーミングスペースpreview-xxxを使用する)(7)Post Actions:釘通知
開発者はMerge Requestページの内容を表示できます
クリックするとjenkins構築ログにジャンプします.
7.1.4構築が完了すると、アプリケーション-demoアプリケーションのプレビューページが表示されます.
プレビューをクリックして適用:
アプリケーション・アクセス・リンクなどの情報は、ピン・クラスタ内で直接表示することもできます.
7.1.5プレビュー検証を適用すると、developerは管理者にこのマージを受け入れるように申請できます.
7.2管理者がlatestブランチへのMergeRequestのマージ
MRのマージ:
Accept MRの動作またはstaging-pipelineの構築をトリガーし、アプリケーション-demoプロジェクトのlatestブランチコードを引き出し、stagingネーミングスペースの下に構築および配置します.
スパイク通知を表示し、staging環境のアプリケーション-demoアプリケーションにアクセスします.
7.3管理者はlatestからmasterブランチへのMerge Requestを作成し、masterへのMerge Requestをマージする
Accept MRの動作またはproduction-pipelineの構築をトリガーし、アプリケーション-demoプロジェクトのmasterブランチコードを引き出し、productionネーミングスペースの下に構築および配置します.
スパイク通知を表示し、production環境のアプリケーション-demoアプリケーションにアクセスします.
著者:流生
原文を読む
本文は雲栖コミュニティのオリジナル内容で、許可を得ずに転載してはならない.
1.コンテナサービスコンソールでkubernetesクラスタを作成する
1.1新規Kubernetesクラスタ:
1.2新しい名前空間gitops
gitlabとjenkinsをすべてこのネーミングスペースに配置します
2.GitLabアプリケーションの作成(既存のGitLab環境に接続可能)
コンテナ・サービス・コンソールで、「市場」>「アプリケーション・ディレクトリ」>「gitlab-ce」の順にクリックします.
パラメータでexternalUrlとgitlabRootPasswordを設定した後、gitopsネーミングスペースを選択してアプリケーションを作成します.http://ls-gitlab.example.com/,dns解析がなければ,作成に成功した後にipを直接使用することができる.
コンテナ・サービス・コンソールで、ルーティングとロードの等化->サービスをクリックしてgitlabアプリケーションのアクセス・アドレスを表示します.約2分後にgitlabにアクセスしてログインできます.
3.GitLabを設定してサンプルソース項目をアップロードする
3.1 private groupアプリケーションの新規作成
private groupアプリケーションの作成:
3.2 private projectアプリケーション-demoの新規作成とアップロード
private projectアプリケーション-demoを作成します.ソースアドレスの例:
https://code.aliyun.com/haoshuwei/application-demo.git
マスターからブランチlatestを新規作成するには:
マスターとlatestブランチを設定するには、管理者のみがmergeとpushコードの操作を行うことができます.
3.3 private group buildsの新規作成
3.4 private project preview-pipeline staging-pipeline production-pipelineを新規作成してアップロードする
preview-pipelineのサンプルソースアドレスは次のとおりです.
https://code.aliyun.com/haoshuwei/preview-pipeline.git
staging-pipelineのサンプルソースアドレスは次のとおりです.
https://code.aliyun.com/haoshuwei/staging-pipeline.git
production-pipelineのサンプルソースアドレスは次のとおりです.
https://code.aliyun.com/haoshuwei/production-pipeline.git
3つの構築プロジェクトをアップロードする前に、次のフィールドを置き換える必要があります:IMAGE_REPO:コンテナミラーを適用どのミラーウェアハウスにアップロードするか、ミラーウェアハウスアドレスdingTalkToken:釘付け通知で使用する釘付けロボットaccessTokenFetch Git Repo->credentialsId:Jenkinsがgitプロジェクトを引き出すための証明書名、Jenkinsでgitlabという証明書Fetch Git Repo->url:Jenkinsがgit repoを引くurlを作成する必要がある
preview-pipeline:
staging-pipeline
production-pipeline
3.5一般開発者ユーザーdeveloperの登録
管理者ユーザーがログインすると、アプリケーショングループの開発メンバーとして開発者ユーザーを追加します.
このときdeveloperユーザーはアプリケーショングループの下でprojectsの権限しかなく、buildsグループの権限はありません.
3.6 Jenkins構成のためのapiTokenを生成するgitlabConnection
apiTokenの生成とコピー保存:
4.Jenkinsアプリケーションの作成
コンテナ・サービス・コンソールで、市場→アプリケーション・ディレクトリ→jenkinsの順にクリックします.
パラメータにMasterを設定.AdminPasswordの値を変更し、rbacを変更します.installの値はtrueです.gitopsネーミングスペースを選択し、「作成」をクリックします.
コンテナ・サービス・コンソールで、ルーティングとロードの等化->サービスをクリックしてjenkinsアプリケーションのアクセス・アドレスを表示します.約1分後にjenkinsにアクセスしてログインできます.
5.Jenkinsを構成し、構築タスクを作成する
5.1 gitlabConnectionの構成
システム管理->システム設定->Gitlab:
設定が完了したら保存をクリックします.
5.2新規構築タスクpreview-pipeline
5.2.1新規タスクを作成し、名前を入力してラインタイプを選択し、「作成」をクリックします.
5.2.2 Build Triggers領域チェックGitLabプラグイン構成図の通り:
Advancedをクリックして、図のように詳細なオプションを設定します.
GitLab webhook URLとSecret tokenの値をコピーして保存し、Gitlab上でwebhookを構成します.
5.2.3 Pipeline領域配置preview-pipeline構築プロジェクトのgit repo
設定が完了したら、「保存」をクリックします.
5.3新規構築タスクstaging-pipeline
5.3.1新規タスクを作成し、名称を入力して流水ラインタイプを選択し、クリックして作成する:
5.3.2 Build Triggers領域チェックGitLabプラグイン配置図の通り:
Advancedをクリックして、図のように詳細なオプションを設定します.
GitLab webhook URLとSecret tokenの値をコピーして保存し、Gitlab上でwebhookを構成します.
5.3.3 Pipeline区域配置staging-pipeline構築プロジェクトのgit repo
設定が完了したら、「保存」をクリックします.
5.4新規構築タスクproduction-pipeline
5.4.1新規タスクを作成し、名前を入力して流水ラインタイプを選択し、「作成」をクリックする.
5.4.2 Build Triggers領域チェックGitLabプラグイン構成図の通り:
Advancedをクリックして、図のように詳細なオプションを設定します.
GitLab webhook URLとSecret tokenの値をコピーして保存し、Gitlab上でwebhookを構成します.
5.4.3 Pipeline領域構成production-pipeline構築プロジェクトのgit repo
設定が完了したら、「保存」をクリックします.
5.5 docker registry auth secretを作成する:
$ docker login registry.cn-hangzhou.aliyuncs.com
$ kubectl -n gitops create secret generic jenkins-docker-cfg --from-file=/root/.docker/config.json
5.6 clusterrolebindingの作成サービスaccount defaultによるgitopsネーミングスペースの管理権限の付与
clusterrolebinding.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: gitops-cluster-admin
subjects:
- kind: ServiceAccount
name: default
namespace: gitops
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
$ kubectl create -f clusterrolebinding.yaml
5.7匿名ユーザーの読み取り可能権限の設定
システム管理→グローバルセキュリティ管理→Authorization→Allow anonymous read accessをチェックして保存:
6.GitLab webhookの構成
アプリケーション-demoプロジェクトのwebhook構成ページにアクセスします.
6.1 jenkins job preview-pipelineをトリガするトリガの構成
図に示す:
6.2 jenkins job staging-pipelineをトリガするトリガの構成
図に示す:
6.3 jenkins job production-pipelineをトリガするトリガの構成
図に示す:
7.GitOpsモデルの配布応用
7.1 developerユーザーは次の操作を行います.
7.1.1アプリケーション-demoプロジェクトに開発ブランチfeatures/change-index-1を新規作成
7.1.2 src/main/resources/static/indexを修正する.htmlのkubernetes.svgはjenkins.svgおよび変更のコミット
7.1.3要求をlatestブランチにマージするMerge Requestの作成
Open MergeRequestの動作はjenkins job preview-pipelineの自動構築をトリガーし、以下のstages:(1)引き取りを完了します.http://xxx.xxx.xxx/builds/preview-pipeline.gitプロジェクトはJenkinsが定義した内容に従って次の内容を実行します(2)Fetch Git Repo:アプリケーションソースプロジェクトを引き出しますhttp://xxx.xxx.xxx.xxx/application/application-demo.git(3)Maven Build:パッケージング(4)Maven Test:テスト(5)Docker Build And Publish:dockerミラー構築とプッシュ(6)Kubectl Deploy:Kubernetesクラスタへの配備(本例では本クラスタの動的に作成されたネーミングスペースpreview-xxxを使用する)(7)Post Actions:釘通知
開発者はMerge Requestページの内容を表示できます
クリックするとjenkins構築ログにジャンプします.
7.1.4構築が完了すると、アプリケーション-demoアプリケーションのプレビューページが表示されます.
プレビューをクリックして適用:
アプリケーション・アクセス・リンクなどの情報は、ピン・クラスタ内で直接表示することもできます.
7.1.5プレビュー検証を適用すると、developerは管理者にこのマージを受け入れるように申請できます.
7.2管理者がlatestブランチへのMergeRequestのマージ
MRのマージ:
Accept MRの動作またはstaging-pipelineの構築をトリガーし、アプリケーション-demoプロジェクトのlatestブランチコードを引き出し、stagingネーミングスペースの下に構築および配置します.
スパイク通知を表示し、staging環境のアプリケーション-demoアプリケーションにアクセスします.
7.3管理者はlatestからmasterブランチへのMerge Requestを作成し、masterへのMerge Requestをマージする
Accept MRの動作またはproduction-pipelineの構築をトリガーし、アプリケーション-demoプロジェクトのmasterブランチコードを引き出し、productionネーミングスペースの下に構築および配置します.
スパイク通知を表示し、production環境のアプリケーション-demoアプリケーションにアクセスします.
著者:流生
原文を読む
本文は雲栖コミュニティのオリジナル内容で、許可を得ずに転載してはならない.