Azure Kubernetes Service (AKS)クラスタをTerraformで構築する

はじめに

これまで手動で行っていた個人ユースのAzure Kubernetes Service (AKS)クラスタの構築を, 公式のドキュメントを参考にTerraformでのものに変更した.その際のメモ.

[toc]

成果物

GitHub - mickey390/aks-terraform: AKSのクラスタをTerraformでおこなう

  • ↑こちらのリポジトリにまとめた
  • 個人検証用途のk8sクラスタ
  • すぐに破棄する前提のもの
    • このためTerraformのバックアップはローカル

気になる点

 

ログのワークスペース名はユニークに

ログのワークスペース名は、Azure全体?でユニークでないとだめっぽい. クラスタを再構築することも鑑み,ひとまずランダムな数値を名前に入れた.

* azurerm_log_analytics_workspace.test: operationalinsights.WorkspacesClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status= Code="Conflict" Message="The workspace name 'testLogAnalyticsWorkspaceName' is not unique" Target="name"

 

Dashboardへの権限付与

Azureのコンソールに,k8sへのダッシュボード表示リンクがある↓.

その際に,権限がなくリソースが表示されない場合は↓を実施.

kubectl create clusterrolebinding kubernetes-dashboard \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:kubernetes-dashboard

 

利用可能なk8sのversionを確認

以下のコマンドで確認した

az aks get-versions -l japaneast | fzf

 

利用可能なVMのサイズの確認

ドキュメントを見つけられなかった. Cloud Shell(bash)で以下のコマンドを入力しつつ<tab>を2回押すと利用できる?らしいVMの一覧が出てきた.

az aks create --l japaneast -s Standard_ <tab押す*2>

Standard_A1             Standard_D13_v2         Standard_D64s_v3        Standard_DS3            Standard_F16s           Standard_GS5
Standard_A1_v2          Standard_D13_v2_Promo   Standard_D64_v3         Standard_DS3_v2         Standard_F16s_v2        Standard_GS5-16
・・・・・・・・

デフォルトStandard_DS2_v2だが,お高いのでひとまずStandard_B2s にした. 簡単にアプリケーションをデプロイしたが支障なく動いた. バーストするタイプのインスタンスらしいので、リソースに注意.

https://github.com/Azure/azure-cli/pull/5393

まとめ

  • クラスタの構築をTerraformにした
  • 公式でansibleでの手順もあったが、addon(監視など)のことを考えるとTerraformのほうがよさそう

参考