なになれ

IT系のことを記録していきます

Kubernetes

RenovateでKubernetesエコシステムのバージョン追従を試した

背景 CloudNative Days Tokyo 2021の下記を視聴し、Kubernetesエコシステムのバージョン追従を自動化せねばと思った次第です。 event.cloudnativedays.jp 発表の中では独自の仕組みで実現されているということで、Renovateで同じようなことができないかを試…

Udemyにコースを公開して講師デビューした

Udemyにコースを公開して講師デビューしました。この投稿はそのコースの宣伝記事です。 どんなコースでどんな思いで作成したのかを紹介します。 コース内容 Kubernetes、Amazon EKSを手を動かして学ぶハンズオンのコンテンツになります。 www.udemy.com Kube…

AWS Load Balancer Controllerの省力Getting Started

ALB Ingress ControllerからAWS Load Balancer Controllerに変わってから、Getting Startedしてなかったので、試してみました。 公式ドキュメントのExamplesを試すでも良かったのですが、手数が多そうだったので、自分なりに手順を作りました。 kubernetes-s…

Kubernetesのマルチクラスタ管理に役立ちそうなCluster API Provider AWSを試した

Kubecon EU 2021のセッションで知ったCluster API Provider AWSを軽く試したので、その内容を紹介します。 Cluster API Provider AWSを使って、EKSでKubernetes Clusterを作成しました。 ちなみにセッションはこれです。 kccnceu2021.sched.com youtu.be な…

おうちKubernetesクラスタでtype: LoadBalancerを試す

type: LoadBalancerは、ロードバランサーを表すKubernetesリソースです。 パブリッククラウドでのKubernetes環境であればLoadBalancerリソースを作成すると、各パブリッククラウドが提供するロードバランサーが作られて、Kubernetes環境でロードバランサーを…

ARM用コンテナイメージを楽に用意する方法(OSS限定)

ラズベリーパイでKubernetesクラスタを構築した場合、ラズベリーパイはCPUがARMアーキテクチャなので、各種プログラムの起動には、ARM用コンテナイメージが必要になります。 Argo CDなどで有名なArgo Projectのツールでは、ARM用のコンテナイメージがないこ…

AWSとTerraformでKubernetesを学ぶ本を書いたので1章をまるっと公開します

この記事は、Kubernetes3 Advent Calendar 2020の25日目の投稿です。 最近AWSとTerraformを使ってKubernetesを学ぶ本を書きました。 本記事では、その内容をただ載せるだけの楽をしてしまっています。すみません。ただの宣伝です。 興味を持った方は、明日か…

GitOpsを実現するツールArgo CDを試した

Kubernetesにおけるデプロイ方法はGitOpsがデファクトスタンダードになったと思います。 GitOpsを実現するツールの中で、今回はArgo CDの使い方を紹介します。 argoproj.github.io 内容 セットアップ Argo CDをインストールします。 $ kubectl create namesp…

Gitに秘匿情報をcommitする必要がなくなるKustomize Pluginを作った

AWS Systems Manager Parameter Storeを使って、SecretsリソースをGenerateするKustomize Pluginを作りました。 作ったもの github.com この記事では、なぜこのPluginが必要だったのか、どのようにPluginを作ったかといったことを紹介します。 このPlugin自…

Kubernetes Nativeなプログラムを作る際に知っておくべきこと

kubectl pluginという形でKubernetes Nativeなプログラムを作りました。 github.com その際に前提知識としてKubernetes APIの理解が必要だと感じました。 本投稿では、Kubernetes Nativeなプログラムを作る際に知っておくべき知識を紹介します。 なお、Goお…

kubectl pluginを作るのに役立つcli-runtimeの使い方を調べた

kubectl pluginのページで紹介されているcli-runtimeについて、kubeconfig fileを扱うヘルパーとして使えるなどkubectl pliuginを作るのに利用できるとあります。 kubernetes.io このcli-runtimeを使い方を調べてみたので、その内容を紹介します。 ソースは…

Raspberry Piを使ってKubernetesクラスタを構築した

Raspberry Piを使って自宅環境でKubernetesクラスタを構築しました。 いわゆる、おうちKubernetesをやってみたかったのでやりました。 その内容を紹介します。 物理構築 自宅で未使用だったRaspberry Pi 3と買い足したRaspberry Pi 4を使用しました。 物品一…

Kubernetes Meetup Tokyoで発表しました。内容の補足もあるよ

Kubernetes Meetup Tokyoでここ1年くらいAmazon EKSに関わってきた内容を「1人運用を支えるAmazon EKSノウハウ」というタイトルで発表しました。 k8sjp.connpass.com 発表内容を振り返りつつ、補足も交えてここで紹介できればと思います。 発表資料は下記で…

KubernetesマニフェストでDRYを守るためのkustomizeの使い方

Kubernetesマニフェストはyamlファイルなので、ファイルの数が多くなるにしたがって記述の重複も多くなって困ります。 kustomizeを利用すると、重複をなくすDRYな状態を保てます。 その他にもKubernetesマニフェストを記述する際に便利な機能があります。 本…

Kubernetesのコアコンセプト「Reconciliation Loop」をソースコードリーディングでより深く理解する

