kawabatas技術ブログ

試してみたことを書いていきます

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

Firebase で公開したサイトに IP でアクセス制限をかける

概要 Firebase Hosting で公開した一部のページに特定のIPからのみアクセス可能にしたいという要望を実現したときのメモ。 実装 IP制限をかけたいページへアクセスがあると、Cloud functions の関数を実行し、動的にhtmlを生成して返す。 ほぼほぼこちらの記…

Container Registry の image を削除する

gcp

概要 Google Container Registry の appengine の image を一気に削除するスクリプトを残しておく。 #!/bin/bash set -e # 例 us.gcr.io HOSTNAME= PROJECT_ID= image_lists=`gcloud container images list --repository=$HOSTNAME/$PROJECT_ID/appengine | …

gem activejob-google_cloud_tasks を作成した

概要 Google Cloud Tasks の ActiveJob 用のアダプタの GEM を作成した。 https://rubygems.org/gems/activejob-google_cloud_tasks 使い方と、初めての gem 公開にあたっての反省と、更新の手順をメモしておく。 使い方 前提条件 Creating App Engine Queue…

ruby で複数の CSV で使われる ID を置換する

概要 Voice.csv の ID をリネームし、VoiceId カラムを持つ他の複数の CSV もリネームに対応するという機会があったのでメモ。 require 'csv' class Voice def self.rename(str_id) case id = str_id.to_i when 1..988 return 0 + id - 0 when 989..1196 ret…

Unity で複数の Firebase プロジェクトを使用する

概要 Unity で Firebase プロジェクトを開発環境と本番環境を分けました。 その際に行ったことのメモです。 ドキュメントを読んで こちらが「複数のプロジェクトを構成する」ドキュメントになります。 iOS アプリケーションで複数の環境をサポートするでは、…

Unity iOS ビルドし、iPhone実機のログをみる

概要 Unity で iOS ビルドし、iPhone 実機で実行し、Unity のログを見るときのメモ。 Unity ビルド Unity で File > Build Settings を開き、 Platform を iOS Run in Xcode as を Debug Development Build にチェック Script Debugging にチェック Build を…

Ubuntu 16.04 LTS に rbenv を root でインストールする

概要 GCE の起動スクリプトで rbenv をインストールしたときのメモ #!/bin/bash set -e RUBY_VERSION="2.5.1" apt-get update apt-get install -y git build-essential libssl-dev libreadline-dev zlib1g-dev libmysqlclient-dev nodejs mysql-client git c…

Railsのコード内で引数ありのRakeタスクを実行する

bin/rails sample:task[a,b] 引数 a, b を扱う sample:task を実行する場合、 require 'rake' Rails.application.load_tasks Rake::Task['sample:task'].execute(Rake::TaskArguments.new([:a, :b], [a, b]))

Mac のローカル環境で開発中の Rails で mysql のバージョンアップでエラーが発生した

概要 Homebrew の mysql をアップデート(5.7 -> 8.0)したところ、Mac のローカル環境で開発中の Rails でエラーが発生したのでメモです 開発環境について ローカルの rbenv, bundler を利用 mysql などのミドルウェアは docker-compose で立ち上げたものを利…

Google Cloud Next in Tokyo '18 参加レポート

gcp

9/19,20 の2日間にわたって開催された Google Cloud Next in Tokyo '18 に参加してきたので、 講聴したセッションの内容や感想、全体を通じて感じたことを報告します。 共有しようと思ったこと AutoML を利用すれば、コードを書かずに、カスタムモデルを作れ…

Rails + AppEngine を試してみる

概要 現在、k8s 上に構築している rails アプリを app engine に移行することを考え、app engine を試してみたので、そのメモ。 環境ごとに GCP プロジェクトを分けるか ドキュメント 重要: 各 Cloud Platform プロジェクトには、1 つの App Engine アプリケ…

Rails のマイグレーションファイルをまとめる

概要 jalkoby/squasher を使って、マイグレーションファイルをまとめたのでメモ。 db/structure.sql でスキーマ情報を管理している。 インストール gem 'squasher' bin/squasher を作成 $ bundle binstub squasher 使う application.rb の下記をコメントアウ…

Tensorflow で学習モデルを自作してみる

ML

概要 先日、BigQuery ML が発表されたり、ML がますます進展している。 少しずつ学んでいきたいと思い、とりあえず、学習モデルを自作することをしてみた。 だいぶ前に、Tensorflow の手書き文字のチュートリアルをやったことがあるが、機械学習について一切…

GKE 上で Locust を試す

gke

概要 Locust。Python 製の負荷試験ツール。 シナリオが Python で書けるので、複雑なシナリオも作れそう。 Helm があるが、tasks の中を書き換える必要があり、fork して tasks を書き換え、helm chart を公開するのは面倒なので、Google公式のチュートリア…

Mac から GCE 上の JMeter サーバークラスタを制御する

gcp

概要 GCE 上に JMeter サーバークラスタを作成し、ローカルの Mac 上の JMeter クライアントから制御し、結果を取得してみたのでメモ。 GoogleのJMeterのドキュメント(古い...) JMeter Remote Testing こんな感じのイメージ 手順 とりあえず、jmeter server …

