銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

AzureのLinux仮想マシンで、起動すると3%くらいの確率で発生する事象を調査するために無限再起動スクリプトを使った話

この記事はAzure Advent Calendarと一人Advent Calendar1日目のエントリです。

qiita.com

adventar.org

1日目ということで軽いものからはじめます。とある事象を調査していたのですが、その事象というのがAzure上のLinux仮想マシンを再起動(仮想マシンの再起動だけではなく、システムの再起動 systemctl rebootでも発生)すると数%程度の確率で発生するというものでした。今日はこの事象そのもよりも、この事象を調べた方法について紹介します。

続きを読む

AKSでADEを適用すると、Azure DiskがPVとして利用できなくなった話

前回のエントリでADEを適用すると、/dev/sdcにBEK volumeがデバイスがマウントされると書いたのですが、

tech.tanaka733.net

それがうまく処理できないケースとして、kubernetesのAzure Cloud Providerとの組み合わせがあります。これについてはすでにissueとして報告しており、解決策が議論されています。

github.com

問題は、Azure DiskをkubernetesのPersistent Volumeとして利用する場合、ADEが有効化されている仮想マシンにマウントされると、/dev/sdcにPVとしてアタッチされたAzure Diskのデバイスが存在していると認識してしまうというものです。Azure Cloud Providerの問題なので、AKSでも発生しますし、素のkubernetesをAzure Cloud Providerを有効化しても発生します。

Azure Disk Encryption自体は透過的に働くので、kubernetesとは独立しているような気がするのですが、デバイスのマウント先の検出するロジックで問題が発生しているようです。

Azure Cloud ProviderはPVとしてマウントされたAzue Diskのデバイスについて必要な処理を行うのですが、その際、すでにマウント済みのデバイス*1は除外するようにコードが記述されています。が、この処理がADEのBEK volumeについての考慮が漏れているらしいというのが事の真相のようです。

kubernetes/azure_common_linux.go at v1.9.9 · kubernetes/kubernetes · GitHub

workaroundはなさそう?*2なので、しばらくはissueの行方を見守る必要がありそうです。

*1:PV以外の目的であらかじめマウントされている外付けデバイスなど

*2:udev ruleを記述すれば回避できるかも?

Azure CLI を使ってLinux VMにAzure Disk Encryptionを適用する

Azure Storageの暗号化については、すでにほとんど、くらう道さんでわかりやすく説明されています。

www.cloudou.net

最近のManaged DiskであればStorage Service Encryption(SSE)でデフォルトで暗号化されているので、これで十分ということも多いでしょう。

docs.microsoft.com

ただ、場合によってはAzure Disk Encryption (ADE)による暗号化が必要になるケースもあると聞きます。

docs.microsoft.com

ADEについてもくらう道さんの記事でPowerShellを使った方法は紹介されているのですが、Azure CLIを使った方法について今回まとめてみました。

続きを読む