Ponz Dev Log

ゆるくてマイペースな開発日記

Open Libertyをオフライン環境でもZIPファイルから起動する

タイトルの記事をQiitaに投稿しました。 やんごとなき理由でMaven Centralなどにアクセスできないオフライン環境で開発するシーン向けです。 Liberty Maven pluginのおかげでZIPファイルさえあればオンライン環境と同じ開発体験が得られるのはいいですね。 q…

Open Libertyで管理するDatasourceをSpring BootからJNDI参照する

タイトルの記事をQiitaに投稿しました。 データベースの接続情報やコネクションプールの設定をアプリサーバー側で管理している状況で、Spring Bootからアプリサーバーで持っているDataSourceを使いたかったのでので備忘録でした。Javaのコードは書かずSpring…

OpenShiftで特定の時間だけPodをスケールアウト/スケールインする

Red Hat OpenShiftで特定の時間帯だけPodをスケールアウト、それ以外の時間は少ない数 (できれば0) にスケールインという運用をKedaで実現してみます。AWSだとAmazon EC2 Auto Scalingに相当する機能の検証です。 Kedaとは? Kedaはイベント駆動でKubernetes…

Spring Boot 3アプリのJARをOpen Libertyにデプロイして動かす

Qiitaにタイトルの記事を投稿しました。 Spring Boot 3系のJARファイルもようやくデプロイするためのフィーチャーがリリースされたので早速触ってみたという記事です。 qiita.com 今までもWARファイルでもデプロイできたのですが、TomcatのAPIへの依存をpom.…

Terraform collectionでAnsibleからTerraformを実行する

AnsibleからTerraformを呼び出すAnsible Collection cloud.terraform があることを知りました。 Ansibleのワークフローの中でクラウドリソースの作成だけTerraformに任せたい場合に便利そうなので試してみます。 github.com Terraform collection for Ansibl…

KeycloakでLDAPをバックエンドにOIDC認証する

エンタープライズ向けシステムの世界にいるとユーザー管理・認証にLDAPサーバーを使っている場面に直面します。 LDAPサーバーはOSSのOpenLDAPだったり、389 Directory Server (Red Hat)、Tivoli Directory Server (IBM)、あるいはMicrosoft Active Directory…

s2i で Open Liberty アプリケーションのコンテナイメージをビルドする

Qiitaにタイトルの記事を投稿しました。 qiita.com 記事は Open Liberty のビルダーイメージを使っていますが、商用版の WAS Liberty s2i も同じことをできるはずです。 github.com 記事内ではしれっとJava 17のビルダーイメージを使っていますが、実はバー…

OpenLiberty with MicroProfile TelemetryでNew Relicにトレース情報を送る

Qiitaにタイトルの記事を投稿しました。 MicroProfileを使うためのアプリサーバにOpen Libertyを利用しています。 qiita.com 以前の記事で「トレース情報を送信するならSaaSもいいよね」的なことを書いたので、せっかくなら試してみようと記事にしました。 N…

OpenLiberty with MicroProfile Telemetryで手軽に分散トレーシング

Qiitaにタイトルの記事を投稿しました。 qiita.com 過去にOpen LibertyからJaegerにOtelでトレース情報を送信する記事を投稿しましたが、あちらの記事ではJava Agentを使用しています。 内部的にはOpenTelemetry Java SDKを使っているはずですが取得できる情…

TomcatのHealth Check Valveでヘルスチェックを有効化する

Apache TomcatはHealth Check Valveを使用することでヘルスチェックを有効化できます。 ヘルスチェック設定方法とOpenShift上のJWSコンテナで利用する方法を書きます。 Health Check Valveを利用可能なTomcatバージョン Changelogを見る限り、Health Check V…

TomcatアプリケーションをS2Iでコンテナ化してOpenShiftで動かす

Tomcatで動作するJavaアプリケーションをS2Iでコンテナ化してOpenShiftで動作させる方法の備忘録です。 手元にTomcatアプリケーションはあるけど、コンテナ化やOpenShift/k8sの設定が面倒だなというモチベーションで調査した結果を書き残します。 環境情報 …

今後のブログ記事投稿の方針

2022年は合計13本の記事を投稿しました。おおよそ毎月1本書けたことになります。 記事を読んでいただいた皆様ありがとうございます! さて今後のブログの記事投稿についてですが、はてなブログとQiitaを使い分けることにします。 具体的には所属会社が関係す…

OpenShift LocalでPVのDynamic Provisioningを試す

この記事はOpenShift Advent Calender 2022の10日目の記事です。 前日は @ArakiToshihiro さんの『見かけたjarファイルをOpenShift にデプロイする』でした。 お仕事でOpenShiftを使うことが多くなり、手元で気軽にOpenShiftを試す環境としてOpenShift Local…

k8s@home #1でkubesprayをお題にLTしました

2022/10/12に k8s@home #1 というイベントでLTをやりました。 自宅検証環境として使っていたk8sクラスタをkubesprayで立てては壊してを繰り返した話です。 人生初のLTだったのですが、自分の知見を話すのは良い体験でした。 k8shome.connpass.com LTのスライ…

Kafka本の商業版を出します

