@VITYA-XY1

Как прокидывать Ingress controller наружу?

Здравствуйте господа DevOps
Битый час не могу разобраться как же за "экспоузить" порты 80 и 443 наружу:
Посмотрел вроде бы внятный туториал:
5d5dda2422b35571685076.png
Но в данном примере ничего наружу не прокидывается к тому же NodePort может принимать значения не меньше 30000
Как сам ingress resource мапится к сервису app я примерно понял (по лейблу сервиса).
А вот как грамотно развернуть ingress controller для нормальной работы ingress ресурсов для меня пока непонятно:
1) деплоится образ ingress-nginx гугловский либо от самого nginx.
2) создается соответсвующий сервис, конфигмапы и создается сервис-аккаунт.
Так вот теперь вопрос::
КАК этот сервис пробросить наружу 80.443 через NodePort если доступны только порты от 30000.
Гугля нашел пост где это делается через daemon set
Встречал примеры где это делается через облачный LoadBalancer. Но относительно того как это правильно делается на железе так и не понял.
Не можли бы Вы внятно объяснить или поделиться примером?
Благодарю
  • Вопрос задан
  • 1512 просмотров
Решения вопроса 1
Приветствую.

Ниже пример конфигурации daemon set для bare-metal k8s. Если будут вопросы - пишите.
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: nginx-ingress-lb
  labels:
    name: nginx-ingress-lb
  namespace: kube-system
spec:
  updateStrategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        name: nginx-ingress-lb
      annotations:
        prometheus.io/port: '10254'
        prometheus.io/scrape: 'true'
    spec:
      serviceAccountName: nginx-ingress-serviceaccount
      # This may be used to push kubernetes SVCs to the internet
      # Label a secure host as 'edge-router' + setup forwarding, SSL certs, etc.
      hostNetwork: true
      nodeSelector:
        node-role.kubernetes.io/ingress: "true"
      terminationGracePeriodSeconds: 60
      containers:
      - image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.0
        name: nginx-ingress-lb
        readinessProbe:
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
        livenessProbe:
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
          initialDelaySeconds: 10
          timeoutSeconds: 1
        ports:
        - containerPort: 80
          hostPort: 80
        - containerPort: 443
          hostPort: 443
        env:
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
        args:
        - /nginx-ingress-controller
        - --default-backend-service=$(POD_NAMESPACE)/default-http-backend
        - --configmap=$(POD_NAMESPACE)/nginx-ingress-configmap
        - --default-ssl-certificate=$(POD_NAMESPACE)/default-ssl-cert
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы