「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
採用 †
- 可搬性
- K8s採用の目的は主に可搬性
- ただ、可搬性の大部分はコンテナで担保
- マイクロサービス
- アーキテクチャを構成し易い。
- Ingress - Service - Pod構成
基本構成 †
- 制御プレーン
- Master APIを持っている
- Kubernetes CLI(kubectl)から操作する。
- AKSでの変更点はコチラ
- 実行ノード
- VMSS : VM Scale Set
- Ingress - Service - Pod構成
※ Ingress - Serviceの詳細はコチラ。
- Pod
・Dockerコンテナ
・1podに複数コンテナを配置可能
- Service
・L4ロードバランサ
・サービス・メッシュを構成
- Ingress
・L7ロードバランサ
・必須ではない(オプショナル)
デプロイ方式 †
名前空間 †
kube configファイル †
- これは、Master APIにアクセスするためのクレデンシャル情報。
- AKSでは「az aks get-credentials」によって取得する。
「--admin」オプションを付与
- した場合、AKSクラスタ 管理者権限のクレデンシャルを取得
- しない場合、AKSクラスタ ユーザ権限のクレデンシャルを取得
※ K8sの権限については、コチラを参照。
※ 「--admin」オプションを付与するには、Azure RBACロールの要件がある。
- kube configファイルの一般的な話はコチラ。
ダッシュボード †
ダッシュボードを追加して利用可能
AKSのポイント †
AKS : Azure Kubernetes Service
- 構築不要 ≒ マネージド
- az コマンドで構築可能
- 1つのリソース・グループとしてまとめて作成される。
- ノードプールの機能が拡張されている。
- 構築不要 ≒ マネージド
- az コマンドで構築可能
- 1つのリソース・グループとしてまとめて作成される。
- ノードプールから実行ノードが割り当てられる。
詳細 †
AKS概要 †
内容 †
kubectlによる状態確認 †
- 一覧取得
kubectl get <リソース種別> --namespace <名前空間>
- 詳細取得
kubectl describe <リソース種別> <ID> --namespace <名前空間>
- 対象削除
kubectl delete <リソース種別> <ID> --namespace <名前空間>
ダッシュボードによる状態確認 †
- 以下のコマンドを使用する。
- cluster-admin ロールに対して k8s ダッシュボードへのアクセス権限を
- 付与
kubectl create clusterrolebinding kubernetes-dashboard -n kube-system --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
- (削除)
kubectl delete clusterrolebinding kubernetes-dashboard -n kube-system
- ココのチュートリアルでは、名前空間を使用しているので、
ダッシュボード左のペインから名前空間を選択して利用する。
基本的トラブルシュート †
- Pod が正しく動作しているのに Service の L4LB 経由でアプリが呼び出せない
- YAML ファイルの selector の記述が正しいかを確認
※ selector は記述が間違っていてもエラーを出さない
ツールやライブラリ †
- Helmパッケージマネージャ
- Pod, Service, Ingress などの構成を一括で行うことができるパッケージマネージャ
- K8sリソースのインストール / アンインストールを容易化できるのがメリット
- nginx
- OSS の軽量 Web サーバで、リバースプロキシとしてよく利用される
- K8sでは、簡易な Ingress として利用されることが多い
- Istio サービス・メッシュ
- マイクロサービスの共通処理を担うサービス・メッシュの定番
- 業務用のコンテナ + Istio のコンテナで各 Pod を構成して展開する形で利用
- Prometheus
- K8s監視ツールの定番
- 他の監視ツール(クラスタ基盤の監視ツール)と
組み合わせて利用されることが多い
- Grafana
- グラフィカルなダッシュボードの表示ツールの定番
- Prometheus などと組み合わせて利用される
構成のポイント †
≒プライベート化のポイント
(動画も3時間半と長く、内容も濃いので、
Azure側も理解しながらだと、一気通貫に1週間位かかる)
物理インフラ構成 †
に分かれる。
- 特に、DBサーバが難しい
- 監視サーバは基盤外が良いケースが多い。
- Kubernetes CLI(kubectl)
- Ingress - Service - Pod構成
- ダッシュボード
- Azure CLI
- コンテナ・レジストリ
- マネージド・サービス(PaaS)版のDB
- その他
・監視サーバ
・機密情報保管庫(Key Vault)
ネットワーク構成 †
- kubenet方式
仮想IPを使用して、NAT変換する。
- Azure CNI方式(推奨)
PodのIPにVNETのIPが使用されるが、
Azureの仮想ノードやサービスを利用可能。
- VDC内部に配置
大量のプライベートIPアドレスを使用してしまう。
- しかし、
・ノードプールをVNET内に配置するという話ではない。
(ただし、デモでは既存のVNETに配置している)
・また、ARM APIがパブリックなので、
Master APIだけプライベートではアンバランス。
- Service CIDR、Docker Bridge CIDR
- Service CIDR
- Docker Bridge CIDR
- Microsoft Docs
Azure Kubernetes Service (AKS) のドキュメント
認証・認可 †
- インフラ
- Azureポータル, Azure CLI (ARM API)の認証・認可
- 中間(境界線が引き難い)
- K8sダッシュボード, Kubernetes CLI(kubectl)
基盤保守 †
- K8sのバージョンアップは手動
(AKSとK8sのバージョンの関係が重要)
- ノードの更新
- 実行ノード(Linuxノード、Windowsノード)に対して行う。
- OSのセキュリティ・アップデート(Ubuntu)は日次で自動更新される。
- Kuredと言うOSSをK8sにインストールすると、再起動をしてくれる。
- ノードプール(VMSS)のローリング・アップデート機能はAKSでは非サポート。
- Podの更新
- コンテナ・レジストリ内のイメージ
- イメージ内のアプリ
※ 詳細はコチラ
開発~デプロイ †
- 一般的な DevOps ワークフロー
- 金融系等では「PoC → 開発 → 本番」環境分離(セキュリティ境界)を考慮
※ 詳細はコチラ
参考 †
Microsoft Docs †
ベスト プラクティス †
nakama †
※ YouTube?で限定公開とあるケド、Facebookで公開なのって、実質「公開」って事で良いんだよね?
技術概要 †
構築の要点 †
リファレンスアーキテクチャ †
Tags: :クラウド, :コンテナ, :Azure, :AKS, :IaC, :セキュリティ, :通信技術, :セキュリティ, :認証基盤