Процесс аутентификации не запускается при использовании IBM App ID в IBM Cloud Kubernetes Service - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь использовать эту функцию: https://cloud.ibm.com/docs/services/appid?topic=appid-kube-auth#kube-auth

Я выполнил действия, описанные в документации, но процесс аутентификации не запущен.К сожалению, я не вижу никаких ошибок и не знаю, что еще делать.

Вот мой пример сервиса (nginx.yaml):

---
apiVersion: apps/v1 
kind: Deployment
metadata:
  name: nginx
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nginx
  replicas: 3 
  template: 
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  labels:
    app: nginx
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
  selector:
    app: nginx
  type: NodePort

Вот мой пример сервиса (ingress.yaml).Замените 'niklas-heidloff-4' на имя вашего кластера, а 'niklas-heidloff-appid' на имя вашего экземпляра службы идентификатора приложения.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-with-app-id
  annotations:   
    ingress.bluemix.net/appid-auth: "bindSecret=binding-niklas-heidloff-appid namespace=default requestType=web"
spec:
  tls:
  - hosts:
    - niklas.niklas-heidloff-4.us-south.containers.appdomain.cloud
    secretName: niklas-heidloff-4
  rules:
  - host: niklas.niklas-heidloff-4.us-south.containers.appdomain.cloud
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx
          servicePort: 80

Вот шаги по воспроизведению примера:

Сначала создайте новый кластер с как минимум двумя рабочими узлами в Далласе, как описано в документации.Обратите внимание, что для получения общедоступного IP-адреса для вашего кластера может потребоваться дополнительное время.

Затем создайте экземпляр службы App ID.

Затем вызовите следующие команды (замените 'niklas-heidloff-4'с именем вашего кластера):

$ ibmcloud login -a https://api.ng.bluemix.net
$ ibmcloud ks region-set us-south
$ ibmcloud ks cluster-config niklas-heidloff-4 (and execute export....)
$ ibmcloud ks cluster-service-bind --cluster niklas-heidloff-4 --namespace default --service niklas-heidloff-appid
$ kubectl apply -f nginx.yaml
$ kubectl apply -f ingress.yaml

После этого я могу открыть' https://niklas.niklas -heidloff-4.us-south.containers.appdomain.cloud / ', но аутентификациюпроцесс не запускается и страница открывается без аутентификации.

1 Ответ

2 голосов
/ 04 апреля 2019

Я попробовал шаги, упомянутые в ссылке , и вот как сработало для меня.

ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myingress
  annotations:
    ingress.bluemix.net/appid-auth: "bindSecret=binding-appid-ks namespace=default requestType=web serviceName=nginx idToken=false"
spec:
  tls:
    - hosts:
        - test.vidya-think-cluster.us-south.containers.appdomain.cloud
      secretName: vidya-think-cluster
  rules:
    - host: test.vidya-think-cluster.us-south.containers.appdomain.cloud
      http:
        paths:
          - path: /
            backend:
              serviceName: nginx
              servicePort: 80

Я добавил следующий URL-адрес веб-перенаправления в authentication settings службы идентификаторов приложений - http://test.vidya-think-cluster.us-south.containers.appdomain.cloud/appid_callback.

Теперь, когда вы пытаетесь получить доступ к приложению на http://test.vidya-think-cluster.us-south.containers.appdomain.cloud/, вы должны увидеть перенаправление на идентификатор приложения

Похоже, idToken=false является обязательным параметром, так как при запуске kubectl describe myingress

возникает ошибка

Ошибка : Не удалось применить аннотацию ingress.bluemix.net/appid-auth.Ошибка в формате аннотации: одно из обязательных полей недопустимо / отсутствует для аннотации ingress.bluemix.net/appid-auth

...