Как добавить аутентификацию в сервис k8s - PullRequest
0 голосов
/ 04 августа 2020

У меня есть приложение типа NodePort. Могу ли я добавить аутентификацию без перезаписи развертываний? Может быть, для этого есть простой пример входящего трафика yaml?

1 Ответ

1 голос
/ 12 августа 2020

NGINX Ingress Controller имеет множество способов аутентификации, например, самый простой Basi c Authentication , который использует секрет, содержащий файл, созданный с помощью htpasswd.

Для создания секрета:

$ htpasswd -c auth foo
New password: <bar>
New password:
Re-type new password:
Adding password for user foo
$ kubectl create secret generic basic-auth --from-file=auth
secret "basic-auth" created
$ kubectl get secret basic-auth -o yaml
apiVersion: v1
data:
  auth: Zm9vOiRhcHIxJE9GRzNYeWJwJGNrTDBGSERBa29YWUlsSDkuY3lzVDAK
kind: Secret
metadata:
  name: basic-auth
  namespace: default
type: Opaque

Для использования в правиле Ingress:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-with-auth
  annotations:
    # type of authentication
    nginx.ingress.kubernetes.io/auth-type: basic
    # name of the secret that contains the user/password definitions
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    # message to display with an appropriate context why the authentication is required
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - foo'
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /
        backend:
          serviceName: http-svc
          servicePort: 80

Примеры также доступны на ingress- nginx странице примеров аутентификации

...