Skip to content

Instantly share code, notes, and snippets.

Avatar
🎐
Humility, Kindness, Bonds

Yuya Takeyama yuya-takeyama

🎐
Humility, Kindness, Bonds
View GitHub Profile
@yuya-takeyama
yuya-takeyama / mirror_kubernetes_images.sh
Last active May 26, 2020
Mirror images used in Kubernetes cluster into ECR
View mirror_kubernetes_images.sh
#!/bin/bash
set -eu
set -o pipefail
aws_profile="$1"
aws_region="$2"
function mirror-ecr-images() {
set -e
@yuya-takeyama
yuya-takeyama / README.md
Last active Jun 12, 2020
DevOps な組織で Monorepo から Argo CD を使って Kubernetes にデプロイする仕組みの草案
View README.md

概要

image

前提条件

  • アプリケーションは Mono Repo 上にサブディレクトリとして数十ほど存在
  • 各アプリケーションは独立してリリース可能とする
    • そのためにリリースブランチ等には */release といった形でそのアプリケーションの名前を持つ
  • 開発チームは self-contained な DevOps チームへの変化を目指している
View README.md

モチベーション

  • とりあえずは gRPC のロードバランシングさえできればそれでよし
    • 現状 gRPC は新規サービス含めトラフィックの少ないサービスでしか使われてない
    • とはいえそれらのサービスの成長だったり、トラフィックの大きいサービスで使うときに当然困ることになるので
  • Circuit Breaker 的な仕組みが社内で運用できていないので、その辺にも使っていけたらと思ってる (そのうち検証する)
    • 現状は @ujihisa さんが作った Dark Launch で手動で落とすとかしている
    • そもそも現状は partial outage 可能なマイクロサービス化された部分が限定的だし、特に問題も起きていないのでそれがないことで日々障害が起きている!なんてこともない
  • ゆくゆくは AWS App Mesh なり Istio なりでサービスメッシュしたいと思っているが、いきなりそこに行くのはリスクが大きいのでまずは Envoy 単体に慣れたい
View ec2-ip2id
#!/bin/bash
ip_map=$(jq --raw-input . | jq --slurp . | jq 'to_entries | map({key: .value, value: true}) | from_entries' --compact-output)
aws --profile aya ec2 describe-instances | \
jq -r --argjson ipMap "${ip_map}" \
'.Reservations[].Instances[] | select(.PrivateIpAddress | in($ipMap)) | .InstanceId'
@yuya-takeyama
yuya-takeyama / README.md
Last active Jun 9, 2018
oh-my-zsh theme with kubernets current context and namespace
View README.md

Screenshot

image

@yuya-takeyama
yuya-takeyama / split-k8s-yaml
Created May 23, 2018
Split List object definition YAML into separate files
View split-k8s-yaml
#!/usr/bin/env ruby
require 'yaml'
def kind_to_sub_extension(kind)
case kind
when 'ConfigMap'
'cm'
when 'DaemonSet'
'ds'
@yuya-takeyama
yuya-takeyama / peco-kubectx
Last active Feb 28, 2019
Select Kubernetes context with peco
View peco-kubectx
#!/bin/bash
PECO_CMD="peco"
KUBECTL_CMD="kubectl"
if ! hash "${PECO_CMD}" 2> /dev/null; then
>&2 echo "error: ${PECO_CMD} is not installed"
>&2 echo "see https://github.com/peco/peco"
exit 1
fi
@yuya-takeyama
yuya-takeyama / handleError.ts
Last active Oct 23, 2020
Handle Response Error of JSON API in TypeScript (using async/await)
View handleError.ts
import fetch, { Response } from 'node-fetch';
interface ResponseWithParsedJson extends Response {
parsedJson?: any;
}
const toResponseWithParsedJson = (
res: Response,
json: any,
): ResponseWithParsedJson => {
@yuya-takeyama
yuya-takeyama / handleError.ts
Last active May 26, 2020
Handle Response Error of JSON API in TypeScript
View handleError.ts
import fetch, { Response } from 'node-fetch';
interface ResponseWithParsedJson extends Response {
parsedJson?: any;
}
const toResponseWithParsedJson = (
res: Response,
json: any,
): ResponseWithParsedJson => {
@yuya-takeyama
yuya-takeyama / README.md
Last active Jan 1, 2018
エケペディアの欅坂46メンバー一覧ページから誕生日データを抽出する
View README.md
You can’t perform that action at this time.