Mais conteúdo relacionado
Semelhante a Kubernetes on Azure ~Azureで便利にKubernetesを利用する~ (20)
Mais de Yoshimasa Katakura (6)
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
- 2. 自己紹介
片倉 義昌 (かたくら よしまさ)
(株)pnopで働いてます(2015~)
Azureコンサルティングとかしてます
IaaS大好き、ネットワーク大好き、K8sちょっと好き
Microsoft MVP for Azure (2017~)
Copyright© 2019, Y.Katakura All Rights Reserved.
2
yoshimasa.katakura@yo_ta_n
はい次12345678910
https://qiita.com/yotan
https://zakki.nya-n.net
- 3. JAZUG のご紹介
Japan Azure User Group ( 略称 : じゃずゆーじー)
コミュニティ活動概要
Microsoft Azure を通じて、技術、交流、実ビジネスを楽しむ
“ちょっと興味がある=ゆるふわな方“ から “実ビジネスで使うんだよね” な
方まで大歓迎!ゆるふわコミュニティです。
Facebook グループ運営中 「JAZUG」で検索!
Twitter ハッシュタグ:#jazug
一緒に運営してくれるメンバーを募集中です。
コミュニティイベントの開催は「connpass」で告知しています
https://jazug.connpass.com/
Copyright© 2019, Y.Katakura All Rights Reserved.
3
- 6. Azureで利用可能なコンテナサービス
Azure Kubernetes Service (AKS)
Azure Container Instances (ACI)
Azure Container Registry (ACR)
Web App for Containers (App Service)
Batch
Service Fabric
Copyright© 2019, Y.Katakura All Rights Reserved.
6
https://azure.microsoft.com/ja-jp/product-categories/containers/
本日お話する範囲
- 7. Azure Kubernetes Service (AKS)
ManagedなK8s環境
K8sマスターの隠蔽、サービス化
K8sノード(ノード用VMやストレージ)のみ課金でK8sマスターは非課金
数分でクラスタを作成
クラスタアップグレード、スケール変更支援
アップストリームK8sを利用しているので比較的早く最新K8s Versionが利用可能(現在は
1.14.3(Preview))
IaaS環境と同じ仮想ネットワーク上にK8sノードが構築されるため、他のIaaS、PaaSとの連携もし
やすい
Azure Active Directory(AAD)と連携
監視機能であるAzure Monitorと連携
Copyright© 2019, Y.Katakura All Rights Reserved.
7
https://azure.microsoft.com/ja-jp/services/kubernetes-service/
- 8. Azure Kubernetes Service(AKS)の構成
API server
Controller
ManagerScheduler
etcd
Store
Cloud
Controller
Self-managed master node(s)
Customer VMs
App/
workload
definitionUser
Docker
Pods
Docker
Pods
Docker
Pods
Docker
Pods
Docker
Pods
Schedule pods over
private tunnel
Kubernetes
API endpoint
Azure managed control plane
- 9. Azure Container Instance (ACI)
サーバレスのコンテナ実行環境
コンテナが起動している間だけ秒単位での課金
(コア数、メモリ量によって単価が変動)
AKSからもVirtual Node機能で内部的にACIを利用している
Copyright© 2019, Y.Katakura All Rights Reserved.
9
https://azure.microsoft.com/ja-jp/services/container-instances/
- 10. Azure Container Registry (ACR)
プライベートなコンテナレジストリ
(Docker HubのPrivate Registryみたいなもの)
AzureのRole Based Access Control(RBAC)を用いて細かくユー
ザ権限を設定可能
Docker build機能を有しておりACR上でDockerイメージの作成
が可能(地味に便利)
Copyright© 2019, Y.Katakura All Rights Reserved.
10
https://azure.microsoft.com/ja-jp/services/container-registry/
- 12. Azure Storage
Azureのストレージサービス使って、
コンテナからAzureの永続領域(ストレージ)の利用が可能
Azure Managed Disk(管理ディスク)
→単一のコンテナからのみ利用可能
Storage Classに事前登録済み
Azure File Storage
→複数のコンテナから同時利用可能(CIFS接続)
Copyright© 2019, Y.Katakura All Rights Reserved.
12https://docs.microsoft.com/ja-jp/azure/aks/azure-disks-dynamic-pv
https://docs.microsoft.com/ja-jp/azure/aks/azure-files-dynamic-pv
$ kubectl get storageclass
NAME PROVISIONER AGE
default (default) kubernetes.io/azure-disk 23h
managed-premium kubernetes.io/azure-disk 23h
- 13. Load Balancer
Serviceのtypeに「LoadBalancer」を指定すると、
Azure Public IPを作成してロードバランサーの自動構成をしてくれる。
Serviceのtypeに「ClusterIP」を指定すると、Azure Load Balancerを作成
して、他の仮想ネットワークやサブネットからもそのIPアドレスで通信
可能になる
13
Copyright© 2017, Y.Katakura All Rights Reserved. https://docs.microsoft.com/ja-jp/azure/aks/internal-lb
$ kubectl get service wp-external-lb
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wp-external-lb LoadBalancer 10.0.57.7 40.115.181.XXX 80:30873/TCP 21h
- 19. Service Endpoint
各種PaaS側のFirewall機能で特定のSubnetからの通信を許可させる
Storage Account、SQL Databaseなど、インターネット向けのエン
ドポイントを持っているPaaSの接続制限を行う機能
AKSノード(Pod)から各PaaSへ接続するときのアクセス先(エンドポイ
ント)のホスト名やURLは今までと一緒
ストレージアカウントだったら
https://storageaccount01.blob.core.windows.net/
SQLDBだったら
sqldb01.database.windows.net:1433
Copyright© 2019, Y.Katakura All Rights Reserved.
19
https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-service-endpoints-overview
- 20. Service Endpoint対応サービス
General Availability(一般公開)
Azure Storage
Azure SQL Database, Data Warehouse
Azure Database for PostgreSQL, MySQL, MariaDB
Azure Cosmos DB
Azure Key Vault
Azure Service Bus
Azure Event Hubs
Azure Data Lake Store Gen 1
Azure App Service
Public Preview
Azure Container Registry
Copyright© 2019, Y.Katakura All Rights Reserved.
20
https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-service-endpoints-overview
- 21. Virtual Network内に配置できるPaaS
各種PaaSをVirtual Network内のリソースにPrivate IP Addressを
使ってアクセス可能にする技術
SKU(PaaSのプラン)が低いとVirtual Networkに配置できない
PaaSもある
Copyright© 2019, Y.Katakura All Rights Reserved.
21
https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-for-azure-services#services-that-can-be-
deployed-into-a-virtual-network
https://docs.microsoft.com/ja-jp/azure/app-service/web-sites-integrate-with-vnet
- 22. Virtual Networkに配置可能なPaaS一覧
Azure Batch
Azure Application Gateway
Azure Firewall
Azure Cache for Redis
Azure SQL Database Managed
Instance
Azure HD Insight
Azure Databricks
Azure Active Directory Domain
Services
Azure Kubernetes Service
Azure Container Registry
Azure Container Service Engine
API Management
App Service Environment
Azure Logic Apps (ISEのみ)
Azure 専用HSM
Azure NetApp Files
Copyright© 2019, Y.Katakura All Rights Reserved.
22
https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-for-azure-services
- 28. Azure Application Gateway(V2)
(K8s上のIngressを思い浮かべながら聞いて下さい)
httpリバースプロクシのPaaS (中身はNginx)
Azure仮想ネットワーク上に配置
(AKSと同一仮想ネットワークに配置可能)
SSLオフロード(https→http)機能あり
URLマッピングあり
SSL証明書を安全なAzure Key Vault上で管理可能(Preview)
トラヒック流量によって自動スケールアウト可能
オプションでWAF機能あり
OWASP (Open Web Application Security Project) のCore Rule Set(CRS) 3.0/2.2.9
の他に2019/06からはカスタムルールもGA!
Copyright© 2019, Y.Katakura All Rights Reserved.
28https://docs.microsoft.com/ja-jp/azure/application-gateway/overview
https://docs.microsoft.com/ja-jp/azure/application-gateway/custom-waf-rules-overview
- 31. Azure Cache for Redis
(K8s上に自分でRedisを構築する事を思い浮かべながら聞いて下さい)
フルマネージドなRedis
仮想ネットワーク内にデプロイ可
冗長化オプション、永続化オプションあり
Copyright© 2019, Y.Katakura All Rights Reserved.
31
https://docs.microsoft.com/ja-jp/azure/azure-cache-for-redis/cache-overview
- 32. Azure Cache for Redis
Redis on Podの代わりにどうです?
RedisサーバをK8sのPod上にクラスタ構成で構築するのは意外
と大変な印象です。
(シングル構成や、永続化しない場合は比較的カンタン)
Azure Cache for Redisを使えば、仮想ネットワーク内に統合し
てクラスタ構成、永続化構成も指定可能です。
Copyright© 2019, Y.Katakura All Rights Reserved.
32
- 37. Open Service Broker for Azure(OSBA)
Open Service Broker API
各種クラウドの外部サービス(SQL DB, Database for MySQLなど)を、統一されたインタ
フェースでデプロイできるAPI仕様
Service Catalog
このAPIを呼び出すためのサービスとしてK8s上で動作
Open Service Broker for Azure
Azureの各種PaaSサービスをK8s上からデプロイするための仕組み
• Azure Database for MySQL / PostgreSQL v9.6
• Azure SQL Database
(以下はPreview)
• Azure Cosmos DB
• Azure Cache for Redis
• Azure Database for PostgreSQL v10
• Azure Storage
他にもComing soonとして各種Azure PaaSの対応が予定済み
Copyright© 2019, Y.Katakura All Rights Reserved.
37
https://docs.microsoft.com/ja-jp/azure/aks/integrate-azure
https://github.com/kubernetes-incubator/service-catalog
https://github.com/Azure/open-service-broker-azure
- 38. Database for MySQLのデプロイ
Copyright© 2019, Y.Katakura All Rights Reserved.
38
AKS
Service Catalog
Open Service Broker
for Azure
Open Service
Broker API
$ kubectl apply –f mysql.yaml
apiVersion: servicecatalog.K8s.io/v1beta1
kind: ServiceInstance
metadata:
name: wp-mysql
spec:
clusterServiceClassExternalName: azure-mysql-5-7
clusterServicePlanExternalName: basic
parameters:
location: japaneast
resourceGroup: aksbase01-rg
sslEnforcement: disabled
firewallRules:
- startIPAddress: "0.0.0.0"
endIPAddress: "255.255.255.255"
name: "AllowAll"
- 39. デプロイされたDatabase for MySQLの情
報参照
OSBAで作成されたMySQLの必要
なパラメータはServiceBindingで
Secretに変換できる
Secret “mysql-secret” にOSBAが
作成したMySQLの各種情報が格
納される
→後はPodから繋げるだけですね
Copyright© 2019, Y.Katakura All Rights Reserved.
39
apiVersion: servicecatalog.K8s.io/v1beta1
kind: ServiceBinding
metadata:
name: mysql-servicebinding
spec:
instanceRef:
name: wp-mysql
secretName: mysql-secret
$ kubectl get secret mysql-secret -o yaml
apiVersion: v1
data:
database: eWhiZGQycHkwMg==
host: ZDg0ZTU2ODgtZDJkNC00ODc4LWFiYmYtOGEzODk0ZjJ
lNDcwLm15c3FsLmRhdGFiYXNlLmF6dXJlLmNvbQ==
password: cDhRQWVYN0JQN2x6a1JXRQ==
port: MzMwNg==
sslRequired: ZmFsc2U=
tags: WyJteXNxbCJd
(以下略)
- 41. 参考になるURL
Azure Kubernetes Services WorkShop
AKSを使い倒すためのKnow How集(ただし英語)
https://github.com/yoshioterada/k8s-Azure-Container-Service-AKS--on-Azure
Kubernetes の導入時に考えるべきこと
Azureを提案する時によく聞かれるAKSの採用指針について
https://yoshio3.com/2019/07/20/appropriate-choice-of-k8s-environment/
Special thanks to #てらだよしおがんばれ
Copyright© 2019, Y.Katakura All Rights Reserved.
41