Это Java приложение REST API для весенней загрузки, использующее индекс. html для представления пользователю пользовательской веб-страницы. Когда отображается индекс. html, он запускает logi c из Javascript / jQuery, чтобы выполнить вызов API REST (закодированный как показано ниже), для серверной службы в классе контроллера Java, чтобы получить 2 случайные сгенерированные числа:
$.ajax({
url: "http://localhost:8080/multiplications/random"
Программа работает нормально при запуске ее как приложения Spring Boot в Eclipse!
Однако она не работает после того, как я использовал файл .jar для создания Docker файл образа затем развернул его с помощью Kubernetes / minikube (я новичок в Docker / Kubernetes).
вот док-файл для создания файла образа с использованием .jar:
FROM openjdk:latest
ADD target/social-multiplication-v3-0.3.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
EXPOSE 8080
Вот файл deploy.yaml:
---
kind: Service
apiVersion: v1
metadata:
name: multiplicationservice
spec:
selector:
app: multiplication
ports:
- protocol: "TCP"
port: 80
targetPort: 8080
nodePort: 30001
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mdeploy
spec:
replicas: 1
selector:
matchLabels:
app: multiplication
template:
metadata:
labels:
app: multiplication
spec:
containers:
- name: multiplication
image: huxianjun/multiplication
ports:
- containerPort: 80
и IP-адрес хоста, на котором развернуто приложение в Kubernetes:
$ minikube ip
192.168.99.101
В конце я могу добраться до index. html страница из браузера по следующему URL:
http://192.168.99.101:30001/
Страница отображается должным образом - что НЕ работает, следующий вызов API REST не произошел, поэтому 2 числа не возвращаются из вызов и отображается на дисплее ge:
$.ajax({
url: "http://localhost:8080/multiplications/random"
Я думаю, это вызвано тем, что 'localhost' и порт '8080' не выровнены с тем номером порта, # определенным в файле deploy.yaml? или даже что-то противоречит «EXPOSE 8080» в файле документации?