銀の光と碧い空

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

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を使った方法について今回まとめてみました。

続きを読む

Microsoft Q# Coding Contest Summer の解説が公開されています

先週土曜から月曜にかけて開催された Microsoft Q# Coding Contest — Summer 2018 が終了しました。自分は2問しかとけなかったのですが、解説が公開されています。

codeforces.com

解説本体はPDFで公開されています。

https://assets.codeforces.com/rounds/997-998/main-contest-editorial.pdf