技術書典で頒布した「Kafkaをはじめる」を、インプレスR&D様から商業版として出すことになりました。 同人版では書ききれなかった以下の内容を追加して、全体的に書き直しています。 Apache Kafka v3.x系への対応 トランザクションの仕組みと実装 (Producer…

DebeziumでPostgreSQLをCDCするときはロールにSELECT権限をつける

久しぶりにKafkaネタです。 Change Data Capture (CDC)でデータベースの変更をKafkaのイベントに変換するDebeziumを触り始めています。 PostgreSQLのレコードをKafkaに流すときに権限周りでハマったので、備忘録として残します。 Debeziumのおさらい Debeziu…

Open Libertyで出力するJSONログは末尾に改行を入れるな

Open LibertyでJSON形式のログを出す場面でハマったので、解決方法の備忘録です。 課題 以下の記事を参考にOpen Liberty上で稼働するJakarta EEアプリケーションのJSONログを標準出力に書き出そうとしました。 このアプリケーションは、Log4j 2でログをJSON…

Javaアプリのトレース情報をJaegerにOpenTelemetry Protocolで送りつける

Jaeger v1.35からOpenTelemetry Protocol (OTEL) によるトレース情報を受け付けられるようになりました。 JavaアプリからOTELでトレース情報を送信・参照してみます。 元記事はこちら。 medium.com 5月末にリリースされたJaeger v1.35からOpenTelemetryをネ…

OpenShift CLIでKustomizeを使う

OpenShift CLIのリファレンスを眺めていたらKustomizeのマニフェストを使えそうだったので、メモ書きです。 環境情報 OpenShift CLI : 4.8.40 Kustomizeマニフェストを適用する apply サブコマンドにKustomize用のフラグ --kustomize または -kをつけること…

OpenShiftでJenkins ControllerとAgentを実行する

普段はエンタープライズのお客様と一緒に仕事しているのですが、 ビルドやデプロイのパイプラインには既存資産や知見を使いまわせるJenkinsを使いたいというニーズは未だに根強いと感じています。 しかしコンテナイメージの形でビルドツールやアプリケーショ…

skopeoのイメージコピー時にdigestを出力する

この記事は、skopeoでコンテナイメージをコピーしたときに同時にイメージdigestも一緒に出力できるからKubernetesのマニフェストへの埋め込みに便利だぞという話です。 skopeoはレジストリ間のコンテナイメージのコピーやタグ一覧の参照など、コンテナイメー…

PlantUMLのテーマでスタイルを適用する

仕事で設計内容を整理したり、個人開発でも頭の中身を整理するためにPlantUMLを使っています。 3年近く使っていて先日初めて知ったのですが、PlantUMLには "Theme" (以下、テーマ) というパッケージ化されたスタイルを適用する仕組みがあるようです。 Future…

PostgreSQLのpg_basebackupでレプリカを立てる

PostgreSQLのHA構成を組むにあたって、 ストリーミングレプリケーションできるレプリカ機を容易に立てられることに衝撃を受けたので備忘録です。 既に各所で既出ですが、自分にとって発見だったので書き留めます。 検証環境 以下のVMを2台立てて検証しました…

Nexus × HelmでプライベートMavenリポジトリをKubernetes上に立てる

MavenでJavaのアプリをビルドすると、CIサーバーなどクリーンな環境ではライブラリのダウンロードに時間がかかります。 5分程度ならまだしも、正直10分を超えると気軽にビルドして検証するには支障が出るのでキツイ。特にプロキシ環境下。 そこでMaven Centr…

TerraformからHelmチャートをデプロイする

TerraformからHelmチャートをデプロイする方法のメモです。 複数の自作Helmチャートをデプロイする時にサブチャートを使いづらい場面に遭遇したので、 Terraformで複数のHelmチャートをまとめてデプロイしてみます。 環境情報 項目 バージョン 開発端末 macO…

おうちクラウドのUbuntuをautoinstallで自動設定する

今年11月からおうちクラウドと称して自宅サーバにKubernetesクラスタを構築して使っています。 仕事や興味のあるトピックを自宅で検証できる環境があるのは良いものです。 ponzmild.hatenablog.com 使い始めるとやりたいことは増えてくるもので、実はここ最…

Intel NUC × ESXi × Kubernetesで自宅プライベートクラウドを立てた

以前から興味があった自宅プライベートクラウドを立てちゃいました。その記録です。 経緯 所属部署がマルチクラウド / ハイブリッドクラウドを推していることもあり、 お仕事でKubernetes、OpenShift on プライベートクラウド(vSphere)、VMware系のソリュー…

OpenShift WebコンソールのTopologyビューに出てくるアイコン画像の指定方法

OpenShift Web ConsoleでTopologyビューを眺めると、 Deployment、DeamonSet、StatefulSetといったワークロードにアイコンが表示されます。 テンプレートやHelmチャートでアプリケーションをデプロイした時は、 アイコン画像(以下の画像は公式ドキュメントに…

Apicurio Registry Serdes v2系でKafkaのメッセージをシリアライズする

Kafkaのメッセージをスキーマ言語でシリアライズ/デシリアライズするためには、 専用のライブラリ(Serdes)が必要になります。 Serdesの1つであるApicurio Registry SerdesをJava/Kotlinで使っていたら、 v1系(1.y.z)とv2系(2.y.z)でパッケージ名など大きく変…

Hyperledfer Fabricのクライアントアプリケーション設計で使える資料集

お仕事でHyperledger Fabricを使ったクライアントアプリケーションを構築した時に参照していた資料リンクの備忘録です。 社内で全世界のブロックチェーン猛者が集まる場で事例紹介をすることになったので、 当時のアプリ設計で考えていたことの整理と、今な…