我正试图为GCP Kubernetes Engine开发一个hello-world原型,该原型使用IAP为特定用户分配一个容器,并仅将该用户的所有请求路由到此容器。它是为了在完全隔离的环境中保护用户敏感信息。
按照@wilrof的建议,我遵循了"为GKE启用IAP",并在BackendConfig中添加了一个IAP块,如下所示;
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
name: config-default
namespace: my-namespace
spec:
iap:
enabled: true
oauthclientCredentials:
secretName: my-secret
当我运行"kubectl apply-f backendconfig.yaml"时,它抱怨在版本"cloud.google.com/v1"中没有匹配的"backendconfig"。我把第一行改为cloud.gooble.com/v1beta1,然后它说找不到名称空间"my namespace"。不知道从这里去哪里。
如评论中所述:
第一个指针是为GKE启用IAP,您可以启用IAP并使用Backendconfig设置入口以将其引导到服务/pod。
然后您更新了您的问题,以下是BackendConfig
:的故障排除
注:GKE版本1.16.8-GKE.3及更高版本支持cloud.google.com/v1 CRD API版本。
所有较低的GKE版本都应该使用cloud.google.com/v1beta1。
-
由于您尝试使用v1运行并获得
no matches for kind "BackendConfig" in version "cloud.google.com/v1"
,我认为您运行的版本早于1.16.8-gke.3。 -
至于错误
namespaces "my-namespace" not found
,请确保您的工作命名空间被称为"my namespace",记住kubernetes的默认命名空间是default
。
v1.15.1-gke.12:上的复制
- 我首先尝试部署为v1,如您的
backendconfig.yaml
示例中所示:
$ kubectl apply -f backendconfig.yaml
error: unable to recognize "backendconfig.yaml": no matches for kind "BackendConfig" in version "cloud.google.com/v1"
- 更改为
v1beta1
并应用:
$ cat backendconfig.yaml
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: config-default
namespace: my-namespace
spec:
iap:
enabled: true
oauthclientCredentials:
secretName: my-secret
$ kubectl apply -f backendconfig.yaml
Error from server (NotFound): error when creating "backendconfig.yaml": namespaces "my-namespace" not found
- 检查当前配置的命名空间:
owilliam@owilliam:~/GKE/backendconfig$ kubectl get namespaces
NAME STATUS AGE
default Active 5m35s
kube-node-lease Active 5m37s
kube-public Active 5m37s
kube-system Active 5m37s
- 我将创建名称空间
my-namespace
并尝试再次应用:
$ kubectl create namespace my-namespace
namespace/my-namespace created
$ kubectl apply -f backendconfig.yaml
backendconfig.cloud.google.com/config-default created
如果您还有任何问题,请添加评论,我们将进一步挖掘。