なになれ

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

2020-01-01から1年間の記事一覧

2020年で学んだ技術

2020年を何を学んだかで振り返ります。 仕事としてはインフラエンジニア的なポジションで、AWSを前提としてインフラづくりや運用に関わりました。 内容的には、前年から引き続きで、Kubernetesをベースにしたアプリケーションインフラの保守・運用をしました…

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

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

OSSにPull Requestをマージしてもらえた話

つい1ヶ月弱前に世の中で結構使われているであろうOSSにPull Requestを出してマージしてもらえました。 日常的にOSSにContributeしているようなエンジニアであれば、なんだそんなことかという感じかもしれません。 ただ自分としては初の体験であったため、…

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

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

AWSにおけるデータ基盤の作り方

データ活用によって新たな価値を提供したいというニーズは日に日に高まっているように思います。 そんな昨今、データ基盤の構築に関わっています。 今回はAWSで実現するデータ基盤について、いくつかの例を交えて紹介します。 AWSではデータ基盤向けのサービ…

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お…

EC2の起動・停止をスケジュール実行できるAWS Instance Schedulerが便利

AWS Instance Schedulerを知るまでは、LambdaとCloudWatch Eventを使用してEC2を起動・停止する処理を作成していました。 より高機能に起動・停止処理を行えるのがAWS Instance Schedulerです。 docs.aws.amazon.com EC2の起動時間を抑えるとコスト削減の効…

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 発表内容を振り返りつつ、補足も交えてここで紹介できればと思います。 発表資料は下記で…

S3で知らなかった色々なこと

S3を利用していて色々知らないことがあるなと思ったので記録しておきます。 アクセス権限 パブリックアクセスブロックでバケット及びオブジェクトに対するパブリックアクセスを有効にする操作を無効化できます。 Amazon S3 パブリックアクセスブロックの使用…

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

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

Athenaを使ってALBのアクセスログからリクエスト毎のパフォーマンスを計測する

Athenaを使うとS3上のデータを分析することが可能です。 今回はS3上に出力されるALBのアクセスログをAthenaを使って分析してみました。 パフォーマンスを計測する用途です。 ALBのアクセスログは結構なデータ量になることが想定されるので、パーティションを…

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…

DynamoDBにおけるCRUD操作の色々なやり方をまとめた

DynamoDBをよく触るようになったもののDynamoDBヘのCRUD操作は色々なやり方があって、 毎度ググっては実行してというのを繰り返してました。 そのやり方をまとめていちいちググらないようにしたいと思います。 この記事について 色々なやり方があるDynamoDB…

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の設定…