Базовая аутентификация Kubernetes с помощью Traefik - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь настроить базовую аутентификацию на примере Nginx с Traefik в качестве контроллера Ingress.

Я просто создаю секрет "mypasswd" на секретах Кубернетов.

Это вход, который я использую:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nginxingress
  annotations:
    ingress.kubernetes.io/auth-type: basic
    ingress.kubernetes.io/auth-realm: traefik
    ingress.kubernetes.io/auth-secret: mypasswd
spec:
  rules:
  - host: nginx.mycompany.com
    http:
      paths:
      - path: /
        backend:
          serviceName: nginxservice
          servicePort: 80

Я проверяю панель инструментов Traefik, и она появляется, если я захожу на nginx.mycompany.com, я могу проверить веб-страницу Nginx, но без базовой аутентификации.

Это мое развертывание nginx:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

Сервис Nginx:

apiVersion: v1
kind: Service
metadata:
  labels:
    name: nginxservice
  name: nginxservice
spec:
  ports:
    # The port that this service should serve on.
    - port: 80
  # Label keys and values that must match in order to receive traffic for this service.
  selector:
    app: nginx
  type: ClusterIP

1 Ответ

0 голосов
/ 02 мая 2018

Популярно использовать базовую аутентификацию. Ссылаясь на документацию Kubernetes , вы сможете защитить доступ к Traefik, выполнив следующие действия:

  1. Создать файл аутентификации с помощью инструмента htpasswd. Вам будет предложено ввести пароль для пользователя:

htpasswd -c ./auth

  1. Теперь используйте kubectl, чтобы создать секрет в пространстве имен мониторинга, используя файл, созданный htpasswd.

kubectl создать секретный универсальный mysecret --from-file auth --namespace = мониторинг

  1. Включить базовую аутентификацию, добавив аннотации к объекту Ingress:

ingress.kubernetes.io / тип аутентификации: «базовый»

ingress.kubernetes.io / auth-secret: "mysecret"

Итак, полный пример конфигурации базовой аутентификации может выглядеть так:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: prometheus-dashboard
 namespace: monitoring
 annotations:
   kubernetes.io/ingress.class: traefik
   ingress.kubernetes.io/auth-type: "basic"
   ingress.kubernetes.io/auth-secret: "mysecret"
spec:
 rules:
 - host: dashboard.prometheus.example.com
   http:
     paths:
     - backend:
         serviceName: prometheus
         servicePort: 9090
  1. Вы можете применить пример следующим образом:

kubectl create -f prometheus-ingress.yaml -n мониторинг

Это должно работать без проблем.

...