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

Spring Boot 2.6.0についてメモ

はじめに もうしばらく前ですがSpring Bootが11月9日に出てますね。 ちょっと仕事がバタバタしててモチベーションが出ず更新ができていなかったのですがまたゆっくりでも再開していきたいと思います。 このブログではすべての変更点を網羅するわけでは無く、…

JavaでUnix Domain Socketを使ってみる(Dockerのコンテナ一覧を取得する)

はじめに Java 16でUnix Domain Socketのサポートが入っています(JEP 380)。前から興味はありつつもかなか触れてなかったので今回少し触ってみようかと思います。 お題として、以下の2つをやってみようと思います。 Echoサーバとそのクライアントを書く Java…

Echoのロガーを使う

Go

はじめに GoのフレームワークはEchoを使うことが最近は多いのですが、そのログ周りの機能を試してみようかと思います。 Echoのロガー Echoにはロガーに関するサポートが以下の2つあります。 Logger Middleware : アクセスログを出力するミドルウェア Logger …

SkaffoldのPipeline Stagesについてまとめる

はじめに 自分が所属する組織ではSkaffoldを開発ワークフローのツールとして導入しているのですが、しっかり使っていく上で動作の基本をきちんと抑えておこうかと。 今まででは、Javaのアプリをデプロイしてデバッグしてみたり、Helmを使って環境変数の切り…

Docker Buildxを使う

はじめに DokcerにはBuildxというCLIプラグインが存在します。 いままでなんとなく使ってただけなのでちょっと調べてまとめてみようかと思います。 Docker Buildxとは 前述していますがDocker のCLIプラグインです。 これはBuildxの機能を拡張したもので以下…

Springのアノテーション付きコントローラーのメソッドを明示的にハンドラーとして登録する

はじめに Spring のWebFluxのドキュメント眺めていたら明示的なハンドラーの登録という項目が合ってなんとなく気になったので動かしてみたいと思います。 あとは、Java 16から入ってるRecordsクラスを試してみたい気持ちもあり。 ちなみに明示的なハンドラー…

pprofでGoアプリのプロファイル情報を取得する

はじめに Javaでプロファイル情報を取得して分析するための方法は、いくつか思い当たるものはあるのですがGoだとやり方全くわからなかったので少しまとめておこうかと思いました。 Go言語は標準ライブラリとして、runtime/pprofパッケージやnet/http/pprofパ…

Docker Notaryで署名したイメージをDockerHubで公開する

はじめに ソフトウェアをインストールするさいにHashの検証や署名の検証などで、ダウンロードしてきたバイナリの信頼性を検証するみたいなのはよくやると思います。Dockerのイメージに対してこれがどのように解決されるかというところに理解が浅かったので、…

SkaffoldとHelmを使い環境の設定を切り替えてk8sリソースをデプロイする

はじめに 以前のブログでSkaffoldのローカルでの開発機能を試しました。もちろんSkaffoldはローカルでの開発をサポートするツールにとどまらず、テストやビルド、デプロイなどもサポートしています。 デプロイをおこない場合は環境ごとの変数をうまく切り替…

jcmdで何ができるかをまとめる

はじめに jcmdは起動しているJavaプロセスのGCの統計情報をとったり、JFR起動したり諸々のことを行なうのによく使われるツールかと思います。 今まで必要になったコマンドを調べて使うぐらいしかしたことなかったのですが、実際どのくらいのことができるのか…

KtorとKoinの組み合わでWebAPIを作る

はじめに KotlinでWeb開発するときに、Springが選ばれることが多いと思うのですが、個人的な思いとしてはKotlin由来のライブラリーやフレームワークをなるべく使いたいという気持ちがあります。 KotlinでそのへんをやるにはKtorとWebフレームワークとKoinと…

GitHub ActionsでGauge Test(Kotlin)を実行する

はじめに 仕事ではGaugeを使うことが多いのですが、GitHub Actionsを使って動かすにはどうすればいいんだろうかというところに興味が少しわきました。 そもそもGitHub Actionsをそんなに使ったことも無かったのでHello Worldも兼ねてやってみようかと思いま…

Skaffoldを用いてローカルでk8sにデプロイするJavaアプリの開発を行なう

はじめに 最近身の回りでSkaffoldという名前をよく聞くようになりまして、ちょっと気になって調べたら面白そうだったし、今後使っていきそうな雰囲気を感じたので、ちょっとさわっておこうかと思います。 Skaffoldとは? Skaffoldはk8sネイティブなアプリケ…

OperatorSDKでCustom ResourceとCustom Controllerを作る

はじめに k8sではいくつかの拡張ポイントが用意されています。その中でも、APIをカスタムするためのCustom Resourceや調整ループによってリソースオブジェクトの状態管理を行い、宣言的なAPIを可能にするCustom Controllerがあります。 まえまえからこの2つ…

Isito、k8sでカナリアデプロイをする

はじめに 先月の5月18日にIstioが1.10のリリースがされたみたいです。 その中でStable Revision Labelsと言う機能を使ってカナリアップデートを行なう例が乗っていて、最初言葉尻を完全に読み間違えていてアプリのカナリアデプロイが容易になると思ったので…

