AKSをセキュアに利用するためのテクニカルリファレンス
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[Azure Kubernetes Service (AKS)]]
--[[Azure Subscriptionの管理@エンプラ]]
---[[FgCF (Financial-grade Cloud Fundamentals)]]~
・[[AppService閉域構成テクニカルリファレンス]]~
・AKSをセキュアに利用するためのテクニカルリファレンス
* 目次 [#ge667ff3]
#contents
*概要 [#q76f87a9]
-[[なんか、公開されていた>#q2387273]]ので聞いてみることに...
-[[クラウド]]([[Azure]])の利用、[[コンテナ技術]]([[Doc...
[[Open PaaS>AzureのPaaS#u5759581]]についての知識が必要に...
**[[K8s>Azure Kubernetes Service (AKS)#x4a72daa]]のポイン...
***採用 [#a3150de4]
-[[K8s>#vf319a19]]は難しい。
-以下の目的にて異合しているか?
--可搬性
---[[K8s>#vf319a19]]採用の目的は主に可搬性
---ただ、可搬性の大部分はコンテナで担保
--マイクロサービス
---アーキテクチャを構成し易い。
---Ingress - Service - Pod構成
***基本構成 [#gcac2445]
-制御プレーン
--Master APIを持っている
--Kubernetes CLI(kubectl)から操作する。
--AKSでの変更点は[[コチラ>#n7feb42c]]
-実行ノード
--VMSS : VM Scale Set~
--Ingress - Service - Pod構成~
※ Ingress - Serviceの詳細は[[コチラ>AzureのGW / LB的なモ...
---Pod~
・Dockerコンテナ~
・1podに複数コンテナを配置可能
---Service~
・L4ロードバランサ~
・サービス・メッシュを構成
---Ingress~
・L7ロードバランサ~
・必須ではない(オプショナル)
--AKSでの変更点は[[コチラ>#u41cdddc]]
***デプロイ方式 [#s7a54baa]
-Deploymentでラッピングされている。
-Podを物理ノードに配置する方式
--[[ReplicaSet>https://dotnetdevelopmentinfrastructure.os...
通常は、空いている物理ノードに均等に割り当てる。
--[[DemonSet>https://dotnetdevelopmentinfrastructure.ossc...
すべての、または特定の物理ノードに1つだけ配置する
***名前空間 [#h2084eb7]
-*.yamlで名前空間を定義すると、
-Kubernetes CLI(kubectl)から指定が必要になる。
-下位には、[[Service>#gcac2445]]と[[Deployment>#s7a54baa]...
***kube configファイル [#p6cdc458]
-これは、Master APIにアクセスするためのクレデンシャル情報。
-AKSでは「[[az aks get-credentials>Azure Kubernetes Servi...
「--admin」オプションを付与
-- した場合、AKSクラスタ 管理者権限のクレデンシャルを取得
-- しない場合、AKSクラスタ ユーザ権限のクレデンシャルを取得
>※ K8sの権限については、[[コチラ>https://dotnetdevelopmen...
>※ 「--admin」オプションを付与するには、Azure RBACロール...
-以下の手順でも登場している。
--[[ダッシュボードによる状態確認>#ie2718ce]]
--[[Azure Kubernetes Service (AKS)>Azure Kubernetes Servi...
--[[Docker Desktop for Windows>Docker Desktop for Windows...
-kube configファイルの一般的な話は[[コチラ>https://dotnet...
***ダッシュボード [#df064deb]
ダッシュボードを追加して利用可能
**AKSのポイント [#bf07dd3a]
AKS : Azure Kubernetes Service
***[[制御プレーン>#gcac2445]] [#n7feb42c]
-構築不要 ≒ マネージド
-az コマンドで構築可能
-1つのリソース・グループとしてまとめて作成される。
-[[ノードプール>Azure Kubernetes Service (AKS)#yf99ad99]]...
***[[実行ノード>#gcac2445]] [#u41cdddc]
-構築不要 ≒ マネージド
-az コマンドで構築可能
-1つのリソース・グループとしてまとめて作成される。
-[[ノードプール>Azure Kubernetes Service (AKS)#yf99ad99]]...
***[[ACR>Azure Container Registry]] [#zbb28090]
***[[MCR>Microsoft Container Registry]] [#u4a1c468]
*詳細 [#j66a273a]
**AKS概要 [#v44909e0]
***内容 [#mafc8374]
-[[前述のポイント部分>#q76f87a9]]の説明
-基本的に
--[[Azure Cloud Shell]]を使用
--[[名前空間>#h2084eb7]]を利用
-[[チュートリアル>Azure Kubernetes Service (AKS)#f0c15710...
***kubectlによる状態確認 [#o995f76c]
-一覧取得
kubectl get <リソース種別> --namespace <名前空間>
-詳細取得
kubectl describe <リソース種別> <ID> --namespace <名前空...
-対象削除
kubectl delete <リソース種別> <ID> --namespace <名前空間>
***ダッシュボードによる状態確認 [#ie2718ce]
-以下のコマンドを使用する。
--cluster-admin ロールに対して k8s ダッシュボードへのアク...
---付与
kubectl create clusterrolebinding kubernetes-dashboard -...
---(削除)
kubectl delete clusterrolebinding kubernetes-dashboard -...
--ダッシュボードを開く。
az aks browse --name $AKS_CLUSTER_NAME --resource-group ...
-ダッシュボードが起動したら[[kube configファイル>#p6cdc45...
-[[プロキシを上げっぱなしにする必要がある>Docker Desktop ...
--[[Azure Cloud Shell]]を使用するとブラウザ・ウィンドウを...
--CTRL+Cを実行して停止しないと、再度ダッシュボードを起動...
-ココのチュートリアルでは、[[名前空間>#h2084eb7]]を使用し...
ダッシュボード左のペインから[[名前空間>#h2084eb7]]を選択...
-プロキシを停止するときは以下を行う。
--シェルを使用している場合、CTRL+Cを実行して停止する。
--[[Azure Cloud Shell]]のウィンドウを閉じてしまった場合な...
ps -efl | grep 8001
kill <pid>
-参考
--Web ダッシュボードで AKS クラスターを管理する | Microso...
https://docs.microsoft.com/ja-jp/azure/aks/kubernetes-das...
***基本的トラブルシュート [#k8e497b8]
-Service が起動しない
--External IP (Public IP) が適切に付与できているかを確認
kubectl get services --namespace <名前空間>
--サービスの作成が正しく行えたかどうかのログを確認
kubectl describe services <サービス名> --namespace <名前...
-Pod が正しく動作しているかを確認したい
--Pod のログを確認
kubectl logs <Pod名> --namespace nmssample
--Pod 上でコマンドを実行
kubectl exec <Pod名> --namespace nmssample ls
--ポート・フォワードしてPod内部動作を確認~
例) localhost:8000 → コンテナ上の ポート 80
kubectl port-forward <Pod名> --namespace nmssample 8000:80
-Pod が正しく動作しているのに Service の L4LB 経由でアプ...
--YAML ファイルの selector の記述が正しいかを確認~
※ selector は記述が間違っていてもエラーを出さない
***ツールやライブラリ [#p63c7102]
-[[Helm>https://dotnetdevelopmentinfrastructure.osscons.j...
--Pod, Service, Ingress などの構成を一括で行うことができ...
--[[K8s>#vf319a19]]リソースのインストール / アンインスト...
-[[nginx>https://dotnetdevelopmentinfrastructure.osscons....
--OSS の軽量 Web サーバで、リバースプロキシとしてよく利用...
--[[K8s>#vf319a19]]では、簡易な Ingress として利用される...
-Istio サービス・メッシュ
--マイクロサービスの共通処理を担うサービス・メッシュの定番
--業務用のコンテナ + Istio のコンテナで各 Pod を構成して...
-Prometheus
--[[K8s>#vf319a19]]監視ツールの定番
--他の監視ツール(クラスタ基盤の監視ツール)と~
組み合わせて利用されることが多い
-Grafana
--グラフィカルなダッシュボードの表示ツールの定番
--Prometheus などと組み合わせて利用される
-その他
--Useful Tool for k8s managing and monitoring~
https://github.com/yoshioterada/k8s-Azure-Container-Servi...
**構成のポイント [#bdd009e5]
≒プライベート化のポイント~
(動画も3時間半と長く、内容も濃いので、~
[[Azure]]側も理解しながらだと、一気通貫に1週間位かかる)
***物理インフラ構成 [#s3bedcc6]
-実際の物理インフラは、
--K8s~
[[K8sのポイント>#vf319a19]]
--Azure~
[[AKSのポイント>#bf07dd3a]]
>に分かれる。
-フルコンテナ化~
現時点では難しい。
--特に、DBサーバが難しい
--監視サーバは基盤外が良いケースが多い。
-Kubernetes CLI(kubectl)か、[[Azure CLI]]か。
--Kubernetes CLI(kubectl)
---Ingress - Service - Pod構成
---ダッシュボード
--[[Azure CLI]]
---コンテナ・レジストリ
---マネージド・サービス(PaaS)版のDB
---その他~
・監視サーバ~
・機密情報保管庫(Key Vault)
***ネットワーク構成 [#h6e5b109]
-ネットワーク分離
--[[CNI方式>https://dotnetdevelopmentinfrastructure.ossco...
≒PodのIPアドレスの付与の方式
---kubenet方式~
仮想IPを使用して、NAT変換する。
---Azure CNI方式(&color(red){推奨};)~
PodのIPに[[VNET>Azureの仮想ネットワーク]]のIPが使用される...
Azureの仮想ノードやサービスを利用可能。
--内部設置
---[[VDC>Azure Virtual Data Center]]内部に配置~
大量のプライベートIPアドレスを使用してしまう。
---[[VNET>Azureの仮想ネットワーク]]分離(&color(red){推奨...
[[Azure Private Link]]でオンプレ接続する。~
・すると、プライベートIPアドレスを消費しない。~
・また、テスト面の構築などの場合にも便利。~
・[[VNET>Azureの仮想ネットワーク]]からオンプレに入れない...
-[[制御プレーン>#gcac2445]]のプライベート化
--Master APIのプライベート化
---[[プライベートAKSクラスタ>Azure Kubernetes Service (AK...
Master APIを[[VNET>Azureの仮想ネットワーク]]に引き込み、~
[[VNET>Azureの仮想ネットワーク]]からしかアクセスできな...
---しかし、~
・[[ノードプール>Azure Kubernetes Service (AKS)#yf99ad99]...
(ただし、[[デモ>AKSをセキュアに利用する構築デモ]]では...
・また、ARM APIがパブリックなので、~
Master APIだけプライベートではアンバランス。
--既存のアクセス制限機能を使用(&color(red){推奨};)
---ARM API:~
[[AzADによる条件付きアクセス機能を構成する。>Azure Kubern...
---Master API:~
[[IPアドレスによるアクセス制限機能>プライベートAKSクラス...
-[[ノードプール>Azure Kubernetes Service (AKS)#yf99ad99]]...
--入力経路の制限 (Ingress Lockdown)~
・[[制御プレーン>#gcac2445]]からノードプール~
不要(出力方向で通信するため)~
・保守端末からノードプール~
・インターネット:[[Azure Bastion]]~
・オンプレ:[[Azure Private Link]]~
・エンドユーザーからアプリケーション~
コチラは長くなるので、[[コチラ>AzureのGW / LB的なモノ。...
--出力経路の制限 (Egress Lockdown)~
・[[プロキシ的なモノ>Azureのプロキシ的なモノ。]]で制限。~
・[[基本的に、Azure Firewallを利用する。>Azure Kubernet...
・以下のコマンドでデフォゲ(ELB)を作成しない。~
az aks create ... --outbound-type userDefinedRoutiong
・必要な通信は以下。~
・Master API~
・セキュリティ更新~
・[[MCR>#u4a1c468]]:サービス全体が基本的に安全~
・[[ACR:ユーザ・テナント毎の制限が必要。>Azure Kuberne...
・各種サービス([[Azure SQL Databaseの制限>Azure Kubern...
-参考
--[[オンプレ延伸>FgCF (Financial-grade Cloud Fundamentals...
--[[OA-LANとAzureのVNETの分離]]。
--Service CIDR、Docker Bridge CIDR
---Service CIDR
---Docker Bridge CIDR
--DockerとKubernetesのPodのネットワーキングについてまとめ...
https://foobaron.hatenablog.com/entry/k8s-pod-networking
--Microsoft Docs~
Azure Kubernetes Service (AKS) のドキュメント
---概念 - Azure Kubernetes サービス (AKS) におけるネット...
https://docs.microsoft.com/ja-jp/azure/aks/concepts-network
---操作方法ガイド > ネットワークを構成する~
https://docs.microsoft.com/ja-jp/azure/aks/
***認証・認可 [#h7815383]
-インフラ
--Azureポータル, Azure CLI (ARM API)の認証・認可
---既定で、[[Azure Active Directory]]の認証を要する。
---追加で、[[前述>#h6e5b109]]の、~
・[[Azure Active Directory]]による条件付きアクセス機能を...
・若しくは、IPアドレス制限 / プライベート化を構成する。
--[[制御プレーン>#gcac2445]]の実行アカウント
---[[SPN方式>AKSクラスタ作成・操作に必要な権限#c8ea8683]]
---[[Managed ID方式>AKSクラスタ作成・操作に必要な権限#i3b...
--コンテナ・レジストリからのイメージ取得権限
---[[ACR>#zbb28090]]統合 → [[コチラ>AKSクラスタ作成・操作...
---3RDパーティのコンテナ・レジストリ~
https://kubernetes.io/docs/tasks/configure-pod-container/...
-中間(境界線が引き難い)
--K8sダッシュボード, Kubernetes CLI(kubectl)
---「[[az aks get-credentials>Azure Kubernetes Service (A...
---必要に応じて、以下の持ち出し対策を行う。~
・[[Azure Active Directory]]認証と統合する。→ [[コチラ>Az...
・[[前述>#h6e5b109]]のMaster APIのIPアドレス制限 / プライ...
※ IPアドレス制限 / プライベート化で十分という説もある。
-アプリ
--[[AKSユーザ・アプリからのリソース・アクセス>Azure Kuber...
---Secret管理
---[[Managed ID>Azure Managed ID]]
***基盤保守 [#rd67a39f]
-AKSの更新
--AKS基盤は自動~
(マネージド・サービス)
---[[制御プレーン>#gcac2445]]
---[[ノードプール(VMSS)>#gcac2445]]
--K8sのバージョンアップは手動~
(AKSとK8sのバージョンの関係が重要)
-ノードの更新
--[[実行ノード>#gcac2445]](Linuxノード、Windowsノード)...
--OSのセキュリティ・アップデート(Ubuntu)は日次で自動更...
--Kuredと言うOSSをK8sにインストールすると、再起動をしてく...
--[[ノードプール(VMSS)>#gcac2445]]のローリング・アップ...
-Podの更新
--コンテナ・レジストリ内のイメージ
--イメージ内のアプリ
---アプリ自体
---ライブラリ
>※ 詳細は[[コチラ>Azure Kubernetes Service (AKS)#e755b2b0]]
***開発~デプロイ [#ye9b2134]
-一般的な DevOps ワークフロー
-金融系等では「PoC → 開発 → 本番」環境分離(セキュリティ...
>※ 詳細は[[コチラ>Azure Kubernetes Service (AKS)#ja9f4fdf]]
**[[構築デモ>AKSをセキュアに利用する構築デモ]] [#x9c8bdc8]
-[[構成のポイント>#bdd009e5]]を再咀嚼しつつ、デモの内容を...
-[[構成のポイント>#bdd009e5]]の理解が薄いと、何してるのか...
*参考 [#q2387273]
**Microsoft Docs [#tbc75de6]
-概念 - Azure Kubernetes Service (AKS) におけるセキュリテ...
https://docs.microsoft.com/ja-jp/azure/aks/concepts-secur...
***ベスト プラクティス [#r9bfd9d5]
-Azure Kubernetes Service (AKS) に関するベスト プラクティ...
https://docs.microsoft.com/ja-jp/azure/aks/best-practices
--ネットワークとストレージ
---ネットワーク リソースのベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
---ストレージとバックアップに関するベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
--マルチテナント
---クラスター分離に関するベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
---ID 管理のベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
--セキュリティ
---クラスター セキュリティに関するベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
---コンテナー イメージ管理のベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
--BCP、BCM
---AKS での事業継続とディザスター リカバリーに関するベス...
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
--開発者向け
---リソース管理のベストプラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/developer-best...
---ポッド セキュリティのベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/developer-best...
**nakama [#icc83da1]
-https://twitter.com/nakama00/status/1256070593025196032
--https://www.facebook.com/nobuyuki.akama.5/posts/2947887...
>※ YouTubeで限定公開とあるケド、Facebookで公開なのって、...
***技術概要 [#q8c070d7]
-YouTube~
https://www.youtube.com/watch?v=PrE3c1ZvL4s
-video~
https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_...
-ppt~
https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_...
***構築の要点 [#nfcef196]
-YouTube~
https://www.youtube.com/watch?v=PL5MtSVzdI4
-video~
https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_...
***リファレンスアーキテクチャ [#b56bd3dc]
-YouTube~
https://www.youtube.com/watch?v=-Mawv15LhQc
-video~
https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_...
----
Tags: [[:クラウド]], [[:コンテナ]], [[:Azure]], [[:AKS]],...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[Azure Kubernetes Service (AKS)]]
--[[Azure Subscriptionの管理@エンプラ]]
---[[FgCF (Financial-grade Cloud Fundamentals)]]~
・[[AppService閉域構成テクニカルリファレンス]]~
・AKSをセキュアに利用するためのテクニカルリファレンス
* 目次 [#ge667ff3]
#contents
*概要 [#q76f87a9]
-[[なんか、公開されていた>#q2387273]]ので聞いてみることに...
-[[クラウド]]([[Azure]])の利用、[[コンテナ技術]]([[Doc...
[[Open PaaS>AzureのPaaS#u5759581]]についての知識が必要に...
**[[K8s>Azure Kubernetes Service (AKS)#x4a72daa]]のポイン...
***採用 [#a3150de4]
-[[K8s>#vf319a19]]は難しい。
-以下の目的にて異合しているか?
--可搬性
---[[K8s>#vf319a19]]採用の目的は主に可搬性
---ただ、可搬性の大部分はコンテナで担保
--マイクロサービス
---アーキテクチャを構成し易い。
---Ingress - Service - Pod構成
***基本構成 [#gcac2445]
-制御プレーン
--Master APIを持っている
--Kubernetes CLI(kubectl)から操作する。
--AKSでの変更点は[[コチラ>#n7feb42c]]
-実行ノード
--VMSS : VM Scale Set~
--Ingress - Service - Pod構成~
※ Ingress - Serviceの詳細は[[コチラ>AzureのGW / LB的なモ...
---Pod~
・Dockerコンテナ~
・1podに複数コンテナを配置可能
---Service~
・L4ロードバランサ~
・サービス・メッシュを構成
---Ingress~
・L7ロードバランサ~
・必須ではない(オプショナル)
--AKSでの変更点は[[コチラ>#u41cdddc]]
***デプロイ方式 [#s7a54baa]
-Deploymentでラッピングされている。
-Podを物理ノードに配置する方式
--[[ReplicaSet>https://dotnetdevelopmentinfrastructure.os...
通常は、空いている物理ノードに均等に割り当てる。
--[[DemonSet>https://dotnetdevelopmentinfrastructure.ossc...
すべての、または特定の物理ノードに1つだけ配置する
***名前空間 [#h2084eb7]
-*.yamlで名前空間を定義すると、
-Kubernetes CLI(kubectl)から指定が必要になる。
-下位には、[[Service>#gcac2445]]と[[Deployment>#s7a54baa]...
***kube configファイル [#p6cdc458]
-これは、Master APIにアクセスするためのクレデンシャル情報。
-AKSでは「[[az aks get-credentials>Azure Kubernetes Servi...
「--admin」オプションを付与
-- した場合、AKSクラスタ 管理者権限のクレデンシャルを取得
-- しない場合、AKSクラスタ ユーザ権限のクレデンシャルを取得
>※ K8sの権限については、[[コチラ>https://dotnetdevelopmen...
>※ 「--admin」オプションを付与するには、Azure RBACロール...
-以下の手順でも登場している。
--[[ダッシュボードによる状態確認>#ie2718ce]]
--[[Azure Kubernetes Service (AKS)>Azure Kubernetes Servi...
--[[Docker Desktop for Windows>Docker Desktop for Windows...
-kube configファイルの一般的な話は[[コチラ>https://dotnet...
***ダッシュボード [#df064deb]
ダッシュボードを追加して利用可能
**AKSのポイント [#bf07dd3a]
AKS : Azure Kubernetes Service
***[[制御プレーン>#gcac2445]] [#n7feb42c]
-構築不要 ≒ マネージド
-az コマンドで構築可能
-1つのリソース・グループとしてまとめて作成される。
-[[ノードプール>Azure Kubernetes Service (AKS)#yf99ad99]]...
***[[実行ノード>#gcac2445]] [#u41cdddc]
-構築不要 ≒ マネージド
-az コマンドで構築可能
-1つのリソース・グループとしてまとめて作成される。
-[[ノードプール>Azure Kubernetes Service (AKS)#yf99ad99]]...
***[[ACR>Azure Container Registry]] [#zbb28090]
***[[MCR>Microsoft Container Registry]] [#u4a1c468]
*詳細 [#j66a273a]
**AKS概要 [#v44909e0]
***内容 [#mafc8374]
-[[前述のポイント部分>#q76f87a9]]の説明
-基本的に
--[[Azure Cloud Shell]]を使用
--[[名前空間>#h2084eb7]]を利用
-[[チュートリアル>Azure Kubernetes Service (AKS)#f0c15710...
***kubectlによる状態確認 [#o995f76c]
-一覧取得
kubectl get <リソース種別> --namespace <名前空間>
-詳細取得
kubectl describe <リソース種別> <ID> --namespace <名前空...
-対象削除
kubectl delete <リソース種別> <ID> --namespace <名前空間>
***ダッシュボードによる状態確認 [#ie2718ce]
-以下のコマンドを使用する。
--cluster-admin ロールに対して k8s ダッシュボードへのアク...
---付与
kubectl create clusterrolebinding kubernetes-dashboard -...
---(削除)
kubectl delete clusterrolebinding kubernetes-dashboard -...
--ダッシュボードを開く。
az aks browse --name $AKS_CLUSTER_NAME --resource-group ...
-ダッシュボードが起動したら[[kube configファイル>#p6cdc45...
-[[プロキシを上げっぱなしにする必要がある>Docker Desktop ...
--[[Azure Cloud Shell]]を使用するとブラウザ・ウィンドウを...
--CTRL+Cを実行して停止しないと、再度ダッシュボードを起動...
-ココのチュートリアルでは、[[名前空間>#h2084eb7]]を使用し...
ダッシュボード左のペインから[[名前空間>#h2084eb7]]を選択...
-プロキシを停止するときは以下を行う。
--シェルを使用している場合、CTRL+Cを実行して停止する。
--[[Azure Cloud Shell]]のウィンドウを閉じてしまった場合な...
ps -efl | grep 8001
kill <pid>
-参考
--Web ダッシュボードで AKS クラスターを管理する | Microso...
https://docs.microsoft.com/ja-jp/azure/aks/kubernetes-das...
***基本的トラブルシュート [#k8e497b8]
-Service が起動しない
--External IP (Public IP) が適切に付与できているかを確認
kubectl get services --namespace <名前空間>
--サービスの作成が正しく行えたかどうかのログを確認
kubectl describe services <サービス名> --namespace <名前...
-Pod が正しく動作しているかを確認したい
--Pod のログを確認
kubectl logs <Pod名> --namespace nmssample
--Pod 上でコマンドを実行
kubectl exec <Pod名> --namespace nmssample ls
--ポート・フォワードしてPod内部動作を確認~
例) localhost:8000 → コンテナ上の ポート 80
kubectl port-forward <Pod名> --namespace nmssample 8000:80
-Pod が正しく動作しているのに Service の L4LB 経由でアプ...
--YAML ファイルの selector の記述が正しいかを確認~
※ selector は記述が間違っていてもエラーを出さない
***ツールやライブラリ [#p63c7102]
-[[Helm>https://dotnetdevelopmentinfrastructure.osscons.j...
--Pod, Service, Ingress などの構成を一括で行うことができ...
--[[K8s>#vf319a19]]リソースのインストール / アンインスト...
-[[nginx>https://dotnetdevelopmentinfrastructure.osscons....
--OSS の軽量 Web サーバで、リバースプロキシとしてよく利用...
--[[K8s>#vf319a19]]では、簡易な Ingress として利用される...
-Istio サービス・メッシュ
--マイクロサービスの共通処理を担うサービス・メッシュの定番
--業務用のコンテナ + Istio のコンテナで各 Pod を構成して...
-Prometheus
--[[K8s>#vf319a19]]監視ツールの定番
--他の監視ツール(クラスタ基盤の監視ツール)と~
組み合わせて利用されることが多い
-Grafana
--グラフィカルなダッシュボードの表示ツールの定番
--Prometheus などと組み合わせて利用される
-その他
--Useful Tool for k8s managing and monitoring~
https://github.com/yoshioterada/k8s-Azure-Container-Servi...
**構成のポイント [#bdd009e5]
≒プライベート化のポイント~
(動画も3時間半と長く、内容も濃いので、~
[[Azure]]側も理解しながらだと、一気通貫に1週間位かかる)
***物理インフラ構成 [#s3bedcc6]
-実際の物理インフラは、
--K8s~
[[K8sのポイント>#vf319a19]]
--Azure~
[[AKSのポイント>#bf07dd3a]]
>に分かれる。
-フルコンテナ化~
現時点では難しい。
--特に、DBサーバが難しい
--監視サーバは基盤外が良いケースが多い。
-Kubernetes CLI(kubectl)か、[[Azure CLI]]か。
--Kubernetes CLI(kubectl)
---Ingress - Service - Pod構成
---ダッシュボード
--[[Azure CLI]]
---コンテナ・レジストリ
---マネージド・サービス(PaaS)版のDB
---その他~
・監視サーバ~
・機密情報保管庫(Key Vault)
***ネットワーク構成 [#h6e5b109]
-ネットワーク分離
--[[CNI方式>https://dotnetdevelopmentinfrastructure.ossco...
≒PodのIPアドレスの付与の方式
---kubenet方式~
仮想IPを使用して、NAT変換する。
---Azure CNI方式(&color(red){推奨};)~
PodのIPに[[VNET>Azureの仮想ネットワーク]]のIPが使用される...
Azureの仮想ノードやサービスを利用可能。
--内部設置
---[[VDC>Azure Virtual Data Center]]内部に配置~
大量のプライベートIPアドレスを使用してしまう。
---[[VNET>Azureの仮想ネットワーク]]分離(&color(red){推奨...
[[Azure Private Link]]でオンプレ接続する。~
・すると、プライベートIPアドレスを消費しない。~
・また、テスト面の構築などの場合にも便利。~
・[[VNET>Azureの仮想ネットワーク]]からオンプレに入れない...
-[[制御プレーン>#gcac2445]]のプライベート化
--Master APIのプライベート化
---[[プライベートAKSクラスタ>Azure Kubernetes Service (AK...
Master APIを[[VNET>Azureの仮想ネットワーク]]に引き込み、~
[[VNET>Azureの仮想ネットワーク]]からしかアクセスできな...
---しかし、~
・[[ノードプール>Azure Kubernetes Service (AKS)#yf99ad99]...
(ただし、[[デモ>AKSをセキュアに利用する構築デモ]]では...
・また、ARM APIがパブリックなので、~
Master APIだけプライベートではアンバランス。
--既存のアクセス制限機能を使用(&color(red){推奨};)
---ARM API:~
[[AzADによる条件付きアクセス機能を構成する。>Azure Kubern...
---Master API:~
[[IPアドレスによるアクセス制限機能>プライベートAKSクラス...
-[[ノードプール>Azure Kubernetes Service (AKS)#yf99ad99]]...
--入力経路の制限 (Ingress Lockdown)~
・[[制御プレーン>#gcac2445]]からノードプール~
不要(出力方向で通信するため)~
・保守端末からノードプール~
・インターネット:[[Azure Bastion]]~
・オンプレ:[[Azure Private Link]]~
・エンドユーザーからアプリケーション~
コチラは長くなるので、[[コチラ>AzureのGW / LB的なモノ。...
--出力経路の制限 (Egress Lockdown)~
・[[プロキシ的なモノ>Azureのプロキシ的なモノ。]]で制限。~
・[[基本的に、Azure Firewallを利用する。>Azure Kubernet...
・以下のコマンドでデフォゲ(ELB)を作成しない。~
az aks create ... --outbound-type userDefinedRoutiong
・必要な通信は以下。~
・Master API~
・セキュリティ更新~
・[[MCR>#u4a1c468]]:サービス全体が基本的に安全~
・[[ACR:ユーザ・テナント毎の制限が必要。>Azure Kuberne...
・各種サービス([[Azure SQL Databaseの制限>Azure Kubern...
-参考
--[[オンプレ延伸>FgCF (Financial-grade Cloud Fundamentals...
--[[OA-LANとAzureのVNETの分離]]。
--Service CIDR、Docker Bridge CIDR
---Service CIDR
---Docker Bridge CIDR
--DockerとKubernetesのPodのネットワーキングについてまとめ...
https://foobaron.hatenablog.com/entry/k8s-pod-networking
--Microsoft Docs~
Azure Kubernetes Service (AKS) のドキュメント
---概念 - Azure Kubernetes サービス (AKS) におけるネット...
https://docs.microsoft.com/ja-jp/azure/aks/concepts-network
---操作方法ガイド > ネットワークを構成する~
https://docs.microsoft.com/ja-jp/azure/aks/
***認証・認可 [#h7815383]
-インフラ
--Azureポータル, Azure CLI (ARM API)の認証・認可
---既定で、[[Azure Active Directory]]の認証を要する。
---追加で、[[前述>#h6e5b109]]の、~
・[[Azure Active Directory]]による条件付きアクセス機能を...
・若しくは、IPアドレス制限 / プライベート化を構成する。
--[[制御プレーン>#gcac2445]]の実行アカウント
---[[SPN方式>AKSクラスタ作成・操作に必要な権限#c8ea8683]]
---[[Managed ID方式>AKSクラスタ作成・操作に必要な権限#i3b...
--コンテナ・レジストリからのイメージ取得権限
---[[ACR>#zbb28090]]統合 → [[コチラ>AKSクラスタ作成・操作...
---3RDパーティのコンテナ・レジストリ~
https://kubernetes.io/docs/tasks/configure-pod-container/...
-中間(境界線が引き難い)
--K8sダッシュボード, Kubernetes CLI(kubectl)
---「[[az aks get-credentials>Azure Kubernetes Service (A...
---必要に応じて、以下の持ち出し対策を行う。~
・[[Azure Active Directory]]認証と統合する。→ [[コチラ>Az...
・[[前述>#h6e5b109]]のMaster APIのIPアドレス制限 / プライ...
※ IPアドレス制限 / プライベート化で十分という説もある。
-アプリ
--[[AKSユーザ・アプリからのリソース・アクセス>Azure Kuber...
---Secret管理
---[[Managed ID>Azure Managed ID]]
***基盤保守 [#rd67a39f]
-AKSの更新
--AKS基盤は自動~
(マネージド・サービス)
---[[制御プレーン>#gcac2445]]
---[[ノードプール(VMSS)>#gcac2445]]
--K8sのバージョンアップは手動~
(AKSとK8sのバージョンの関係が重要)
-ノードの更新
--[[実行ノード>#gcac2445]](Linuxノード、Windowsノード)...
--OSのセキュリティ・アップデート(Ubuntu)は日次で自動更...
--Kuredと言うOSSをK8sにインストールすると、再起動をしてく...
--[[ノードプール(VMSS)>#gcac2445]]のローリング・アップ...
-Podの更新
--コンテナ・レジストリ内のイメージ
--イメージ内のアプリ
---アプリ自体
---ライブラリ
>※ 詳細は[[コチラ>Azure Kubernetes Service (AKS)#e755b2b0]]
***開発~デプロイ [#ye9b2134]
-一般的な DevOps ワークフロー
-金融系等では「PoC → 開発 → 本番」環境分離(セキュリティ...
>※ 詳細は[[コチラ>Azure Kubernetes Service (AKS)#ja9f4fdf]]
**[[構築デモ>AKSをセキュアに利用する構築デモ]] [#x9c8bdc8]
-[[構成のポイント>#bdd009e5]]を再咀嚼しつつ、デモの内容を...
-[[構成のポイント>#bdd009e5]]の理解が薄いと、何してるのか...
*参考 [#q2387273]
**Microsoft Docs [#tbc75de6]
-概念 - Azure Kubernetes Service (AKS) におけるセキュリテ...
https://docs.microsoft.com/ja-jp/azure/aks/concepts-secur...
***ベスト プラクティス [#r9bfd9d5]
-Azure Kubernetes Service (AKS) に関するベスト プラクティ...
https://docs.microsoft.com/ja-jp/azure/aks/best-practices
--ネットワークとストレージ
---ネットワーク リソースのベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
---ストレージとバックアップに関するベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
--マルチテナント
---クラスター分離に関するベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
---ID 管理のベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
--セキュリティ
---クラスター セキュリティに関するベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
---コンテナー イメージ管理のベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
--BCP、BCM
---AKS での事業継続とディザスター リカバリーに関するベス...
https://docs.microsoft.com/ja-jp/azure/aks/operator-best-...
--開発者向け
---リソース管理のベストプラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/developer-best...
---ポッド セキュリティのベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/aks/developer-best...
**nakama [#icc83da1]
-https://twitter.com/nakama00/status/1256070593025196032
--https://www.facebook.com/nobuyuki.akama.5/posts/2947887...
>※ YouTubeで限定公開とあるケド、Facebookで公開なのって、...
***技術概要 [#q8c070d7]
-YouTube~
https://www.youtube.com/watch?v=PrE3c1ZvL4s
-video~
https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_...
-ppt~
https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_...
***構築の要点 [#nfcef196]
-YouTube~
https://www.youtube.com/watch?v=PL5MtSVzdI4
-video~
https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_...
***リファレンスアーキテクチャ [#b56bd3dc]
-YouTube~
https://www.youtube.com/watch?v=-Mawv15LhQc
-video~
https://nakama.blob.core.windows.net/mskk/2020_04_25_AKS_...
----
Tags: [[:クラウド]], [[:コンテナ]], [[:Azure]], [[:AKS]],...
ページ名: