Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Azure Pipelinesを使用したCICDベースラインアーキテクチャ実践
Search
yutakaosada
July 17, 2024
Technology
54
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Azure Pipelinesを使用したCICDベースラインアーキテクチャ実践
2024/07/16(水)にJapan Azure Users Groupで登壇させて頂いた際の資料です。
yutakaosada
July 17, 2024
More Decks by yutakaosada
See All by yutakaosada
数値で見る Microsoft MVP 〜Spec Kit と GitHub Copilot Agent で作るデータ可視化ダッシュボード〜
yutakaosada
0
210
20260714_actions-migrations-via-copilot で見る Agentic DevOps の実践
yutakaosada
0
83
20260626_生成AIで「見える化」する Microsoft MVP-公開データの集計・分析ダッシュボード実装
yutakaosada
0
24
20260625_Outlook の返信下書きを自動生成する - Power Automate × Azure OpenAI で考える M365 拡張
yutakaosada
0
110
20260414_Agentic_AIで加速するDevOpsフィードバックループ___サポートチケットをSLAリスクのシグナルに変える
yutakaosada
0
22
20260116_開発者にスポットライトを当てる:GitHub 貢献ダッシュボードを作った話
yutakaosada
0
45
20260110_GitHub移行の現在地-ツール選定と移せないものの見極め
yutakaosada
0
270
20251111_GitHub Starsになってやってみたいこと - 実装と再現性でコミュニティに貢献する
yutakaosada
0
170
20251025_GitHub Copilot活用度を“計測できる”にする-Cron×Dapr×Cosmos DBで作るバックエンド
yutakaosada
0
280
Other Decks in Technology
See All in Technology
全社に広がるMCPサーバーを、 どう安全に管理するか MCPass開発の舞台裏
mtpooh
3
180
When Token Pruning is Worse than Random: Understanding Visual Token Information in VLLMs
sansantech
PRO
0
130
AI時代のデータ基盤を考える問い
pacocat
0
740
EMの役割で 変わったこと・変わらなかったこと
sansantech
PRO
0
190
AIエージェントのためのデータ設計
daiz21
0
520
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
20k
紙 to デジタル
ichien178
0
340
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
880
信頼性はSREだけのものじゃない
hkawaras
0
280
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1.2k
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
130
Kiro Crew で始める マルチエージェント開発
miu_crescent
PRO
0
200
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
450
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Google's AI Overviews - The New Search
badams
0
1.6k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
It's Worth the Effort
3n
188
29k
So, you think you're a good person
axbom
PRO
2
2.1k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
670
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
490
Discover your Explorer Soul
emna__ayadi
2
1.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Transcript
Azure Pipelinesを使用したCI/CDベー スラインアーキテクチャ実践 2024/7/16 yuriemori, yutakaosada
Agenda Introduction 今日話すこと 自己紹介 クラシックパイプライン以降のAzure Pipelinesの構成プラクティス
さよならクラシックパイプライン 主な変更点 変更後のYAMLベースのパイプラインのメリット ベースラインアーキテクチャをもとにしたYAMLベースでのAzure Pipelines構築 YAMLベースでのパイプラインの実装とデプロイ計画 Demo PR/CI/CDパイプライン Azure Key Vaultに格納したシークレットをパイプラインから参照する EnvironmentのApprovals&Checksによるデプロイターゲット環境へのデプロイの承認 まとめ
Introduction
今日話すこと クラシックパイプライン非推奨後のAzure Pipelinesの変更点 Azure Pipelinesのベースラインアーキテクチャに沿った構成とデプロイの制御 YAMLでのマルチステージパイプラインの構成
Azure Key Vaultを利用したパイプラインで使用するシークレットの管理
Yurie Mori(森 友梨映) DevOps Engineer @Avanade Japan お仕事
AgileとDevOpsの実践の支援 DevOpsソリューション( Azure DevOps/GitHub )の導入・構築 GenAI assisted with SDLC 技術スタック Azure DevOps, GitHub, Azure, .NET, C# Please follow me
Yutaka Osada(⾧田 豊) DevOps Engineer @Avanade Japan お仕事
Azureコンポーネントを活用したサービス構築 技術検証、パフォーマンスチューニングを得意とし、T-SQLが好き。 技術スタック C#, .NET, Azure(PaaS), Azure DevOps, Sitecore Please follow me
クラシックパイプライン以降のAzure Pipelinesの構成プラクティス
さよならクラシックパイプライン 2023年1月にAzure DevOpsでクラシックパイプラインの作成を禁止するリリー スが発表されました。 2023年3月以降に作成されるOrganizationではクラシックパイプラインの作成 はデフォルトでは無効になっており、YAMLベースのパイプライン構成が推奨と なります。 これが使えなくなります
主な変更点(1/2) クラシックリリースパイプライン無効後の Azure Pipelinesメニュー クラシックリリースパイプライン無効前の 組織のAzure Pipelinesメニュー GUIベースでパイプラインの作成 をサポートしていたこれらのメ ニューが消滅
パイプラインはビルド/リリース問わず YAMLファイルで構成するように
(最新)YAMLベースでのパイプラインで の代替手段 クラシックリリース パイプライン クラシックビルド パイプライン 概要 機能 Environmentでデプロイターゲットを指定 〇
× デプロイターゲットマシンの論理 セットを定義 デプロイグループ YAMLでデプロイジョブを定義 〇 × デプロイグループにリリースする ジョブを指定 デプロイグループ ジョブ EnvironmentでのApprovals&Checksを使用 〇 × リリースステージを完了する前の 外部の正常性シグナルの自動収集 と評価をサポート(アプリケー ションを特定の環境にデプロイす る前のチェック) リリースゲート YAMLファイルで再利用したいタスク群を テンプレートファイルとして定義する 〇 〇 一連のタスクを再利用可能な1つ のタスクにカプセル化 タスクグループ 主な変更点(2/2) クラシックパイプラインで使用できた機能で使えなくなるものたちとYAMLベースパイプラインでの代替手段
変更後のYAMLベースのパイプラインのメリット パイプラインをソースコードと同様にバージョン管理できる YAMLファイルはソースコードと同じリポジトリで管理できるため、変更履歴を追跡し やすく、過去のバージョンに簡単に戻すことができる。 レビューが容易になる ソースコードと同様に、変更をマージするためにPRを強制することで、悪意のある行
為者がパイプラインに悪意のあるステップを導入するのを防ぐことができる(ブランチ ポリシーを使用することでPRの強制ができる) リソースアクセス管理が可能 リソース所有者は、YAML パイプラインがリソースにアクセスできるかどうかを制御で き、別のリポジトリを盗むなどの攻撃の防止が可能となる。 承認とチェックにより、パイプラインの実行ごとに機能するアクセス制御が提供される。 セキュリティの向上 シークレットの露出防止: シークレットや機密情報をパイプラインファイルにハード コーディングすることなく、Azure Key Vaultなどのシークレット機構に格納された情報 をランタイムパラメーターとして動的に渡すことができるため、リポジトリに機密情報 が含まれるリスクの軽減が可能となる。 参考:https://devblogs.microsoft.com/devops/disable-creation-of-classic-pipelines/
ベースラインアーキテクチャをもとにしたYAMLベー スでのAzure Pipelines構築 参考:https://learn.microsoft.com/ja-jp/azure/devops/pipelines/architectures/devops- pipelines-baseline-architecture?view=azure-devops
demo
デモでお見せするもの PR/CI/CDパイプライン Azure Key Vaultに格納したシークレットをパイプラインから参照する EnvironmentのApprovals&Checksによるデプロイターゲット環境へのデプロイの承認 ベースラインアーキテク
チャのここの部分
demo architecture Azure Azure DevOps Managed Id App Service Dev
Env App Service Staging Env Azure Repos Azure Pipelines Environments Library Pipelines PR Pipeline CI/CD Pipeline Key Vaultよりシークレット情報 を取得 Completed 1 2 5 4 Defender for Cloud DevOps Key Vault Secret Environmentsに定義した環境に対応する App Serviceに対する承認チェック Analize stageによる セキュリティチェック Azure DevOps for Workload identity 承認プロセスが構成された環境へのデプロイは、 承認者からの承認されるまで実行されない Pull request Approved 3 Developer Reviewer Service connection 6 7 Pull Request作成時にPR Pipelineを起動
☆ポイント AzDO⇔Azure間接続 サービスコネクション(workload identity) Pipelines Library(Key Vaultへの接続)
Pipelines Environments(デプロイターゲットの定義) PR・CI/CD Pipelinesの構築 パイプラインの実行許可 Approvalチェックの指定 ブランチポリシーへPRパイプラインを指定 ソースコード変更し、Pull Request PR パイプラインを起動 ソースコードApprove→CI/CD起動→完了後タブの説明
ベースラインアーキテクチャをもとにしたYAMLベースでの Azure Pipelines構築 – PR Pipeline PR Pipelines
PR作成をトリガーとするパイプライン 以下を実行 コード解析(Linterによるフォーマットチェック、静的コード解 析によるセキュリティチェック) 依存関係の回復 ビルド 単体テストの実行 PR作成時に上記の様々なチェック/テストを実行するため、 レビュアーのレビュー負担を軽減することができる これらの処理が失敗した場合、PRはマージできないため、問 題のあるソースコードが⾧命ブランチに混入するのを早期に 防ぐことができる PR作成をトリガーにするこのパ イプラインのみ、トリガーは チェック対象のブランチ設定 >Build Validationで設定する
CI Pipelines 特定のブランチへのpushをトリガーとするパイプライン 以下を実行 PR Pipelineで実行していた処理内容
+ 結合テスト/UIテスト(ここで使用するシークレットをAzure Key Vaultから参照してテストを実 行) ビルド成果物の発行 ソースコードをリリース可能な状態にする CD Pipeline ビルド成果物のダウンロード 受入テスト 各環境へのデプロイを実行する 本番環境など重要な環境へのデプロイに関してはApprovals & Checksでデプロイ前の承認を 構成する(クラシックリリースパイプラインにおけるリリースゲートの役割) これらのCI,CD Pipelineは1つのYAMLファイルでマルチステージパイプラインとして構成 する(CDを分けるとエージェントが異なってしまうのでCIで作成した成果物のDLができ ない) ベースラインアーキテクチャをもとにしたYAMLベースでの Azure Pipelines構築 – CI,CD Pipeline
見せられないよ Azure Key Vaultへのサービスコ ネクションの名称を指定 Azure Key Vaultの名称を指定 Azure Key
Vaultで格納されてい るシークレットの名称 ベースラインアーキテクチャをもとにしたYAMLベースでのAzure Pipelines構築 - パイプラインで使用するAzure Key Vaultのシークレットの設定
Pipelines>Environmentでデプロ イする環境を指定 重要な環境へのデプロイの前に 承認プロセスを設定し、意図し ないデプロイを防ぐ ベースラインアーキテクチャをもとにしたYAMLベースでの Azure Pipelines構築 - デプロイ環境の定義と承認の構成(1/2)
承認プロセスが構成された環境 へのデプロイは、承認者からの 承認されるまで実行されない 承認者に対してはデプロイの直 前にこんな感じで承認してくだ さい通知がいく ベースラインアーキテクチャをもとにしたYAMLベースでの Azure Pipelines構築 -
デプロイ環境の定義と承認の構成(2/2)
ポイント クラシックパイプラインからYAMLベースのパイプラインへ クラシックパイプラインでビルドパイプライン/リリースパイプラインとして 構成していたものはYAMLファイルでCI, CDの複数のステージを定義するマルチ ステージパイプラインとして実装する クラシックリリースパイプラインでのリリースゲート(リリース前の承認ゲー
ト)はEnvironmentでApprovals & Checksで構成する パイプライン内で使用するシークレットはLibraryでAzure Key Vaultを参照する ように設定する
まとめ
まとめ YAMLベースでパイプラインを作成することにより、パイプラインのバージョ ン管理とレビューが容易になる Azure Key Vaultを使用することでセキュアにCI/CDを実現 クラシックのビルド/リリースパイプライン→YAMLファイルでマルチステージ
パイプラインを構成(ので、ビルドパイプラインとかリリースパイプラインと いう概念はもはやなくなる?) デプロイ前の承認プロセスを構成することにより、重要な環境への意図しない デプロイを防ぐことができる
[Microsoft Learn - Azure Pipelinesのベースラインアーキテクチャ] https://learn.microsoft.com/ja-jp/azure/devops/pipelines/architectures/devops-pipelines-baseline-architecture?view=azure- devops [Microsoft Learn -
YAMLパイプラインとクラシックビルド、リリース パイプラインの機能一覧] https://learn.microsoft.com/ja-jp/training/modules/create-release-pipeline-devops/2-describe-azure-devops-capabilities [Microsoft Learn - 承認とチェックを定義する] https://learn.microsoft.com/ja-jp/azure/devops/pipelines/process/approvals?view=azure-devops&tabs=check-pass [Microsoft Learn - Azure DevOps を使用してマルチステージ パイプラインを作成する] https://learn.microsoft.com/ja-jp/azure/devops/pipelines/process/create-multistage-pipeline?view=azure-devops デモで利用したSrcは下記に配置しています。 https://github.com/yutaka-art/Baseline_Architectures References
クラシックパイプラインの非推奨に伴うAZ-400のラーニングパスの参照すべきドキュメントの変更点一覧は以下の記事に記 載しています。 https://zenn.dev/yuriemori/articles/0eee4d3713aa18 References