Задать вопрос

Как вывести сервис Minikube во внешнюю сеть?

Добрый день.

0) Есть образ:
spoiler
FROM nginx:latest
MAINTAINER Vekov Ivan <i.vekov@v-halla.ru>
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN find /etc/nginx/ -type f -exec sed -i 's/80/8000/g' {} +
RUN mkdir "/usr/share/nginx/html/health/"
RUN echo "{'status':'OK'}" > /usr/share/nginx/html/health/index.html
RUN mkdir "/usr/share/nginx/html/version/"
RUN echo "{'version':'0.1'}" > /usr/share/nginx/html/version/index.html
EXPOSE 8000
CMD ["nginx"]

1) Есть VPS
2) Установлен миникуб с драйвером = докер
3) Есть деплой
spoiler
apiVersion: apps/v1
kind: Deployment
metadata:
    name: myapp-deployment
spec:
    replicas: 2
    selector:
       matchLabels:
          app: myapp
    template:
       metadata:
          labels:
             app: myapp
       spec:
          containers:
          - name: myapp
            image: ivekov/ivekov:latest
            ports:
              - name: web
                containerPort: 8000
            livenessProbe:
              httpGet:
                port: 8000
                path: /health/
              initialDelaySeconds: 10
              periodSeconds: 5
              timeoutSeconds: 2
            readinessProbe:
              httpGet:
                port: 8000
                path: /health/
              initialDelaySeconds: 10
              periodSeconds: 5

4) Есть сервис:
spoiler
apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  selector:
    app: myapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: web
  type: NodePort

5) Есть ингресс:
spoiler
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
    - host: arch.homework
      http:
        paths:
          - path: /test/ivekov($|/)(.*)
            pathType: Prefix
            backend:
              service: 
                name: myapp-service
                port:
                  number: 80

6) Если делать curl с машины до arch.homework/(*)/health/ - отвечает Ок.
7) Если запрашивать этот путь через браузер - Страница не найдена.
8) Аддон ингресс включен
9) External_IP у сервиса нет

Вопрос - что пошло не так?
  • Вопрос задан
  • 288 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
vekov
@vekov Автор вопроса
Итак, ответ на этот вопрос заключался в следующем:

Нужно было поставить на сервак nginx, и сделать proxy_pass на ингресс.

Типа такого:
server {
    listen 80;
    server_name blog.zeroxzed.ru;
    access_log /var/log/nginx/blog.zeroxzed.ru-access.log;
    error_log /var/log/nginx/blog.zeroxzed.ru-error.log;

location / {
    proxy_pass http://192.168.13.31;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    }
}


Это мы размещаем в etc/nginx/sites-available/default

Айпишник "192.168.13.31" конечно же меняем на ип ингресса.
Получить его можно через:
kubectl get ingress

Вроде бы :)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы