k8s/archive_1

24.EC2 - Kubernetesを用いてSpring Bootを起動

YOOANT 2026. 3. 19. 18:01

1.マニフェストファイルのクローン

AWS EC2でSpring Bootを起動する際、Manifestファイルのみあればよい。Spring Bootに関するプロジェクトファイルは不要である。なぜなら、Manifestファイルを介してSpring Bootを実行するためのイメージをダウンロードし、実行するためである。

$ git clone https://github.com/lioncubKR/kubernetes-manifests.git
$ cd kubernetes-manifests

2.Deployment、ConfigMap、Secretファイルの修正

以前作成したRDS、ECRの情報に合わせて、Deployment、ConfigMap、Secretの情報を修正しなければならない。

spring-deployment.yaml

apiVersion: apps/v1
kind: Deployment

# Deploymentの基本情報
metadata:
  name: spring-deployment # Deployment名

# Deploymentの詳細情報
spec:
  replicas: 3 # 作成するPodのレプリカ数
  selector:
    matchLabels:
      app: backend-app # 以下で定義したPodのうち、「app: backend-app」という値を持つPodを選択

  # デプロイするPodの定義
  template:
    metadata:
      labels: # ラベル(=カテゴリ)
        app: backend-app
    spec:
      imagePullSecrets:
        - name: regcred
      containers:
        - name: spring-container # コンテナ名
          # ECRに保存されたイメージのアドレスおよびタグ名
          image: 679592457611.dkr.ecr.ap-northeast-1.amazonaws.com/kube-ecr:1.0
          ports:
            - containerPort: 8080  # コンテナで使用するポートを明示的に指定
          env:
            - name: DB_HOST
              valueFrom:
                configMapKeyRef:
                  name: spring-config
                  key: db-host
            - name: DB_PORT
              valueFrom:
                configMapKeyRef:
                  name: spring-config
                  key: db-port
            - name: DB_NAME
              valueFrom:
                configMapKeyRef:
                  name: spring-config
                  key: db-name
            - name: DB_USERNAME
              valueFrom:
                secretKeyRef:
                  name: spring-secret
                  key: db-username
            - name: DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: spring-secret
                  key: db-password
  • imagePullSecrets:イメージをPullする際、該当のSecret値を活用してPrivate ECRレジストリへアクセスする。

spring-config.yaml

apiVersion: v1
kind: ConfigMap

# ConfigMapの基本情報
metadata:
  name: spring-config # ConfigMap名

# Key、Value形式で設定値を保存
data:
  # RDSエンドポイントを記述する
  db-host: kube-database.cts66a2qwn5v.ap-northeast-1.rds.amazonaws.com
  db-port: "3306"
  db-name: mydb

spring-secret.yaml

apiVersion: v1
kind: Secret
type: Opaque # 任意のユーザー定義データを保存する際に使用するタイプ

# Secretの基本情報
metadata:
  name: spring-secret # Secret名

# Key、Value形式で値を保存
stringData:
  # RDS作成時に記載した**マスターユーザー名**と**マスターパスワード**を入力する
  db-username: admin
  db-password: password

3.オブジェクトの作成

$ kubectl apply -f spring-secret.yaml
$ kubectl apply -f spring-config.yaml
$ kubectl apply -f spring-deployment.yaml
$ kubectl apply -f spring-service.yaml

4.正常に作成されたか確認

$ kubectl get secret
$ kubectl get configmap
$ kubectl get deployment
$ kubectl get service
$ kubectl get pods

Deploymentが正常起動してなかったため、原因調査を実施した。

https://tokyoant.tistory.com/75

 

[kubernetes]exec /opt/java/openjdk/bin/java: exec format error

✅エラー内容ローカル環境でSpringサーバーをビルドしてAWS ECRに保存した。当該イメージを使用してSpringサーバーをデプロイ中にエラーが発生したため、ログを確認したところ、以下の内容が

tokyoant.tistory.com


5.APIが正常に動作するか確認する

6.DBに正常にデータが保存されているか確認する

 

日本語