在 IBM Cloud Kubernetes Service 中使用 IBM App ID 时不会触发身份验证过程
Authentication Process is not triggered when using IBM App ID in IBM Cloud Kubernetes Service
我正在尝试使用此功能: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
以下是重现示例的步骤:
首先按照文档中的描述在达拉斯创建一个至少有两个工作节点的新集群。请注意,为您的集群获取 public 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/”,但未触发身份验证过程,页面打开时未经身份验证。
我尝试了 link 中提到的步骤,这就是它 对我有效 的方式。
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
我在 App ID 服务的 authentication settings
添加了以下网页重定向 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
的必填字段之一不是 valid/missing
我正在尝试使用此功能: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
以下是重现示例的步骤:
首先按照文档中的描述在达拉斯创建一个至少有两个工作节点的新集群。请注意,为您的集群获取 public 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/”,但未触发身份验证过程,页面打开时未经身份验证。
我尝试了 link 中提到的步骤,这就是它 对我有效 的方式。
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
我在 App ID 服务的 authentication settings
添加了以下网页重定向 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
的必填字段之一不是 valid/missing