Terraform を travis ci で実行する

概要 terraform の実行を travis ci 経由で行うようにしたので、メモしておきます。 メルカリが開発しているOSSの tfnotify を使い、master ブランチへの PR 作成時、terraform plan を実行し、結果をPRにコメント マージ時、terraform apply を実行 するよ…

「日本人の知らない会議の鉄則」を読んで

概要 日本人の知らない会議の鉄則を読んだ。 とても読みやすく、内容もよかったので、メモしておこうと思う。 「ゴール」の鉄則 会議の種類は「決める」「生み出す」「伝える」「つながる」の4つ 意思決定「決める」 客観的なデータや事実関係に基づいて、明…

Rails 5.1.6 を 5.2.1 にアップデート

概要 Rails 5.1.6 のアプリを 5.2.1 にアップデートしたのでメモ。 手順 Rails アップグレードガイド テストでしっかり保護しておいて、 gem の rails のバージョンを上げて、 bin/rails app:updateを実行する。 そして、config/initializers/new_framework_…

Terraform で Cloud CDN を設定する

概要 Cloud Storage バケットを使用して Cloud CDN を利用する設定を Terraform で設定してみたのでメモ。 CDN は lets encrypt で https 対応する。 GCP のドキュメントはこのあたり。 https://cloud.google.com/compute/docs/load-balancing/http/adding-a…

GCE 上に VPN サーバーを立てる

gcp

概要 GCE インスタンスに VPN サーバーを立ててみたのでメモ。 そして、iPhone にVPNを設定してみた。 背景 iPhone で wifi 回線ではプロキシを経由できるが、4G 回線ではプロキシを経由する方法を見つけられなかった。 そして iPhone は VPNのプロトコルに…

GCE 上に プロキシサーバーを立てる

gcp

概要 GCE インスタンスに Squid プロキシサーバーを立ててみたのでメモ。 そして、iPhone にプロキシを挟んでみた。 OS は ubuntu。 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu …

GKE で NGINX Ingress Controller を使ってみる

NGINX Ingress Controller とは 多くのWebサーバーの設定ファイルは似ているので、必要な部分だけカスタムして簡単に構築しようというもの。 https://github.com/kubernetes/ingress-nginx 今回は GKE で NGINX Ingress Controller を使い、リダイレクトサー…

しっかりしたリダイレクトを超簡単に実現する

概要 サイト移行時など、旧URL -> 新URL へリダイレクトする際に、最も簡単に実現する方法を調べていた。 結論、Firebase Hosting で超簡単に、コードも書かず実現できることがわかった。 要件 301リダイレクト。SEOを引き継ぎたいため SSL対応し、証明書の…

Terraform で GCP のリソースを管理する(GKE編)

前回の続きで、GKEのコードを載せる。 modules/gke_cluster/main.tf resource "google_container_cluster" "cluster" { name = "${lookup(var.cluster, "name")}" region = "${lookup(var.cluster, "region")}" additional_zones = [ "${lookup(var.cluster,…

Terraform で GCP のリソースを管理する

Terraform で GCP のリソースを管理する 概要 GKE, Cloud SQL, Cloud Storage, Cloud Memorystore など、gcloud コマンドで構築していたが、 今後、本番、負荷試験、開発環境を増やす、といった際に、すぐに構築できるように Terraform の導入を検討してみた…

Spinnaker を導入した

概要 GKE のアプリケーションのデプロイに Spinnaker を導入したので、その手順をまとめておく。 halyard のインストール Try out Halyard on GKE に従い、GCE 上に halyard VM を作り、Kubernetes クラスタに Spinnaker をセットアップしていく。 Try out H…

Kustomize 試してみる

概要 Kubernetes の設定ファイルをカスタムできるというので試してみる。 これで staging や production で共通の項目を base として用意し、異なる項目のみ設定できるっぽい。 https://kubernetes.io/blog/2018/05/29/introducing-kustomize-template-free-…

Rails の Dockerfile の自分なりのベストプラクティス

概要 この度、Dockerfile, docker-compose.yml を見直してみました。 その際に調べたことのメモです。 試す、見直すこと Dockerfile 見直し ruby alpine イメージを試す bundle config 周りの見直し docker-compose で bundle を volume するか見直し Docker…

Kubernetes の ConfigMap と Secret の更新を試す

概要 ConfigMap や Secret の更新が動的に反映されるのか検証します。 ボリュームマウントで利用する場合と、それ以外で利用する場合とで変わるのか。 手順 事前準備 検証用の Namespace を作成 $ kubectl create namespace test-namespace ConfigMap を作成…

【GKE】Kubernetes Service Catalog を試してみた

概要 Kubernetes Service Catalog と GCP Service Broker を使えば、CloudSQL や CloudStorage などをセットアップできるらしいので、試してみた。 用語説明 ドキュメント Kubernetes Service Catalog とは Kubernetes クラスタで動作するアプリケーションが…