Infra Study Meetup #2において、Kubernetesの紹介を中心とした基調講演が行われました。 Kubernetesに興味を持っている自分にとっては、Kubernetesの未来を感じさせてくれる講演でした。 youtu.be この講演の中でKubernetesに未来を感じる部分として、Contr…

TerraformでEKSの環境を作ることで環境構築方法を統一したい

EKSの環境を作るにはeksctlという便利なツールがあります。 これを使えば、様々なパターンの環境構築に簡単に対応できて、とても便利です。 ただし、eksctlはEKS周辺の環境構築しか行うことができません。 今の環境ではAWSリソースの管理はTerraformで実施し…

Amazon EKSでAWS Fargateを動かす

EKSでFargateを動かしてみたので、その記録です。 セットアップ fargate起動向けのクラスタを作成する eksctlを使います。クラスタの設定は下記です。 cluster.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: fargate-cluster re…

Amazon EKSのマネージド型ノードグループを理解する

Amazon EKSには、マネージド型ノードグループでノードを用意する方法とセルフでノードを用意する方法の2つのノードを作成する方法があります。 docs.aws.amazon.com Getting startedを見ると、マネージド型ノードグループを前提とした手順になっています。 …

Kubernetes利用環境のおすすめツール

Kubernetesを利用するに当たってのおすすめツールを紹介します。 kube-ps1 ある程度kubernetesを使うようになると、contextの切り替えが頻繁に発生します。 そういった中で、現在のcontextが何なのかを毎回確認するのが面倒になります。 そこで使えるのがkub…

KubernetesでLoad BalancerとしてEnvoyを試した

こちらでEnvoyを一通り学習しました。 www.katacoda.com 理解できているかの確認のために、KubernetesでEnvoyを使ってみます。 KubernetesでEnvoyを使う場合、EnvoyをSidecarプロキシにすることで各Podの通信をコントロールする構成が知られています。 サー…

Kubernetes環境での開発のTips

Kubernetes環境で開発する場合のTipsを紹介します。 Kubernetes環境での開発について Tipsを紹介する前にKubernetes環境での開発について説明します。 Kubernetes環境で開発したサービスを動かすには、実際に動かすプログラムの他にマニフェストファイルが必…

Horizontal Pod AutoscalerのメトリクスにCloudWatchを使用する

KubernetesのHorizontal Pod Autoscaler(HPA)を使用することで、CPUやメモリの使用状況に応じてPodをスケールアウトすることができます。 また、HPAではカスタムメトリクスを使うことで、CPUやメモリ以外のメトリクスを活用できます。 AWSでは、CloudWatchの…

client-goを使ってKubernetesのAPIに触れた

client-goとは KubernetesのAPIを実行するためのgoのモジュールです。 github.com Kubernetesの拡張にも使われてます。 ゼロから始めるKubernetes Controller / Under the Kubernetes Controller - Speaker Deck これ以降は実際に使ってみた内容です。 筆者…

JAWS-UGコンテナ支部 #16〜EKS on Fargateローンチ記念!EKS祭りだワッショイ 参加レポート

JAWS-UGコンテナ支部 #16〜EKS on Fargateローンチ記念!EKS祭りだワッショイの参加レポートです。 jawsug-container.connpass.com イベント名のとおり、AWSのサービスであるAmazon EKSやそのベースとなるKubernetesについての発表が数多く行われたイベント…

KubernetesでResource requestsとlimitsを最適な値にする方法

Kubernetesでは、ContainerのCPUやMemoryの使用量を設定するためのResource requestsとlimitsの機能があります。 これらの値をどのように決めるかはなかなか難しいのではないかと思います。 ただKubernetesの運用において、Resource requestsとlimitsの設定…

2019年で学んだ技術

2019年を振り返る内容です。 半年過ぎたころからAWSメインのインフラ業務が多くなってきたので、そのあたりで学ぶことが変わったりしました。 AWS 基本的な理解 Udemyのコース「手を動かしながら2週間で学ぶ AWS 基本から応用まで」 ※こちらは現在新規での受…

Kubernetesでエラーを返さずにPodを更新するにはwaitするのが解決策だった

Kubernetesでエラーを返さずにPodを更新するにはどうすれば良いか色々検証しました。 結論はPodが終了する直前にwaitするです。 以下、試したことを書きます。 結論だけ知りたい方はこちらからどうぞ。 今回はNode.jsで検証しましたが 、そのほか全般的に当…

Kubernetes Operatorを試した

試したものはPrometheusのOperatorです。 github.com Kubernetes Operatorとは OperatorはKubernetesに特化したアプリケーションです。Custom Controllerとして実装されています。 Operatorはアプリケーションのデプロイとスケーリングのノウハウをカプセル…

KubernetesのCustom Resourceを試した

KubernetesのCustom ResourceはKubernetesをユーザが拡張するためのものです。 Kubernetesの標準にあるDeploymentのようなリソースをユーザが独自に作成し、リソースの定義に応じて、Kubernetes上のリソースをコントロールすることが可能です。 Controllerと…

Kubernetesでカナリアリリースを試す

Kubernetesではコンテナイメージを実行するのにDeploymentが使われます。 ただこのDeploymentではカナリアリリースを実現することはできません。 そこでArgo Rolloutsを使って、カナリアリリースを試します。 argoproj.github.io 以下に試した内容を紹介しま…