「JavaアプリをKubernetesで動かしたい」
「Pod?Deployment?正直よく分からない」
「Dockerまでは分かるけど、その先が怖い…」
そんなJavaエンジニアのための記事です。
この記事では、
- Kubernetesとは何か
- Javaアプリをどうやってデプロイするのか
- スケール・設定管理・ヘルスチェックの考え方
- Javaエンジニアが気をつけるべきポイント
を、小学生にもわかるようにやさしく解説します。
でも中身は実務レベルです。
なぜ今「Java × Kubernetes」なのか?
いまの現場では、
Java + Docker + Kubernetes
がほぼ標準構成です。
Kubernetesとは、
コンテナをまとめて管理する仕組み
です。
Dockerが「箱」だとすると、
Kubernetesは「その箱を自動で並べ替えてくれる管理人」です。
JavaエンジニアがKubernetesを学ぶメリット
- デプロイの流れが理解できる
- スケールの仕組みが分かる
- インフラ担当と会話できる
- 転職市場で評価が上がる
コードだけ書ける人から、
運用まで理解している人へレベルアップできます。
ステップ①:Javaアプリをコンテナ化する
まずはDockerです。
Spring Bootアプリを例にします。
シンプルなDockerfile
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY target/app.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
これでJavaアプリはコンテナになります。
ここまでできれば、
Kubernetesに乗せる準備はOKです。
ステップ②:Kubernetesの基本用語を理解する
難しく感じますが、
実は単純です。
Podとは?
Podとは、
コンテナの入れ物
です。
Javaアプリが動く最小単位。
Deploymentとは?
Deploymentとは、
Podを何個動かすか決める設計図
です。
例:
- Javaアプリを三つ同時に動かす
- 新バージョンに順番に切り替える
などを管理します。
Serviceとは?
Serviceは、
Podへの安定した入り口
です。
Podは入れ替わります。
でもServiceは固定です。
ブラウザはServiceにアクセスします。
ConfigMapとSecret
- ConfigMap → 設定値
- Secret → パスワードなど機密情報
Javaアプリに外から設定を渡します。
ステップ③:Deploymentを書いてみる
例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: java-app
spec:
replicas: 2
selector:
matchLabels:
app: java-app
template:
metadata:
labels:
app: java-app
spec:
containers:
- name: java-app
image: myrepo/java-app:1.0.0
ports:
- containerPort: 8080
ポイント:
- replicasで数を指定
- imageでDockerイメージ指定
- containerPortはSpring Bootのポートと合わせる
ステップ④:Serviceを書く
apiVersion: v1
kind: Service
metadata:
name: java-service
spec:
type: ClusterIP
selector:
app: java-app
ports:
- port: 80
targetPort: 8080
これで、
外部 → Service → Pod
という流れができます。
デプロイしてみる
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
確認:
kubectl get pods
kubectl logs <pod名>
ここまでできれば、
JavaアプリはKubernetes上で動いています。
ステップ⑤:スケーリング
kubectl scale deployment java-app --replicas=3
Javaアプリが三つ動きます。
何もコードを変えなくても、
Kubernetesが分散します。
これが強みです。
ステップ⑥:ローリングアップデート
イメージを更新し、
kubectl apply -f deployment.yaml
すると、
- 古いPodを少しずつ停止
- 新しいPodを順番に起動
します。
ダウンタイムを最小にできます。
Javaエンジニアが気をつけるポイント
メモリ設定
コンテナではメモリ制限があります。
ENTRYPOINT ["java","-XX:MaxRAMPercentage=75.0","-jar","app.jar"]
これが重要です。
ヘルスチェック
Spring BootならActuatorを使います。
livenessProbe:
httpGet:
path: /actuator/health
port: 8080
これでKubernetesが異常検知します。
ログは標準出力へ
ログファイルではなく、
標準出力に出す。
kubectl logs <pod>
で確認できます。
設定は外部化する
application.propertiesにベタ書きしない。
ConfigMapで渡します。
env:
- name: SPRING_PROFILES_ACTIVE
value: prod
これがクラウドネイティブ設計です。
JavaとKubernetesの相性が良い理由
Javaは、
- 長期運用に強い
- GCチューニングが豊富
- フレームワークが成熟
しています。
Spring BootはKubernetesとの相性が抜群です。
Javaはエンタープライズ現場での採用が多く、
Kubernetesとの組み合わせ事例も豊富です。
学習ロードマップ
おすすめ順序:
- Java基礎
- Spring Boot
- Docker
- Kubernetes
- 監視・セキュリティ
順番が大事です。
まずはJava力を固めよう
Kubernetes以前に、
Javaが書けないと意味がありません。
絶対にJavaプログラマーになりたい人へ。
https://amzn.asia/d/3E1CYbv
基礎を固めれば、
DockerやKubernetesも理解できます。
本気でクラウドネイティブを目指すなら
- DockerやYAMLが不安
- 本番設計を学びたい
- 転職までサポートしてほしい
そんな人はサイゼントアカデミー。

Java+Docker+Kubernetesを
実践レベルで学べます。
まとめ
JavaとKubernetes連携の流れは:
- JavaアプリをDocker化
- DeploymentとServiceを書く
- kubectlでデプロイ
- スケールと更新を体験
- 設定・ログ・ヘルスを整える
いきなり全部理解しなくていい。
まずは一つ、
Spring BootアプリをKubernetesに載せてみましょう。
そこから世界が広がります。
あなたが
クラウドネイティブも理解できるJavaエンジニア
になることを応援しています。

コメント