Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub Codespaces と Azure でつくる、エンター プライズレベルの開発環境

GitHub Codespaces と Azure でつくる、エンター プライズレベルの開発環境

開発を加速するGitHub x Azure 最新開発ベストプラクティス vol.1 でお話した資料です。
https://msevents.microsoft.com/event?id=2453316745

Kazumi IWANAGA

February 20, 2023
Tweet

More Decks by Kazumi IWANAGA

Other Decks in Technology

Transcript

  1. 岩永かづみ / Kazumi IWANAGA • Microsoft MVP for Azure •

    ZEN Architects 所属 • GitHub公認トレーナー • 得意な領域 • Infrastructure as Code • GitHub Actions による自動化 • 技術コミュニティ • Code Polaris / Hack Everything. • @dz_ • @dzeyelid • @dzeyelid
  2. Visual Studio Code があれば • Windows, MacOS, Linux などマルチプラットフォーム対応 •

    Settings Sync で設定を共有できる • Live Share で環境を共有できる • コンテナや Vagrant などを利用して構築した環境に、Remote development で接続して開発できる
  3. 使い慣れたインタフェースから使う • 参考: Visual Studio Code で GitHub Codespaces を使用する

    - GitHub Docs • 参考: JetBrains IDE で GitHub Codespaces を使う - GitHub Docs • 参考: 機械学習のための GitHub Codespaces の概要 - GitHub Docs
  4. マシンタイプ マシンタイプ メモリ ストレージ 備考 2 core 4 GB RAM

    32 GB 4 core 8 GB RAM 32 GB 8 core 16 GB RAM 64 GB 16 core 32 GB RAM 128 GB 32 core 64 GB RAM 128 GB 申請が必要 6 core (1 GPU) 112 GB RAM 128 GB 申請が必要
  5. Dev container でカスタマイズ • Features による簡単インストール • VS Code のエクステンションのインストール

    • OnCreateCommand などのライフサイクルへのフック • Dockerfile を用いた、より自由なカスタマイズ
  6. 課金体系 • 利用時間とストレージの使用量で算出 • 個人アカウントには、1ヶ月あたり無料利用枠がふくまれる • GitHub Free – 15GB/月のストレージ、120時間/コアの利用時間

    • GitHub Pro – 20GB/月のストレージ、180時間/コアの利用時間 マシンタイプ 利用時間の価格/時間 2 core $0.18 4 core $0.36 8 core $0.72 16 core $1.44 32 core $2.88 ストレージ量 ストレージ量の価格/月 1 GB $0.07
  7. 課金体系(Organization) • Organization 配下のリポジトリで codespace を立ち上げる場合、 Organization の設定によって、課金される対象が異なる Organization の

    spending limit 説明 0 codespace を起動するユーザーに課金される 1 以上、または Unlimited spending 上限に達するまでは、Organization に課金される
  8. 管理 • Dotfiles • シークレット • アカウント • リポジトリ •

    GPG verification • デフォルトのエディタ • アイドル タイムアウト • 保持期間 • リージョン
  9. 管理(Organization) • 利用可能なメンバー • ポリシー • マシンタイプ • ポートの公開範囲 •

    アイドル タイムアウトの最大値 • 保持期間の最大値 • 利用可能なイメージの制限 • API により、メンバーの利用状況を取得できる
  10. codespace から Azure へVPN接続 codespace インスタンス GitHub Codespaces Visual Studio

    Code Microsoft Azure VPN経由 Virtual Network Virtual network gateway
  11. codespace から Azure へVPN接続 codespace インスタンス GitHub Codespaces Microsoft Azure

    VPN経由 Virtual Network Virtual network gateway DNS private resolver Private endpoint Cosmos DB VNet intergration Functions app Static Web App Link
  12. Azure のリソース構成(VPN) サービス 説明 Virtual network 仮想ネットワーク Virtual network gateway

    今回は、Point-to-site VPNゲートウェイとして利用する。 DNS Private resolver 仮想ネットワーク内の既定の Private DNS を介すルーティングを提供する。 これにより、仮想ネットワークに接続された Private endpoint を名前解決 できるようになる。
  13. Azure のリソース構成(PaaS) サービス 説明 Cosmos DB ドキュメント型データベース。今回は、Private endpoint を使用して仮想 ネットワークにのみ接続する。

    Private endpoint Azure の PaaS サービスを仮想ネットワークに接続させる。DNS zone と 連携して名前解決を提供する。 Functions app デモアプリケーションのAPIを実装する。VNet integration により仮想ネッ トワークへのアウトバンドを通す。 Static Web App デモアプリケーションのフロントエンドを実装する。これはパブリックに公開す るが、上記の Functions app にリンクを接続することで、データベースへの 読み書きを行える。
  14. Azure のリソース構成 • 参考: P2S VPN クライアントの構成 - 証明書認証 -

    Linux - Azure VPN Gateway | Microsoft Learn • 参考: Azure DNS Private Resolver - Azure Example Scenarios | Microsoft Learn • 参考: Azure Functions のネットワーク オプション | Microsoft Learn • 参考: Azure Cosmos DB アカウントの Azure Private Link を構 成する | Microsoft Learn • 参考: 独自の関数を Azure Static Web Apps で使用する | Microsoft Learn
  15. codespace の構成 • OpenVPN などを含むベースイメージを作成しておく • シークレットに、Azure Virtual network gateway

    から発行した vpnconfig.ovpn の情報を格納しておく • initializeCommand で上記 vpnconfig.ovpn の情報を読み出し、 インスタンス内に保存する • postStartCommand で OpenVPN を接続する
  16. codespace の構成 • 参考: Installing and working with the devcontainer

    CLI (visualstudio.com) • 参考: プライベート ネットワークへの接続 - GitHub Docs • 参考: codespaces-contrib/codespaces-openvpn (github.com)