fastlaneのpilotでThis request is forbidden for security reasons - The API key in use does not allow this requestとエラーになったときの対処法

環境 fastlane 2.131.0 エラー内容 Spaceship::UnexpectedResponse: [!] This request is forbidden for security reasons - The API key in use does not allow this request /Users/travis/build/xxx/xxx/vendor/bundle/ruby/2.4.0/gems/fastlane-2.131.0/…

gRPCサーバーのデバッグとServer Reflection

gRPCはRPCの1つでProtocol Buffersでシリアライズ化することで高速な通信を実現させています。そのため、通常のREST-likeなWEB APIのデバッグでつかうcurlやPostmanのようなGUIツールでデバッグすることができません。 そこで今回はgRPCで開発するときに役…

Digdagのbackfillを無効化する

Digdagでスケジュール実行の設定をしているワークフローを一時停止したあとに停止を解除した場合は、停止していた期間に実行されるはずだったセッションを実行するBackfillという機能があります。 GUIでPAUSEした後にRESUMEしたときや、CLIでのenable/disabl…

Go ModulesなプロジェクトのDockerビルドを高速化する

Go Modulesに対応させたプロジェクトをDocker内でビルドして実行するとします。 単純にDockerfileを書いてしまうとソースコードに変更が入るたびにModulesのダウンロードが走ってしまい、とても時間がかかってしまいます。 そこでDockerのイメージレイヤのキ…

KubernetesのPodでDockerコンテナを実行する

KubernetesのPodでDockerコンテナを実行する方法を紹介します。 Dockerコンテナ内でコンテナを起動する方法のことをDinD (Docker inside Docker)などと言われていますが、同じことをKubernetesのPodで実行するには少し工夫する必要があります。 アプローチと…

QtでMacアプリを作ってみる

QtでMacのアプリをビルドし、.appの形式として書き出します。 環境 MacOS Mojave Xcode 10.2.1 Qt 5.12.3 事前準備 使用するXcodeのCommand Line Toolsを設定します。 $ sudo xcode-select -s /Applications/Xcode10.2.1.app Command Line Toolsが正しく設定…

DockerのCMDでログファイルをtailする

Dockerは標準出力に出力したログなどはlogsコマンドで確認することができますが、Dockerで動かすアプリケーションがファイルにログを出力している場合はlogsコマンドで確認することができません。 このような場合は、CMDでtail -fすることが多いと思います。…

自作したiOSライブラリの更新手順

iOS

自作したiOSのライブラリをCocoaPodsとCarthageで公開する記事はたくさんありますが、新バージョンの公開に関する記事はほとんど無く毎回困るのでまとめます。 Carthage Carthageで公開しているライブラリの新バージョンをリリースするのは簡単で、GitHubで…

WHITEPLUS Advent Calendar 2018に投稿しました

今年もAdvent Calendarをやっていて、2記事投稿しました。 libpcapでVPNのアクセスを可視化する blog.wh-plus.co.jp MySQLをRDSからCloud SQLに移行するときに考えたこと blog.wh-plus.co.jp

複数のPodのログをまとめて表示する

Kubernetesを開発環境として使用しプロダクションと同じような環境で開発すると、複数のアプリケーションが可動することになると思います。 そうするとログも複数の場所に出力されることになります。 複数個のターミナルを立ち上げ1つずつログを表示しても…

GKEでプリエンプティブインスタンスを使いこなす

GCPにあるプリエンプティブ インスタンスをGKEでうまいこと使えないか、試行錯誤した結果をまとめます。 プリエンプティブ インスタンスとは 一言で言ってしまえば、AWSにあるスポットインスタンスのGCP版です。 公式ドキュメントにはこのように書いてありま…

GKEからCloud SQLに接続する

GKEからCloud SQLに接続するやり方としてCloud SQL Proxyを使う方法が推奨されています。 公式ドキュメントで解説されているやり方は、Cloud SQLにアクセスしたいコンテナが入っているPodにサイドカーとしてProxyを入れる方法です。 公式の例だと、wordpress…

Istioで使うTLS証明書をcert-managerで作成する

Istioは0.7まではIstio IngressというIngress Controllerの一種を使用してトラフィックを受け入れていましたが、0.8以降はGatewayを使うようになりました。 Istio Ingressでは他のIngressと同様のやり方でTLS証明書を扱えたのでcert-managerと組み合わせるの…

route53で管理するドメインの証明書をcert-managerで管理しGKEで使用する

GCPでKubernetesを使用する場合、AWSと違いTLS証明書を発行してくれるサービスが存在しません。 有料の証明書を購入すれば良い話ではありますが、機能は同じなので無料でいきたいところです。 そこで、今回はLet's Encryptを利用したいと思います。 しかし、…

Kubernetesのdashboardをingressから表示する

Kubernetesの状態が知りたいなと思い調べたところ、公式のWebUIであるdashboardをみつけました。 README通りにやれば簡単にインストールできますが、proxy経由でしか表示させる方法が書いてなく不便だったので、ingressを使用して表示させる方法を書きます。…

