なになれ

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

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

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 以下に試した内容を紹介しま…

AnsibleとVagrantでKubernetesをセットアップする

以下を試してみた内容です。 kubernetes.io 2019年9月25日現在、この内容を試すとうまく動作しない部分があるので、直しつつ進めました。 なお、ローカルのOSはmacOS 10.14.6になります。 以下、Stepごとに修正点を補記します。 Step 1: Creating a Vagrantf…

ISUCONに初参加しました

ISUCON9の予選が9/7,8の日程で開催されました。 会社の同僚と一緒にチームを組んで、初めてISUCONに参加しました。 isucon.net 2人チームでチーム名は「isuconなにもわからない」です。仕事ではNode.jsを使っているのでNode.jsで挑戦しました。 利用言語の比…

AWSでKubernetes環境を構築する際のIngressについて

Ingressはアプリケーションレイヤのロードバランサに当たるリソースでSSL化などが可能になります。 Ingressの実装は様々なIngress Controllerに依存します。 例えば、Nginxを利用したNginx Ingress ControllerやGKEに含まれているGKE Ingress Controllerなど…

AngularにおけるLazyLoadingの実現方法

前提条件 Angular8 LazyLoadingとは 通常のSingle Page ApplicationだとJavaScriptファイルなどのアセットを初回ロード時に全て読み込みます。 初回ロード時の読み込み時間を軽減するために、モジュール毎に分割して必要な時に読み込むのがLazyLoadingと呼ば…

AWS IAMポリシーの作成と確認方法

複雑なIAMポリシーの作成と確認を行った時にそれなりに苦労したので情報を整理したいと思います。 概要 IAMポリシーとはAWSリソースのアクセス管理を定義するものです。 IAMポリシーを定義する際に実際にAWSリソースのアクセス管理が適切にできているか確認…

DynamoDBのスキーマ設計について学んだこと

DynamoDBのスキーマ設計について公式ドキュメントのベストプラクティスなどを見ながら学んだ記録です。 スキーマ設計の考え方 DynamoDBのスキーマ設計はRDBとは異なり、以下の考え方を採用します。 テーブルを分けずに1つのテーブルを使う PartitionKeyとSo…

Jestを使ってJavaScriptで快適にテストする

Jestとは JavaScriptのテストフレームワークです。 フロントエンド向けのテストフレームワークで注目されました。 ただJest自体はフロントエンドに限定されずに有用なテストフレームワークです。 jestjs.io Jestのメリット テストを書き始めるまでが簡単 Mat…

SIerとWeb系の差分

現職で働き始めて1ヶ月ほど経過して色々わかってきたので前職との差分についてまとめたいと思います。 前提事項 ここでのSIer(前職)とは大企業に分類される情報サービス業の会社です。受託開発やR&Dなどの業務を行っていました。 大企業 - Wikipedia ここで…

GitHubを雰囲気で使っている(pull request)

GitHubでチーム開発を実施するようになり、pull requestの時には色々気をつけることがあるなと思い、整理したいと思います。 要約 レビューイ時 pull requestの内容を分かりやすく レビュアーからコードレビューを受ける checksでの設定項目をクリアする mas…

GitHubを雰囲気で使っている(remote URL)

GitHubでcloneするときに公式的にはHTTPSが推奨なのを知りませんでした。 help.github.com 認証が毎回必要なのでは?と思いましたが、保存できるので1回済ませたら以降は不要なようです。 help.github.com HTTPSならプロキシ環境下でも問題ないのが推奨ポイ…