Spring Boot 2.7.0についてメモ

はじめに 先日、Bootの2.7が出ましたね。今回もまとめておこうと思います。ここでは私が気になるところについてまとめて、ものによっては簡単に動かしてみたいと思います。すべての変更点に関しては そういえば昨年のSpring Oneの記憶なんですが、2.7.xは2系…

CI/CDツールのDaggerを動かす

はじめに CICDのパイプラインを記述する際はツールごとに独自のフォーマットや記述方法で記述する必要があるため移植性が低かったり、ローカルで試しに実行するのがなかなか難しかったりすることが多いと思います。DaggerはCICDの開発キッドで上記のような課…

Kong Admin API GUIのKongaを試す

はじめに Kongの諸々の管理する場合、Admin APIを使うのが1つの手かと思うのですが、いかんせんヒューマンフレンドリーでは無いと言うような課題を感じることがあります。 Technology RadarでKongaというKongのAdmin API GUIを見つけたのでちょっと試して見…

GoのロギングライブラリZapを試す

Go

はじめに GoのLogライブラリは標準のものを使うことが多かったのですが、構造化したりするのがちょっと大変だったので、より高機能で使い勝手がよいものを試してみたくなってZapというのをどこかで見かけたのを思い出して、ちょっと試してみようと思います。…

Sealed Secretsでk8s上で利用する機密情報をGitなどでセキュアに管理する

はじめに k8sには、Secretという機密情報を扱うリソースがありますが、こいつは基本情報をBase64エンコードしたもので扱われます。例えばSecretのリソース定義ファイルをGitで管理したいとなった場合定義ファイルに書かれる機密情報はただBase64されてるだけ…

Flixをインストールしてテストを実行する

はじめに 最近所属する会社内でFlixというJVM系の言語が新しく出たみたいなのを見かけて面白そうだったので少し触ってみたいと思います。 色々深堀りをできそうなポイントはあるのですが一旦深く突っ込まず個々ではインストールして動かすことと、簡単に概要…

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を用いて起動します。 やっ…