Save 37% off PRO during our Black Friday Sale! »

AKSで学ぶBicepのアレコレ

7d7c8d5d7c92a869006859ce54a79f38?s=47 Hifumi Takai
September 25, 2021

 AKSで学ぶBicepのアレコレ

Japan Azure User Group 11周年イベント
https://jazug.connpass.com/event/223585/

7d7c8d5d7c92a869006859ce54a79f38?s=128

Hifumi Takai

September 25, 2021
Tweet

Transcript

  1. AKSで学ぶBicepのアレコレ Hifumi Takai(タナイ) JAZUG 11周年イベント@2021/9/25

  2. 自己紹介 • 株式会社エーピーコミュニケーションズ (フルリモート@北海道) • Twitter: @okinawa__noodle, GitHub: @thanaism •

    QiitaエンジニアフェスタAzure SWA優秀賞 「無料で使えるAzure Static Web AppsにGatsbyブログを爆速でデプロイする」 Hifumi Takai 趣味: 競プロ
  3. Bicepを使ってAKSをデプロイしたい

  4. 今日の内容 話すこと • Bicepのおさらい • BicepでのAKSデプロイ 話さないこと • AKSのおさらい •

    Terraformとの比較
  5. Bicepって? • ARM template の DSL • JSON書かなくていい • VSCodeの拡張機能がステキ

    • JSON書かなくていい
  6. ARM param demoParam string = 'Contoso' "parameters": { "demoParam": {

    "type": "string", "defaultValue": "Contoso" } } Bicep 👍
  7. 補完めっちゃ効く👍 (Language Serverがちゃんとある) (capture: https://youtu.be/q2m-Kr3covc)

  8. IaC、楽勝かよ😂

  9. Qiitaに入門編を書きました

  10. 実際、デプロイするだけなら

  11. これだけ (Qiitaの内容)

  12. でも、まともに書くと

  13. (これでモジュールひとつ)

  14. productionを目指すと重厚になる AKSデプロイに絡む要素は……🙄 • Azure CNI(vnet/subnet) • Azure Container Registry •

    Key Vault • Managed Database • Application Gateway • Log Analytics • Add-ons(今日あとで取り上げる)
  15. Bicepが難しくなるポイント たとえばAGICアドオン • Portalだとポチ(チェック入れるだけ) • Bicepだと…… - 依存関係 - RBAC権限付与

    - 任意引数/必須引数 - etc... Azure Portalと違って《よしなに》はやってくれない
  16. IaC、重厚になりがち (だからこそ冪等性があり、自由度も高い)

  17. (ここから急に具体的になります) AKSデプロイで 詰まったポイント

  18. AGICのアドオンを入れるには 1. Application Gatewayのリソースidを取得 2. aksのテンプレートで上記idを addonProfiles -> ingressApplicationGatewayを記述する 3.

    AGICのManaged Identityに AppGWのContributorとRGのReaderを付与する
  19. 詰まりポイント① dependsOnで依存関係を明示しているのに、 IngressApplicationGateway addon cannot find Application Gateway と怒られる。 (AppGWデプロイの前にAppGWを探しに行ってしまう)

  20. ①の原因 事前にappgwを デプロイ する する しない しない identity ブロック省略 する

    しない する しない 成否 成功する 成功する 失敗する 成功する addonProfiles -> ingressApplicationGateway -> identity という ブロックを省略してはいけないパターンがある
  21. 知らん!😓 (とあるクイックスタートテンプレートに書いてあった)

  22. 詰まりポイント② 「MC_」のRGに生成されるManaged Identityを クエリするのがわりと面倒。ロールアサインも面倒。 (”name”や”scope”の記述はテンプレートチェック時に静的に決定する必要があり、  動的な値を用いて記述したい場合、モジュール化しないと解決できない)

  23. ②の詳細 This expression is being used in an assignment to

    the "name" property of the "Microsoft.ManagedIdentity/userAssignedIdentities" type, which requires a value that can be calculated at the start of the deployment. Properties of aks which can be calculated at the start include "name". ↑動的にして依存関係もたせるとエラーになる(モジュール化が必須) ↑静的だが依存関係を解決できない(existingにはdependsOn使えない)
  24. ②の解決策 以下のようにaksから直接outputに指定できる (これだとそもそもクエリする必要ない)

  25. 知らんかった😅 (これもクイックスタートテンプレートに書いてあった)

  26. クイックスタート テンプレートを見よう! (ドキュメントを信じましょう)

  27. Contact me! Thanks!! @okinawa__noodle