• 3 min read

コードからクラウドへの自動化による回復性がある DevOps プラクティスの実現

Microsoft Ignite で新しい Azure 向け GitHub Actions が発表されました。これは、増え続ける Azure と GitHub の統合カタログに追加されたもので、その他にも追加が予定されています。

このブログ記事は、GitHub の製品マネージャーである Usha Narayanabhatta によって共同執筆されました。

デジタル変革が進化したように、顧客の期待も進化しました。企業は、ユーザー基盤をほとんどまたはまったく混乱させずに、バグ対策が施された更新プログラムを頻繁にリリースすることで、継続的な価値を提供することを求められています。これは、国や政府によって厳格な新しいデータおよびセキュリティ対策が導入されるため、簡単なことではありません。

では、企業はどのようにして、リモートでの業務を強いられたパンデミックのさなかに、ガバナンス、セキュリティ、コンプライアンスの基準を維持しながら、より短期間で出荷しているのでしょうか。

エンタープライズ DevOps 2020-2021 レポートによると、調査対象の一流企業の 80% が "シフト レフト"、あるいはソフトウェア開発ライフサイクル (SDLC) の初期段階においてガバナンス、セキュリティ、コンプライアンスの自動化を開始しています。これらの企業では、構築とリリースのワークフローを自動化するだけでなく、"すべてをコード化 (Everything as Code)" という考え方も採用されています。このシフトは、インフラストラクチャの構成とリリース パイプラインだけでなく、コンプライアンスとセキュリティのポリシーも "コードとして" 記述されることを意味し、再利用性、回復性、透過性の向上を促進しながら、継続的な改善が可能になります。

このことをすべて考慮して、GitHub Actions のポートフォリオの改善、更新、追加が継続して行われています。Microsoft Ignite で新しい Azure 向け GitHub Actions が発表されました。これは、増え続ける Azure と GitHub の統合カタログに追加されたもので、その他にも追加が予定されています。Azure 向け GitHub Actions を使用すると、Web アプリからサーバーレス関数までを Kubernetes や Azure SQL および MySQL データベースなどの複数の Azure サービスへデプロイできるようになり、SDLC を管理する自動化されたワークフローを構築する柔軟性が提供されると同時に、最終的には企業が回復力を維持するのに役立ちます。

GitHub で Azure のポリシーをコードとして管理する

クラウド ガバナンス体験を進めるにつれて、各ポリシーを Azure portal で手動で管理することから、企業規模でより管理しやすく、共同で行うことができ、反復可能なものに移行する必要性が増します。この体験を支援するために、Azure Policy と GitHub の統合がさらに強化されたことを発表いたします。わずか数回のクリックで、Azure のポリシーを GitHub リポジトリに簡単にエクスポートできるようになりました。エクスポートされたすべてのポリシーは、GitHub でファイルとして保存されます。これにより、バージョン コントロールを使用して変更の共同作業と追跡を行って、Manage Azure Policy アクションを使用してポリシー ファイルの変更を Azure Policy にプッシュできます。詳細については、「GitHub を使用して Azure のポリシーをコードとして管理する」をご覧ください。この機能を利用するには、Azure Policy にアクセスしてください。

GitHub へのポリシーのエクスポート

ARM インフラストラクチャをコードとしてデプロイする

クラウドへの移行に伴って、多くのチームがソリューションをクラウドに繰り返しデプロイし、インフラストラクチャを確実に信頼できる状態にする必要があります。これらの課題に対応するためには、コードとしてデプロイする必要があるインフラストラクチャを Azure Resource Manager (ARM) テンプレートで定義することで、デプロイを自動化できます。

これに対する取り組みとして、Deploy Azure Resource Manager Template アクションがリリースされました。このアクションにより、Resource Manager テンプレートをデプロイして Azure リソースを管理するワークフローを自動化できます。このアクションは、任意のデプロイのスコープ (リソース グループ、サブスクリプション、または管理グループのスコープ) で Resource Manager テンプレートをデプロイするために使用できます。この ARM のデプロイ アクションの出力は、さらなる処理のためにワークフロー内の後続のアクションでも使用できます。

Resource Manager テンプレートのデプロイ

イミュータブル インフラストラクチャのための Azure 仮想マシン イメージを構築する

新たに導入された Build Azure Virtual Machine Image アクションによって、仮想マシン (VM) イメージのカスタマイズ、作成、配布が簡単になりました。このアクションを使用して、継続的デリバリー ワークフローで生成された成果物を格納するカスタム VM イメージを作成し、それらを Shared Image Gallery バージョン、マネージド イメージ、または仮想ハード ディスク (VHD) として配布して、GitHub と Azure portal の間で完全な追跡可能性を確保できるようになりました。

仮想マシン イメージのギャラリー

GitHub コミットに対する Kubernetes の変更を Azure portal からトレースする

Deploy to Kubernetes cluster アクションが機能強化されて、Azure portal で変更ログ ビューが有効になり、Azure Kubernetes Service (AKS) クラスターで行われたすべてのデプロイ (デプロイされた正確な GitHub コミットとイシューから、変更のデプロイに使用された特定の GitHub ワークフローまでのすべて) をトレースできるようになりました。

Azure portal の変更ログ ビュー

pull request ワークフローの一部としてコンテナー イメージをスキャンする

継続的インテグレーション (CI) または pull request (PR) ワークフローの一部として作成された Docker イメージをセキュリティで保護するために、コンテナーのスキャン アクションをワークフローに追加して、追加チェックを増やすことができるようになりました。これにより、開発者は、コンテナー レジストリへのプッシュまたはコンテナー化された Web アプリあるいは Kubernetes クラスターへのデプロイ前に、Docker イメージ内の一般的な脆弱性をスキャンして自信を得ることができます。

コンテナーのスキャン アクションの結果

 

はじめる

Azure Policy の GitHub との統合Azure 仮想マシンのデプロイDeploy ARM Template アクションコンテナーのスキャン アクションに関するドキュメントをご覧になって、作業を開始してください。

また、CI/CD プロバイダーとして GitHub Actions がサポートされるようになった、改善された DevOps Starter エクスペリエンスもご確認ください。この新しい機能強化により、開発者は、わずか 4 つのシンプルなステップでサンプル アプリケーションのエンドツーエンドの GitHub ワークフローを設定できます。

これらの機能に対する変更などのご提案がある場合は、フィードバックとしてお聞かせください。GitHub Action リポジトリへの貢献も歓迎しています。pull request をお待ちしています。特定のアクションで問題が発生した場合は、アクション リポジトリでイシューをオープンすることもできます。