質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

1219閲覧

Docker DesktopのKubernetesを使ってブラウザからSpring Bootアプリケーションへアクセスできない

Linkey

総合スコア77

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/12/27 14:51

編集2021/12/27 14:58

Kubernetesを勉強しているものです。
以下のサイトを参考にDocker DesktopのKubernetesを使ってTomcatにwarファイルを配置した状態のpodにブラウザからアクセスしようとしています。
https://betterprogramming.pub/hello-kubernetes-spring-boot-a20e47d57872

以下の手順を実施してブラウザからアクセスをしたのですが、404エラーとなってしまいます。
①Dockerイメージを作成する

docker build -t (Dockerユーザ名)/springboot-sample1:v1 .

②springboot_deployment.yamlからリソースを作成する

kubectl apply -f springboot_deployment.yaml

③Podの状態を確認する

kubectl get pods NAME READY STATUS RESTARTS AGE spring-boot-sample1-798976f57c-l9q8z 1/1 Running 0 13m

④Podにアクセスしてwarファイルが配置されているかを確認する

kubectl exec -it spring-boot-sample1-798976f57c-l9q8z /bin/bash kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. root@spring-boot-sample1-798976f57c-l9q8z:/usr/local/tomcat# ls -la root@spring-boot-sample1-798976f57c-l9q8z:/usr/local/tomcat# ls -la total 176 drwxr-xr-x 1 root root 4096 Dec 22 17:10 . drwxr-xr-x 1 root root 4096 Dec 22 17:09 .. -rw-r--r-- 1 root root 18994 Dec 2 22:01 BUILDING.txt -rw-r--r-- 1 root root 6210 Dec 2 22:01 CONTRIBUTING.md -rw-r--r-- 1 root root 60269 Dec 2 22:01 LICENSE -rw-r--r-- 1 root root 2333 Dec 2 22:01 NOTICE -rw-r--r-- 1 root root 3378 Dec 2 22:01 README.md -rw-r--r-- 1 root root 6905 Dec 2 22:01 RELEASE-NOTES -rw-r--r-- 1 root root 16517 Dec 2 22:01 RUNNING.txt drwxr-xr-x 2 root root 4096 Dec 22 17:10 bin drwxr-xr-x 1 root root 4096 Dec 27 14:26 conf drwxr-xr-x 2 root root 4096 Dec 22 17:10 lib drwxrwxrwx 1 root root 4096 Dec 27 14:26 logs drwxr-xr-x 2 root root 4096 Dec 22 17:10 native-jni-lib drwxrwxrwx 2 root root 4096 Dec 22 17:10 temp drwxr-xr-x 1 root root 4096 Dec 27 14:26 webapps drwxr-xr-x 7 root root 4096 Dec 2 22:01 webapps.dist drwxrwxrwx 1 root root 4096 Dec 27 14:26 work root@spring-boot-sample1-798976f57c-l9q8z:/usr/local/tomcat# cd /usr/local/tomcat/webapps root@spring-boot-sample1-798976f57c-l9q8z:/usr/local/tomcat/webapps# ls -la total 17220 drwxr-xr-x 1 root root 4096 Dec 27 14:26 . drwxr-xr-x 1 root root 4096 Dec 22 17:10 .. drwxr-x--- 5 root root 4096 Dec 27 14:26 sample1-0.0.1-SNAPSHOT -rwxr-xr-x 1 root root 17614964 Dec 27 13:22 sample1-0.0.1-SNAPSHOT.war

⑤springboot-sample1-load-balancer-service.yamlからリソースを作成する

springboot-sample1-load-balancer-service.yaml

⑥サービス状態を確認する

kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6d2h spring-boot-sample1-loadbalancer LoadBalancer XX.XXX.XXX.XX localhost 8080:30175/TCP 10s spring-boot-sample1-service-name ClusterIP XX.XXX.XXX.XX <none> 8080/TCP 25s

http://localhost:8080/sampleにアクセスするが404となる
イメージ説明

原因を調べていますが、今のところ見つかっていません

Kubernetes、Tomcatに詳しい方がいましたらご回答いただけないでしょうか?
よろしくお願いいたします。

ちなみに設定した内容は以下です。
★SampleController.java

Java

1package com.example.sample1.controller; 2 3import org.springframework.web.bind.annotation.RequestMapping; 4import org.springframework.web.bind.annotation.RestController; 5 6@RestController 7public class SampleController { 8 @RequestMapping("/sample") 9 public String home() { 10 return "Hello World"; 11 } 12}

★Dockerfile

FROM tomcat:10-jdk8 COPY ./sample1-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ EXPOSE 8080

★springboot_deployment.yaml

yaml

1apiVersion: apps/v1 2kind: Deployment 3metadata: 4 name: spring-boot-sample1 5spec: 6 replicas: 1 7 selector: 8 matchLabels: 9 app: spring-boot-sample1 10 template: 11 metadata: 12 labels: 13 app: spring-boot-sample1 14 visualize: "true" 15 spec: 16 containers: 17 - name: spring-boot-sample1-pod 18 image: (Dockerユーザ名)/springboot-sample1:v1 19 ports: 20 - containerPort: 8080 21--- 22apiVersion: v1 23kind: Service 24metadata: 25 labels: 26 visualize: "true" 27 service-label: spring-boot-sample1-service 28 name: spring-boot-sample1-service-name 29spec: 30 type: ClusterIP 31 ports: 32 - name: angular-sample-service-port-name 33 port: 8080 34 protocol: TCP 35 selector: 36 app: spring-boot-sample1

★springboot-sample1-load-balancer-service.yaml

yaml

1apiVersion: v1 2kind: Service 3metadata: 4 labels: 5 service-label: spring-boot-sample1-service 6 name: spring-boot-sample1-loadbalancer 7spec: 8 type: LoadBalancer 9 ports: 10 - name: spring-boot-sample1-service-port-name 11 port: 8080 12 protocol: TCP 13 selector: 14 app: spring-boot-sample1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下を参考にして解決することができました。
https://teratail.com/questions/375912

投稿2022/01/03 14:42

Linkey

総合スコア77

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問