LoginSignup
3
3

More than 1 year has passed since last update.

kubernetesを使用するにあたってぶち当たる壁

Last updated at Posted at 2023-02-08

kubernetesをGCPやAWS上で動かすとき、実務でぶち当たった壁、考えないといけないポイントをまとめていきます。

AWSのマネージドで動かすか? k8sの中で動かすか問題

証明書関連

どこでSSL終端を行うのか?k8s-cluster外でSSL終端するのか、しないのか?を考える必要がある。さらにその証明書を得るときに期間が切れたときに自動で証明書を発行するのかいなかなどもある。

シークレット関連

通常、k8sでsecrets.yamlファイルを定義した場合、Secretのvalueはbase64で、エンコードされるだけで、エンコードされた文字列を知れば、簡単にデコードできてしまう。そのため、secretsを以下のサービスを使用して外部に置いておいて、必要な時に動的に取得するといったシークレット管理の仕方が存在する。

external-secrets-operator(ESO)

SSMパラメータストアなどに置いておいて必要な時にk8sからシークレットを呼び出す形

vault

シークレットに対してのアクセス権限を動的に発行してセキュアに保つ

認証認可・IRSA周り

IRSA(IAM Roles for Service Accounts):Pod単位でIAMのロールを割り当てる仕組み。AWS・GCPマネージドリソースとk8s-cluster内のリソースのアクセス許可とアクセス制御を考えるのが非常に大変。

HPA戦略

HPAさせる時のメモリ使用率などから考える。
このpodのメモリ率はこのインスタンスタイプにおいて常時〇%を使用している。じゃあ、〇%のリクエストを受けた時に、PodをHPAさせようなどを考えること

CRD(Custom Resource Definition)

kubernetesはGoでちなみに書かれている。deployment、serviceなどがリソースタイプに存在するのだが、そのdeploymentをdeploymentだと定義させるリソースが存在する。簡単にいうとサードパーティ製のリソースを定義するためのもの。先ほどのESOもその一つである。

EKS・GKEのアップグレードそれに対応

eksなどの特定のkubernetesバージョンに対応してる期間がかなり短い。それもkubernetesのそもそものバージョンアップデートが早いからである。

バージョンが上がったとき、旧バージョンで動いていたk8sリソースが新バージョンで動くかどうかをchangeing logで確認する必要がある。kind:apps/v1beta1とかなどは新バージョンでなかったりするケースがある。

おまけ

よく実務中、調査で使用するモジュール

k9s

この人が、使い方をまとめてくれている。

aliasでkubectl=kは登録する

kubectlまで打つのが本当にめんどくさい。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3