GKEにPrometheusを導入する

GKEにはPrometheusを導入するドキュメントが無いんですよね・・・ IstioやSpinnakerのドキュメントはあるのに、もっと需要がありそうなPrometheusのドキュメントが無いのはつらいです。 そんなわけで、自分が導入したときの手順を記録しておきます。 環境 GK…

GKEでPersitentVolumeを使う

KubernetesでPersitentVolumeを使う方法はドキュメントに書いてありますが、使う環境によって永続ディスクが異なるためにスムーズにいかないことがあります。 そのため、今回はGKEでPersitentVolumeを使う方法を紹介します。 環境 GKE 1.9.7-gke.0 永続ディ…

KubernetesでBlue-Green Deploymentしてみる

今回はサービスを本番で運用していくときに欲しくなるBlue-Green DeploymentをKubernetesでやってみます。 TL;DR Serviceのselectorを更新するやり方だと10分程度BlueとGreenがまざる Istioを使用すれば瞬時に100%のトラフィックを切り分けられるのでBlue-Gr…

Kubernetesに負荷をかけオートスケールを観察する

本番環境でKubernetesを使うためには、Kubernetesがどのように動作するか把握していないと安心して運用することができません。 まずはサービスを運用する上で重要になる、高負荷時の動きを確認してみたいと思います。 KubernetesにはHPAとCluster Autoscaler…

Webpackでビルドするときにflowtypeで型をチェックする

flowを導入して型のチェックがされるようになっても、開発者がエディタで設定していなかったり、 エディタによっては開いていないソースはチェックの対象になっていなかったりします。 これではせっかく導入したflowが活かせません。 そこでWebpackでビルド…

QNAPにTwonky Serverをインストールする

QNAPが公式に提供しているDLNAサーバーはいろいろと貧弱なので、評判の高いTwonky Serverを使えるようにします。 環境 QNAP: TS-431P OS: QTS 4.3.4 Twonky Serverのダウンロード まずは以下のリンクからダウンロードページに移動します。 http://download.t…

JUnit5をmainから実行する

こんにちは。akaimoです。 今回はJUnit5をmain関数内で使用する方法です。 環境 Java9 JUnit5.1.0-M1 Kotlin1.2 ソース これでmainからJUnitを動かせます。詳しい解説は後ほど。 import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder i…

react-reduxにflowtypeを導入しPropsに型を付ける

flowtypeを導入したとき、reactとreduxをつなぐ部分の情報が少なかったのでまとめます。 flowtypeの導入前 比較として導入前のソースを載せておきます。 import React, {PropTypes, Component} from 'react' import {connect} from 'react-redux' import * a…

Travis CIでfastlaneを使用する

こんにちは。akaimoです。 Travis CIを利用しているiOSプロジェクトにfastlaneを導入して、xcodebuildを直接実行する環境から開放されたので、 備忘録としてやったことを残しておきます。 github.com 前提 CI上でfastlaneを使用 複数人で開発 fastlaneのイン…

ScrollViewとStackViewを組み合わせる

iOS

akaimoです。 そろそろiOS8のサポートが終わってきたと思うので、TableViewの変わりにStackViewを使う方法を書きます。 使いにくいScrollView スクロールが必要な複雑な画面の場合、同じ要素が1つも存在しないのにTableViewを使うことがありました。 ScrollV…

VimにRustの環境を構築する

RustのIntroductionをやってみる途中で、補完とかが効かないとツライなと思ったので VimにRustの環境を作ってみた。 前提 OSはMacです(たぶんLinuxでも動くと思います) rustupでRustをインストールしていることを前提とします。 できるようになること コー…

mackerelでhubotを監視する

raspberry piでhubotを運用していると、いつの間にかhubotが突然死していることがあります。 botが動いてくれないと色々と困るので、先日導入したmackerelで監視して、死亡したらslackにアラートが飛ぶようにします。 観測用のスクリプトを作成 mackerelでカ…

Raspberry PI 2にLet's Encryptとnginxでhttps環境を構築

Let's Encryptを使ってhttps環境を構築してみたいと思います。 最新のnginxをインストール せっかくなので、最新のnginxをインストールしてhttp2にも対応させたいと思います。 基本的には以下の記事を見ればできます。 qiita.com 私の環境では、nginxの設定…

Raspberry PI 2にMackerelを導入して監視してみる

サーバーを監視するツールにMackerelというものがあるらしく、 勉強がてら家で持て余してるRaspberry PI 2に導入してみます。 今回はインストールして、最低限の監視ができるところまでやります。 インストール Raspberry PI 2で動かすためにはARM版のバイナ…

さくらVPSにdocker-composeでテスト環境を作る

OSは標準のCentOS6.7を使いました。 毎度おきまりの自分用メモに近くなっています。 OSのインストール 契約しただけではOSすら入っていないのでインストールします。 公式のGUIをぽちぽちしていくだけです。 セキュリティの初期設定 http://qiita.com/yu_010…