Я запускаю приложение в службе kubernetes на Azure и настроил его на входной контроллер NGINX и IP-адрес publi c с полным доменным именем. Все это работало нормально.
Затем я захотел повысить безопасность, используя oauth2-proxy для входа в систему третьей стороны. Я хотел бы сохранить мои настройки на один входной контроллер и один oauth2_proxy для каждого пространства имен с несколькими приложениями, работающими вместе. Поскольку Azure не поддерживает использование поддоменов для этого, я использовал пути для маршрутизации к правильному приложению. Я видел примеры , например , о том, как использовать один oauth2_proxy для нескольких поддоменов, но можно ли вместо этого настроить его на работу с несколькими путями?
Настройка
Это текущая рабочая настройка только с одним приложением, расположенным в root /
. Я хотел бы переключиться на приложение, указав путь c и возможность запуска нескольких приложений по разным путям. например. /my-app
, /another-app
et c.
oauth2-proxy-config.yaml
config:
existingSecret: oauth2-proxy-creds
extraArgs:
whitelist-domain: my-fqdn.uksouth.cloudapp.azure.com
cookie-domain: my-fqdn.uksouth.cloudapp.azure.com
email-domain: example.com
provider: github
ingress:
enabled: true
path: /oauth2
hosts:
- my-fqdn.uksouth.cloudapp.azure.com
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod # cert-manager cluster issuer set up for Let's Encrypt
tls:
- secretName: my-fqdn-tls # TLS generated by letsencrypt-prod
hosts:
- my-fqdn.uksouth.cloudapp.azure.com
Это устанавливается с помощью следующей команды helm
helm upgrade oauth2-proxy --install stable/oauth2-proxy --namespace $NAMESPACE --reuse-values --values oauth2-proxy-config.yaml
app-ingress.yaml
apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
# nginx.ingress.kubernetes.io/rewrite-target: /$2 # Not working with the /oauth2 path and not needed when using root path for the app
nginx.ingress.kubernetes.io/auth-url: "https://my-fqdn.uksouth.cloudapp.azure.com/oauth2/auth"
nginx.ingress.kubernetes.io/auth-signin: "https://my-fqdn.uksouth.cloudapp.azure.com/oauth2/start?rd=https%3A%2F%2F$host$request_uri"
spec:
tls:
- secretName: my-fqdn-tls
hosts:
- my-fqdn.uksouth.cloudapp.azure.com
rules:
- host: my-fqdn.uksouth.cloudapp.azure.com
http:
paths:
- path: / # I would like to be able to use something like '/path1(/|$)(.*)' instead of root.
backend:
serviceName: my-app
servicePort: 80