Posted at

IngressでBasic認証を使いたい時のメモ

IngressでBasic認証を使うとき用のメモ。

ほぼ、以下ページのトレースです。

Basic Authentication - kubernetes/ingress-nginx - github

Basic Authentication - NGINX Ingress Controller


設定の流れ


htpasswdでパスワード生成

$ htpasswd -c auth foo

New password:
Re-type new password:
Adding password for user foo


secretの作成

$ kubectl create secret generic basic-auth --from-file=auth -n $namespace

secret/basic-auth created


作ったsecretの確認

$ kubectl get secret basic-auth -o yaml -n $namespace

apiVersion: v1
data:
auth: Zm9vOiRhcHIxJExQdVB2NmpTJEFObWV4NVloUmIwT1JGYXE0TjVYaS8K
kind: Secret
metadata:
name: basic-auth
namespace: $namespace
type: Opaque


マニフェストの作成


ingress.yaml

apiVersion: extensions/v1beta1

kind: Ingress
metadata:
name: ingress-with-auth
annotations:
# 認証タイプを指定
nginx.ingress.kubernetes.io/auth-type: basic
# 作成したsecret名を指定
nginx.ingress.kubernetes.io/auth-secret: basic-auth
# 認証時のメッセージ。なくても良さげ
nginx.ingress.kubernetes.io/auth-realm: "Authentication Required - foo"
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /
backend:
serviceName: http-svc
servicePort: 80


デプロイ

kubectl create -f ingress.yaml

以上で、Basic認証が有効になっているはずです。


参考ページ

Basic Authentication - kubernetes/ingress-nginx - github

Basic Authentication - NGINX Ingress Controller