Cloudflare Zero Trustを使用してQnapのNASに外部からアクセスできるようにします。 安全にアクセスするためにGoogleアカウントによる認証を挟むようにします。 このやり方には独自ドメインが必要になるため、所持していない場合はTailscaleを使う方法がオス…
GoLandやIntelliJ IDEAなどJetBrainsのIDEで大きなファイルがインデックスされないときの解決方法を紹介します。 TL;DR Help > Edit Custome Properties... をクリック 開かれたファイルに idea.max.intellisense.filesize=10000000 と追記する 発生した問題…
GitHub ActionsがOIDC (OpenID Connect)に対応したと公式から発表があったため、GCPへのアクセスを行ってみました。 github.blog GCPのWebコンソールやgcloudコマンドを使ったやり方は公式ドキュメントで紹介されているため、ここではTerraformを使ったやり…
client-goで単体のリソースを作成する場合は以下のように明示的に対象のclientを作成することで行うことができます。 func main() { ... deployment := &appsv1.Deployment{} deploymentsClient := clientset.AppsV1().Deployments(apiv1.NamespaceDefault) …
KubernetesのJobは完了しても登録したJobは削除されず kubectl get job などを実行したときの視認性がよくありません。 これを解消するための設定として .spec.ttlSecondsAfterFinished がありますが、長いことalpha版でGKEでは使用することができません。 …
MacのDocker周りの遅さに嫌気が差したのでUbuntuに移行してみることにしました。 自分用のメモも兼ねて構築の流れを残しておきます。 WSL2にしなかった理由 最初はWSL2で構築する予定でしたが、検証していると問題が発生したため辞めました。 中でも致命的だ…
asyncomplete-around.vimとは asyncomplete-around.vimは prabirshrestha/asyncomplete.vimのSourceプラグインです。 github.com 現在のカーソル位置を中心として上下20行(デフォルト値)に存在する単語を補完対象として表示します。 asyncomplete.vimは補…
GitHubのPull Requestのコメントから任意のGitHub Actionsを実行する必要があり、やり方に少々癖があったので紹介します。 issue_comment ドキュメントを眺めているとPull Requestに関連するイベントはいくつかありますが、Pull Requestのコメントをトリガー…
長期休暇を利用してLFSをやってみたので振り返ってみたいと思います。 きっかけ 日頃から業務でLinuxを使ってサービスを運用していますが、最近はクラウドやコンテナなどを使うことがほとんどでLinuxのほんの一部だけを知っていれば運用できています。 しか…
TerraformのStateをチームで管理するときに、複数の環境からplanやapplyを実行できるようにするためにS3などのクラウドのストレージをバックエンドにすることが多いと思います。 通常のストレージをバックエンドにしていると、複数の環境から同時にapplyが実…
Goにはプロファイラとして標準パッケージにpprofが搭載されています。 pprofの使い方としてはすでに多数の優良記事が存在するため、ここでは扱いません。 今回はpprofをk8s上で動くサーバーに対して実行し、結果をWebUIで表示する必要があったのでそのやり方…
Magiskでroot化するとOTAアップデートが無効化されるため、セキュリティパッチなどのOSのアップデートを行うことができなくなります。 しかし、適切な手順を踏むことでroot化を維持したままOTAアップデートを行うことができます。 検証環境 Pixel3 Android 1…
民泊系と呼ばれるSIMを使っている場合、制限がかかっていてテザリングをすることができません。 しかしMagiskでroot化していればこの制限を解除でき、民泊系の数百GB/月という容量を使ってテザリングをすることができます。 前提 Pixel3 (XL) Android 10 必…
前回、IDEをやめてvim-lspと独自コマンドに移行したことを紹介しましたが、あれだけだと少し問題があります。 akaimo.hatenablog.jp PCを買い替えたときやクリーンインストールをしたときなどに同じ環境を簡単に構築することができないともう一度構築するこ…
先日メインで使っているマシンを修理にださなければいけなくなり、1週間ほど古いスペックの低いマシンを使うことになりました。 その環境では複数個のIDEを起動しておくのが難しく困っていたところLanguage Server Protocolの存在を思い出し使ってみること…
Helmを使って公開されているChartをインストール方法はたくさん紹介されていますが、独自のChartを作成する方法が簡潔に紹介されている記事が無かったので紹介します。 Helm自体の紹介やインストール方法などは省略します。 環境 Helm 3.0.0 Kubernetes 1.15…
環境 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はRPCの1つでProtocol Buffersでシリアライズ化することで高速な通信を実現させています。そのため、通常のREST-likeなWEB APIのデバッグでつかうcurlやPostmanのようなGUIツールでデバッグすることができません。 そこで今回はgRPCで開発するときに役…
Digdagでスケジュール実行の設定をしているワークフローを一時停止したあとに停止を解除した場合は、停止していた期間に実行されるはずだったセッションを実行するBackfillという機能があります。 GUIでPAUSEした後にRESUMEしたときや、CLIでのenable/disabl…
Go Modulesに対応させたプロジェクトをDocker内でビルドして実行するとします。 単純にDockerfileを書いてしまうとソースコードに変更が入るたびにModulesのダウンロードが走ってしまい、とても時間がかかってしまいます。 そこでDockerのイメージレイヤのキ…
KubernetesのPodでDockerコンテナを実行する方法を紹介します。 Dockerコンテナ内でコンテナを起動する方法のことをDinD (Docker inside Docker)などと言われていますが、同じことをKubernetesのPodで実行するには少し工夫する必要があります。 アプローチと…
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は標準出力に出力したログなどはlogsコマンドで確認することができますが、Dockerで動かすアプリケーションがファイルにログを出力している場合はlogsコマンドで確認することができません。 このような場合は、CMDでtail -fすることが多いと思います。…
自作したiOSのライブラリをCocoaPodsとCarthageで公開する記事はたくさんありますが、新バージョンの公開に関する記事はほとんど無く毎回困るのでまとめます。 Carthage Carthageで公開しているライブラリの新バージョンをリリースするのは簡単で、GitHubで…
Kubernetesを開発環境として使用しプロダクションと同じような環境で開発すると、複数のアプリケーションが可動することになると思います。 そうするとログも複数の場所に出力されることになります。 複数個のターミナルを立ち上げ1つずつログを表示しても…
GCPにあるプリエンプティブ インスタンスをGKEでうまいこと使えないか、試行錯誤した結果をまとめます。 プリエンプティブ インスタンスとは 一言で言ってしまえば、AWSにあるスポットインスタンスのGCP版です。 公式ドキュメントにはこのように書いてありま…
GKEからCloud SQLに接続するやり方としてCloud SQL Proxyを使う方法が推奨されています。 公式ドキュメントで解説されているやり方は、Cloud SQLにアクセスしたいコンテナが入っているPodにサイドカーとしてProxyを入れる方法です。 公式の例だと、wordpress…
Istioは0.7まではIstio IngressというIngress Controllerの一種を使用してトラフィックを受け入れていましたが、0.8以降はGatewayを使うようになりました。 Istio Ingressでは他のIngressと同様のやり方でTLS証明書を扱えたのでcert-managerと組み合わせるの…
GCPでKubernetesを使用する場合、AWSと違いTLS証明書を発行してくれるサービスが存在しません。 有料の証明書を購入すれば良い話ではありますが、機能は同じなので無料でいきたいところです。 そこで、今回はLet's Encryptを利用したいと思います。 しかし、…
Kubernetesの状態が知りたいなと思い調べたところ、公式のWebUIであるdashboardをみつけました。 README通りにやれば簡単にインストールできますが、proxy経由でしか表示させる方法が書いてなく不便だったので、ingressを使用して表示させる方法を書きます。…