1

我正在尝试使用此功能: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”替换为您的 App ID 服务实例的名称。

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/ ”,但不会触发身份验证过程,并且该页面无需身份验证即可打开。

4

1 回答 1

2

我尝试了链接中提到的步骤,这就是它对有用的方式。

入口.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

authentication settings我在App ID 服务中添加了以下 Web 重定向 URL - http://test.vidya-think-cluster.us-south.containers.appdomain.cloud/appid_callback.

现在,当您尝试访问应用程序时,http://test.vidya-think-cluster.us-south.containers.appdomain.cloud/您应该会看到重定向到 App ID

看起来idToken=false是一个强制参数,因为运行时出现错误kubectl describe myingress

错误无法应用 ingress.bluemix.net/appid-auth 注释。错误注释格式错误:注释 ingress.bluemix.net/appid-auth 的必填字段之一无效/缺失

于 2019-04-04T06:34:55.757 回答