この記事はAzure Advent Calendarと一人Advent Calendar1日目のエントリです。
1日目ということで軽いものからはじめます。とある事象を調査していたのですが、その事象というのがAzure上のLinux仮想マシンを再起動(仮想マシンの再起動だけではなく、システムの再起動 systemctl reboot
でも発生)すると数%程度の確率で発生するというものでした。今日はこの事象そのもよりも、この事象を調べた方法について紹介します。
この記事はAzure Advent Calendarと一人Advent Calendar1日目のエントリです。
1日目ということで軽いものからはじめます。とある事象を調査していたのですが、その事象というのがAzure上のLinux仮想マシンを再起動(仮想マシンの再起動だけではなく、システムの再起動 systemctl reboot
でも発生)すると数%程度の確率で発生するというものでした。今日はこの事象そのもよりも、この事象を調べた方法について紹介します。
前回のエントリでADEを適用すると、/dev/sdc
にBEK volumeがデバイスがマウントされると書いたのですが、
それがうまく処理できないケースとして、kubernetesのAzure Cloud Providerとの組み合わせがあります。これについてはすでにissueとして報告しており、解決策が議論されています。
問題は、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の行方を見守る必要がありそうです。
Azure Storageの暗号化については、すでにほとんど、くらう道さんでわかりやすく説明されています。
最近のManaged DiskであればStorage Service Encryption(SSE)でデフォルトで暗号化されているので、これで十分ということも多いでしょう。
ただ、場合によってはAzure Disk Encryption (ADE)による暗号化が必要になるケースもあると聞きます。
ADEについてもくらう道さんの記事でPowerShellを使った方法は紹介されているのですが、Azure CLIを使った方法について今回まとめてみました。
続きを読む