У меня Kubernetes работает в Docker для Windows.
Я использую входной контроллер NGINX, я применил mandatory.yaml
и cloud-generic.yaml
.
> kubectl get services -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx LoadBalancer 10.110.198.161 localhost 80:30037/TCP,443:31218/TCP 5h
У меня естьобраз в моем локальном реестре test-app/mock-service:1.0.0
, который предоставляет порт 8080, на котором работает сервер с одной конечной точкой GET /mocks
.Запуск этого в Docker с использованием docker run -d -p 8080:8080 test-app/mock-service:1.0.0
работает, и я вижу ожидаемый результат.
Я собираюсь развернуть это с использованием Kubernetes.
Я создал ресурс развертывания и обслуживания:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: test-app-mock-service-deployment
namespace: test-app
spec:
selector:
matchLabels:
app: test-app-mock-service
replicas: 1
template:
metadata:
labels:
app: test-app-mock-service
spec:
containers:
- name: test-app-mock-service-container
image: "test-app/mock-service:1.0.0"
---
apiVersion: v1
kind: Service
metadata:
name: test-app-mock-service
namespace: test-app
spec:
type: ClusterIP
selector:
app: test-app-mock-service
ports:
- port: 8080
targetPort: 8080
protocol: TCP
И входной ресурс:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-app-ingress
namespace: test-app
annotations:
ingress.kubernetes.io/ssl-redirect: "true"
spec:
rules:
- http:
paths:
- path: /mocks
backend:
serviceName: test-app-mock-service
servicePort: 8080
Я вижу службу:
> kubectl get services -n test-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
test-app-mock-service ClusterIP 10.108.10.246 <none> 8080/TCP 1h
И пакет:
> kubectl get pods -n test-app
NAME READY STATUS RESTARTS AGE
test-app-mock-service-deployment-6b9b58fcb9-mdskn 1/1 Running 0 59m
Я вижувход:
> kubectl describe ingress test-app-ingress -n test-app
Name: test-app-ingress
Namespace: test-app
Address: localhost
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
*
/mocks test-app-mock-service:8080 (<none>)
Annotations:
ingress.kubernetes.io/ssl-redirect: true
kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"ingress.kubernetes.io/ssl-redirect":"true"},"name":"test-app-ingress","namespace":"test-app"},"spec":{"rules":[{"http":{"paths":[{"backend":{"serviceName":"test-app-mock-service","servicePort":8080},"path":"/mocks"}]}}]}}
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 1h nginx-ingress-controller Ingress test-app/test-app-ingress
Normal UPDATE 53m (x2 over 1h) nginx-ingress-controller Ingress test-app/test-app-ingress
Однако, когда я перехожу к http://localhost/mocks
, я получаю 308 до https://localhost/mocks
, где я получаю 404.
Я не уверен, что вход неправильныйнастроен или если это другая проблема.