#Azure For Kubernetes(クーバネイテェス)ってなんぞや
- Micrisoftが提供するAzureのサービスの一つ
- 複数のコンテナ(ACR,Dockerコンテナ.etc)を組み合わせて冗長構成を構築するツール※1
- Ingress,Service,Deployment,Pod,Containerで構成されていて、各設定をすれば動く。
さらっというとこんな感じ。
##どう構成されているか
- Container
- いわゆるアプリケーション1単位。
- Dockerのimage1つと考えればいい。
- Dockerのランタイムが備わっていて、dockerコマンドが使える。
- Container対POD=多対1。
- POD
- Deploymentで記述するreplicasの数だけこのPODが不死鳥の如く蘇ってくる。
- 正確には死んだPODとは別の新しいPODが作成される。内部的なIPは変わるが通信するのに設定変更不要。
- POD対Deployment=多対1
- Deployment
- Azure For Kubernetesの核技術。記述したreplicasの数だけPODが生き返る。これを1から実現するのがとてつもなく難しく、Azure For Kubernetesを使うのはこれが理由といっても過言ではない。
- なので同じアプリケーションセット(Containerを持つPOD)を複数冗長的に動かしたいならAzure For Kubernetes。
- PODのマネージャ。
- Serviceからのアクセス先。
- Deployment対Service=多対1
- Service
- Ingressからのアクセスや他のServiceからのアクセスを捌く。
- 内部のロードバランサー的な役割。
- Service対Ingress=多対1
- ServiceにオープンなIPを振ることもできるが、セキュリティ設定が煩雑なのでIngressを使用する事が推奨される。
- Ingress
- Kubernetes外部からのアクセスを捌く。
- 外部のロードバランサー的な役割。
- Ingress対Service=1対多
##どうやって使うか
- AzureのPortal上からKubernetesを作成し起動させる。
- VMを用意する(AzureだとVirtual Machines)。
- コンテナを用意する(AzureだとACR)。
- VMからKubernetes CLIを使えるようにしておくと便利。
- アプリケーション(DockerのImage)を作成する。
- VMからACRに作成したImageをPushする。
- kubernetesの認証情報を得る。
- yamlファイルでIngress,Service,Deployment,Pod,Containerの設定をVM上からKubernetesコマンドで行う。
#ってな感じで
さらっとAzure For Kubernetesとは何かっていうのと、何で出来上がってるか(構成要素)と、それらの設定をしていくのがAzure For Kubernetesを使うってことですよ~っていう内容でした。
※関西Javaの会?関JAVA?に行ってみて、寺田 佳央さんの話を聞きながらやったことの復習。
以下、ちょっと書き残したこと。
※1
様々なモジュールの管理運用を総指揮するので、オーケストラを纏める指揮者に見立てて、よくオーケストレーションツールと呼ばれる。
オーケストレーションツールであるとか言われてもいきなりなんやねんってなる方もいるので後ろに持ってきました。
Dockerランタイムですが、新しいAzureForKubernetesのバージョンはMobyに対応しているそうです。