Azure Service Broker は、Azure のマネードサービスをHelm からプロビジョンするための仕組みです。今日はこれの使い方を調べて見ました。
1. install
Azure Service Broker で前提となっている、Service Calalog は残念ながら今の所 AKS では動かないらしく、ACS をデプロイする必要があります。
まずは、Azure / helm-charts をクローンしておきます。
$ git clone git@github.com:Azure/helm-charts.git
1.1. Install Service Catalog
まず、Service Catalog の手順を見ます。これは、Open Service Brokersと統合されていて、データベース、オブジェクトストレージ、メッセージキューなどをアプリケーションと関連付けをしながらプロビジョンしてくれるものみたいです。
ACS-engine / Releaseから、ACS Engine のバイナリを落として展開して見ましょう。私は、/Users/ushio/bin
にぶち込んどきました。
先にリソースグループを作っときましょう。リソース グループの作成
$ az group create --name ACSResource --location "japaneast"
### 1.1.1. Install ACS by ACS-engine
このツールをデプロイしたい場合、Kubernetes のAggregated APIs つまり、サードパーティのAPIを追加可能にするためのものを使用可能にする必要があります。
$ acs-engine version
Version: v0.9.4
GitCommit: 50709347
GitTreeState: clean
$ acs-engine deploy \
--subscription-id YOUR_SUBSCRIPTION_ID \
--location japaneast \
--auto-suffix \
--resource-group ACSResrouce \
--api-model acs-engine-kubernetes-config.json
上記のコマンドを自分の環境に合わせて実行しますが、その前にAzure / helm-chartsにある、acs-engine-kubernetes-config.json
の中身を変更しておきます。自分のパブリックキーや、dnsPrefix などはこちらの編集しておきます。ちなみに、中身は次の通り。
標準の、ACS-engine のテンプレートと見比べると、enableAggregatedAPIs
enableRbac
が true になっています。また、gcHighThreshhold
gcLowThreshold
がの数値が設定されています。これらはおそらくConfiguring kubelet Garbage Collectionで説明されている不要になったイメージのガーベッジコレクションの設定で、ディスク容量が70% 使用されると、60% になるまで、もっとも使われていなイメージから削除します。デフォルトは、85%, 80% みたいですね。const.go参照
ここで設定しているパブリックキーは、master/agent にssh 接続するときに使われます。
acs-engine-kubernetes-config.json
{
"apiVersion": "vlabs",
"properties": {
"orchestratorProfile": {
"orchestratorType": "Kubernetes",
"kubernetesConfig": {
"gcHighThreshold": 70,
"gcLowThreshold": 60,
"enableAggregatedAPIs": true,
"enableRbac": true
}
},
"masterProfile": {
"count": 1,
"dnsPrefix": "",
"vmSize": "Standard_D2_v2"
},
"agentPoolProfiles": [
{
"name": "agentpool1",
"count": 3,
"vmSize": "Standard_D2_v2",
"availabilityProfile": "AvailabilitySet"
}
],
"linuxProfile": {
"adminUsername": "azureuser",
"ssh": {
"publicKeys": [
{
"keyData": ""
}
]
}
},
"servicePrincipalProfile": {
"clientId": "",
"secret": ""
}
}
}
先ほどのオプションがわからないのが気持ちわるので調べておきます。
Flags | 説明 |
---|---|
--subscription-id | Azure の Subscription id |
--location | Azure の Location (e.g. japaneast) |
--auto-suffix | dnsPrefix に対して自動でタイムスタンプをつける設定 |
--api-model | apimodel ファイルへのPath |
これで、Service Broker が動くACS-engine のクラスタが出来上がりました。
ちなみに、最初は--resource-group
オプションが指定できたのにつけるの忘れていました。そしたら、dnsPrefix
の名前でリソースグループが作られていましたw。もちろん作り直しました。
ちなみに、いきなりデプロイせず、生成される ARM テンプレートを愛でて見たい場合は、
acs-engine generate --api-model acs-engine-kubernetes-config.json
設定の通り、--auto-suffix
によって、リソース名に数字が割り当てられています。

dnsPrefix が、sabrk にしたので、ドメイン名の命名は次のようです。

その(2)に続きます。