http4sのHTTP Serverを使ってみる

はじめに FS2に依存するライブラリはいくつかありますが、http4sというHTTPサーバとクライアントを用意してくれているライブラリがあり、ちょっと興味が湧いたので触ってみようかと思います。 http4sはFS2(と、もちろんCats Effects)をベースにしているの…

fs2を試す。

はじめに ScalaでReactorみたいなリアクティブなプログラミングをするにはどうすれば良い?みたいなのをScalaに詳しい同僚に聞いてみたところ。 FS2というライブラリを教えて頂いたので試してみようかと思います。 ただ、この時期ではリアクティブのところま…

ScalaTestとScalaMockでテストを行なう

はじめに 今後Scalaを触ることになりそうになのでちょっと勉強しておこうかと思いまして、まずはテストのやり方を確認しようかと思いScalaTestとScalaMockを使ってユニットテストを書いてみようと思います。 書いてみる 環境 今回の環境は以下の通り $ scala…

Spring Boot 2.5についてメモ

はじめに 今週(2020/5/20)にSpring Boot 2.5が出ましたが、どんなのが出たのかまとめて、なんとなく違いを把握おこうと思います。 基本的にはRelease Notesの内容を個人的に気になったところを少し深ぼって、自分の理解をまとめようと思うので、正確な情報は…

Ktorのログ出力をJsonに変える

はじめに まえにQuarkusで同じようなことをやったのですが、Ktorだとどうなるんだろうとふと思ってやってみようと思います。 先にお伝えしておくと、タイトル詐欺ではないですが、ほぼLogbackの設定の話になりKtor特有のものはなさそうでした。 主題とは関係…

Raspberry PiでKubernetes The Hard Way(v1.21.0)をやる(失敗)

はじめに 最近、Raspberry Piを買ってKubeadmを使ってKubernetesのクラスタを構築してみたので今度は、「Kubernetes The Hard Way」をやってみようと思います。 Kubernetes The Hard Way自体は、VirutalBoxを使ってやったみたことはあったのですが、その当時…

Raspberry pi 3 model b+にUbuntu18をインストールする

はじめに Twitterとかでにk8sのクラスターをラズパイ上に構築しているのをよく見かけていたのですが、自分もGWでちょっとやってみようかと思い。 その仮定で、ラズパイにUbuntuをインストールする必要があるみたいなのでメモとして残しておこうと思います。 …

JITWatchを動かしてみる

はじめに ちょっと前のどこかのイベント(おそらくJJUG)でJitWatchというのが紹介されていて、ちょっと気になってました。 このブログではJITWatchを動かして見ようかと思います。 紹介動画とかみつつ、自分の理解をまとめています。正確な情報は公式のGitH…

KtorのアプリからMicrometer+PrometheusでJVMのメトリクスを取得する

はじめに Ktorのドキュメント呼んでいたらMicrometerに対応してそうだというのを見かけてちょっと動かしてみようかと思います。 基本的にはドキュメントに書かれた流れを沿う感じでやろうかと思います。 あと、PrometheusはDockerを用いて起動します。 やっ…

Docker 20.10.0についてまとめる

はじめに だいぶ前ですがDokcer 20.10.0がリリースされています。かねてからやろうと思ってやってなかったのですが、リリースノートを眺めて、気になったところをかいつまんでまとめてみようと思います。 ものによっては動かしてみようかと。 やっていく 環…

QuarkusのDevServicesを試す

はじめに 先日、Quarkusの1.13がリリースされので、リリースブログを眺めていたのですがDevServicesという便利そうな機能が追加されていたので試してみようかと思います。 DevServicesとは DevモードでQuarkusを起動した場合、追加の設定無しでDBを起動して…

k8s上のSpring Bootアプリからメトリクスを取得する(Actuator + Prometheus Operator)

はじめに Kubernetes上でのSpring Bootのアプリのデバックを行なう際にPodのコンテナ内に応じて必要なコマンドとってきて、スレッドダンプやヒープダンプを取得してホストにコピーみたいなことをやっていたのですが、流石に面倒に感じはじめました。 そこで…

Minikubeにkube-prometheusを使ってPrometheusとGrafanaをデプロイする

はじめに 別のことがしたくて、Kubernetesクラスタの監視をPrometheus + Grafanaで行っている環境が欲しくて、いろいろ調べてたらkube-prometheusというのを見つけて、スターも多そうだったのでちょっと触ってみようと思います。 なおこのブログで特に指定が…

MandrelでQuarkusのアプリをネイティブイメージ化する

はじめに Quarkusのネイティブイメージ化したアプリを作ったことなかったのと、Mandrelという名前自体は聞いていたのですがQuarkusに関係するGraalVMぐらいの理解でしか無かったので、ちょっとまとめて動かしてみようかと思います。 基本的にはQuarkusのガイ…

Goのembedを使う

Go

はじめに Goの1.16からembed packageがcoreライブラリに追加されています。結構面白い感じの機能だったのでちょっと試してみようかと思います。 go enbedとは embedを利用すると静的ファイルをGoのプログラムに埋め込み、そこに対するアクセスを提供してくれ…