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
0
16
Azure Pipelinesを使用したCICDベースラインアーキテクチャ実践
2024/07/16(水)にJapan Azure Users Groupで登壇させて頂いた際の資料です。
yutakaosada
July 17, 2024
Tweet
Share
More Decks by yutakaosada
See All by yutakaosada
20251025_GitHub Copilot活用度を“計測できる”にする-Cron×Dapr×Cosmos DBで作るバックエンド
yutakaosada
0
92
GitHub Certificate Drive Round 1
yutakaosada
0
10
20250820_信頼できる開発プラットフォームをどう作るか?-Governance as Codeと継続的監視/フィードバックが導くPlatform Engineeringの進め方-
yutakaosada
0
17
20250726_Application InsightsのAPIキー廃止とEntra ID統合:DevOps観点からのモニタリング戦略
yutakaosada
0
180
20250627_Copilot Agent × Azure DevOps で学ぶ MCP 実践
yutakaosada
0
76
20250613_Azure Kubernetes Serviceで構築するAdvanced CICD(ARC-RSS)
yutakaosada
0
3
20250516_GitHub Copilot エージェントモードの概説
yutakaosada
0
31
20250415_GitHub監査ログを活用したエンタープライズ向けセキュリティ強化とデータ分析基盤の構築
yutakaosada
1
120
20250325_Logic Apps / Power Automate の SharePoint コネクタの裏側を知る 〜Graph APIで直接操作してみよう〜
yutakaosada
0
270
Other Decks in Technology
See All in Technology
Observability — Extending Into Incident Response
nari_ex
2
730
[re:Inent2025事前勉強会(有志で開催)] re:Inventで見つけた人生をちょっと変えるコツ
sh_fk2
1
1.2k
AIの個性を理解し、指揮する
shoota
3
610
Databricks Free Edition で始めるMLflow
taka_aki
0
700
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
2
180
20251029_Cursor Meetup Tokyo #02_MK_「あなたのAI、私のシェル」 - プロンプトインジェクションによるエージェントのハイジャック
mk0721
PRO
6
2.3k
[Journal club] Thinking in Space: How Multimodal Large Language Models See, Remember, and Recall Spaces
keio_smilab
PRO
0
110
Data Engineering Guide 2025 #data_summit_findy by @Kazaneya_PR / 20251106
kazaneya
PRO
0
150
ゼロコード計装導入後のカスタム計装でさらに可観測性を高めよう
sansantech
PRO
1
650
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
360
AWSが好きすぎて、41歳でエンジニアになり、AAIを経由してAWSパートナー企業に入った話
yama3133
2
220
InsightX 会社説明資料/ Company deck
insightx
0
180
Featured
See All Featured
Designing for Performance
lara
610
69k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Facilitating Awesome Meetings
lara
57
6.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
4 Signs Your Business is Dying
shpigford
186
22k
We Have a Design System, Now What?
morganepeng
54
7.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
Unsuck your backbone
ammeep
671
58k
Why Our Code Smells
bkeepers
PRO
340
57k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
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