Оба ответа помогли мне в решении моей проблемы, но я потерял детали.Вот пример, который может помочь другим в подобной ситуации:
1) Рассмотрим следующее приложение yaml:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-web-app
labels:
app: my-web-app
spec:
serviceName: my-web-app
replicas: 1
selector:
matchLabels:
app: my-web-app
template:
metadata:
labels:
app: my-web-app
spec:
containers:
- name: my-web-app
image: myregistry:443/mydomain/my-web-app
imagePullPolicy: Always
ports:
- containerPort: 8080
name: cp
2) Я решил принять Node Port (спасибо @Leandro зауказав это), чтобы показать мой сервис, поэтому я добавил в свой yaml следующее приложение:
---
apiVersion: v1
kind: Service
metadata:
name: my-web-app
labels:
name: my-web-app
spec:
type: NodePort
ports:
- name: http1
port: 80
nodePort: 30036
targetPort: 8080
protocol: TCP
selector:
name: my-web-app
Одна вещь, которую мне не хватало, состоит в том, что имена меток в обоих наборах должны совпадать, чтобы связать my-web-app:StatefulSet
(1) - my-web-app:Service
(2).Тогда my-web-app:StatefulSet:containerPort
должен совпадать с my-web-app:Service:targetPort
(8080).Наконец, my-web-app:Service:nodePort
- это порт, который мы публикуем публично, и он должен иметь значение между 30000-32767.
3) Последний шаг - убедиться, что группа безопасности в AWS разрешает входящий трафик для выбранного my-web-app:Service:nodePort
, в данном случае 30036, если не добавить правило.
После выполнения этих шагов я смог получить доступ к своему приложению через aws-node-ip:30036/my-web-app
.