KatsuYuzuのブログ

.NET の開発をメインとした日記です。

きたあずで Kubernetes を二日間勉強してきました #JAZUG

f:id:KatsuYuzu:20190415004705j:plainf:id:KatsuYuzu:20190414235833j:plain

きたあずで Kubernetes を二日間勉強してきました。

講師として Microsoft の寺田佳央さんに来ていただき、その上で皆でモブプロ形式で行う、濃い二日間でした。 twitter.com

感想

内容のまとめについては別の参加者が細かくまとめてくださっていた(記事末)ので、僕は感想だけ。

なんとなくの理解だったものを 1 から順に手を動かして、二日目に復習して、自動化して……と反復することが出来たので、わかりやすかったです。

また、交代でやるから、失敗するとこだったり、解決策だったりが人それぞれで違う。 一人で手順書をこなして、なんとなく動いて終わるよりも、得るものは多かったと思います。

あとは、最も個人的なところだと、皆でやったから怠けなかったな。とw
また、やりたい!

寺田さん、皆さん、ありがとうございました。

まとめ

vnext-y-blog.azurewebsites.net nagumo.co

Azure Active Directory からアプリの登録を削除する方法 #JAZUG

デモで使用したディレクトリを削除しようとしたらアプリが登録されていて削除出来ない。アプリを削除しようとしたらボタンが使用不可で削除出来ない。

そんな経験ありませんか?

f:id:KatsuYuzu:20180629084540p:plain

僕はありました。解決したので紹介します*1

アプリの登録を削除する方法

通常は、ディレクトリの [アプリの登録] から対象のアプリケーションを選択して [削除] をすると良いです。その時、[削除] ボタンが使用不可になっていたら下記の方法を試してみてください。

種類が Web アプリ/API の場合

f:id:KatsuYuzu:20180629090217p:plain

  1. [アプリの登録] 一覧から削除ができない Web アプリ/API のアプリを選択します。
  2. [設定] を選択し [プロパティ] を選びます。
    f:id:KatsuYuzu:20180629090715p:plain
  3. [マルチテナント] の設定を [いいえ] にし、保存します。
    f:id:KatsuYuzu:20180629090818p:plain
  4. [アプリの登録] 一覧にもどり対象のアプリを選択しなおします。
  5. [マニフェスト] の隣にある [削除] が有効となりますので、削除します。

種類がネイティブの場合

f:id:KatsuYuzu:20180629090346p:plain

  1. [アプリの登録] 一覧から削除ができないネイティブのアプリを選択します。
  2. [マニフェスト] を選択します。
    f:id:KatsuYuzu:20180629090346p:plain
  3. テキスト エディターが開きますので、以下の行があることを確認します。 "availableToOtherTenants": true,
  4. この true の箇所を false に変更し、[保存] します。
    f:id:KatsuYuzu:20180629090932p:plain
  5. [マニフェスト] の隣にある [削除] が有効となりますので、削除します。

原因

アプリの削除ボタンが無効になっている原因としては、一般的には対象のアプリケーションがマルチテナントして構成されていることが考えられます。 マルチテナント アプリケーションの場合、他のテナントからもアプリケーションが利用可能なため、直ちに削除できないようこういった動作となっております。

ちなみにネイティブの場合は [アプリの登録] 時のデフォの状態でマルチテナントになっていて、初学者が軽い気持ちでハローワールドしてたらハマるような気がします。僕はハマりました。

*1:MS のサポートに問い合わせをして教えてもらいました & ブログでの紹介も快諾していただきました。

JAZUG札幌支部 第18回勉強会で「業務システムを App Service で運用しよう」を話してきました #JAZUG #きたあず

業務システムを App Service で運用しよう

www.slideshare.net

話してきましたが、ハンズオンやちょっと試す程度しか触ったことがなく、ちゃんと運用したことはないです!

最初に「勉強してきたから聞いてください」と白状しました。会場に聞いてみたら当然同じような方もいらっしゃったし、発表後に質問されるくらいには興味を持ってもらえたし、質問にもばっちり答えられた。コミュニティのメンバーに色々聞きながら勉強して、発表まで出来たので、そういう方が増えたらいいな!

デモ 1

デモでは、Web App を使って、AAD 認証、ブルーグリーンデプロイメント、継続的なデプロイを紹介しました。

一般公開しているプロダクション環境、Web App の認証を使った AAD 認証が必要なステージング環境を用意して、ステージング環境で十分な動作確認をした後にスワップ。手元のソースに編集を加えてコミット & プッシュでステージング環境に自動的にデプロイ。動作確認をしてスワップ……

デモ 2

二つ目のデモはスライドの後半「業務システムを App Service で運用してみる」の通り。

Functions の起動に時間がかかったりするので、デモの前に Web App の URL にアクセスして温めておいた。デモをするときは重要だと思う。しかし、実運用ではそれが気にならない機能に組み込むかどうにか考えないといけないのかな?少しモヤモヤ。

質問

  • Q Durable Function のフローはもっと複雑にも出来るんですか
    • A 出来ます。タイムアウトしたら上位承認や、同時に何人かに申請した Task を WhenAll で待機したり……
  • Q サーバーレスの処理の中で待機なんてしていいんですか
    • A 良いように設計されてます。本当にすごい。Durable Function は一連のフローの実行に ID が付いていて await などで待機する場合は状態をストレージに記録して死んだ状態になります。

サンプルコード

github.com

Durable Function のサンプルコードです。サンプルコードで DurableTask の 1.4 を参照しているけど、最初に 1.2.2-beta3 あたりで動かさないと Azure 上で次のアクティビティを呼び出しても動き出してくれなかった"気がします"。具体的にはストレージの DurableFunctionsHubInstances も DurableFunctionsHubHistory も空っぽのままでした。準備にアップアップで切り分けしてないので今度確認したい。

2018/06/20 追記

上記の問題に関して id:beachside さんから「これかも?」と教えてもらった。いくつかの問題について議論されてるけど、確かに同じ問題を挙げてる人がいる。

github.com

当日のまとめ

togetter.com

jazug.connpass.com