Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 通过https使用kubeconfig提供Kubernetes群集身份验证_Rest_Authentication_Kubernetes_Https_Kubeconfig - Fatal编程技术网

Rest 通过https使用kubeconfig提供Kubernetes群集身份验证

Rest 通过https使用kubeconfig提供Kubernetes群集身份验证,rest,authentication,kubernetes,https,kubeconfig,Rest,Authentication,Kubernetes,Https,Kubeconfig,我有一个库伯内特斯星系团。我使用googlecloud创建了集群,但没有使用GKE,而是使用GCE。我使用VM实例创建了一个主节点和两个工作节点Kubeadm与kube flannel.yml文件一起用于连接主节点和辅助节点。我正在使用我的Vm的公共ip和nodePort在postman中公开我的集群。我可以点击那个网址publicip:nodePort/adapter\u name。命中率正在达到我的吊舱,日志正在生成。以前使用minikube时,我使用了端口转发来公开我的端口。现在我不用了

我有一个库伯内特斯星系团。我使用
googlecloud
创建了集群,但没有使用GKE,而是使用GCE。我使用
VM实例创建了一个
主节点
和两个
工作节点
Kubeadm
kube flannel.yml
文件一起用于连接主节点和辅助节点。我正在使用我的
Vm的公共ip和nodePort在
postman
中公开我的集群。我可以点击那个网址
publicip:nodePort/adapter\u name
。命中率正在达到我的吊舱,日志正在生成。以前使用
minikube
时,我使用了
端口转发
来公开我的端口。现在我不用了

$HOME/.kube/config
位置中存在一个名为config的默认
kubeconfig
文件。它包含以下内容

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJ....
    server: https://10.128.0.12:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURFe....
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb.....
服务器
IP
https://10.128.0.12:6443
。我是否可以将此默认URL更改为身份验证所需的URL[我的rest api URL]

我的要求是在kubernetes吊舱中运行时,为我的应用程序启用的RESTAPI url提供身份验证

如何使用这个
kubeconfig
方法或者通过创建一个新的kubeconfig文件并使用它来验证我的RESTAPI url

我从以上两个博客中得到了一些想法,并试图实现这些想法,但没有一个能满足我的要求。通过邮递员使用任何JWT令牌进行身份验证也是可以接受的

Kubernetes版本:

Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.4", GitCommit:"d360454c9bcd1634cf4cc52d1867af5491dc9c5f", GitTreeState:"clean", BuildDate:"2020-11-11T13:17:17Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"} 
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.4", GitCommit:"d360454c9bcd1634cf4cc52d1867af5491dc9c5f", GitTreeState:"clean", BuildDate:"2020-11-11T13:09:17Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"} 

将此发布为
社区Wiki

I.符合Kubernetes API。 我是否可以将此默认URL(群集服务器IP地址)更改为验证我的rest api URL所需的URL

我不推荐这个
KUBECONFIG
文件用于组织有关群集、用户、名称空间、身份验证机制的信息,并存储有关与Kubernetes群集连接的信息。使用kubectl执行命令时,它会从此
KUBECONFIG
获取正确的通信信息

KUBECONFIG
中,您可以使用
X509客户端证书
或不同类型的
令牌
进行身份验证。更多详细信息请参见和

如果您对如何使用Beare令牌访问kubernetes API感兴趣,请查看

二,。访问客户端API 如果要将端点rest api公开为公共,可以使用:

在静态端口(NodePort)的每个节点的IP上公开服务。自动创建NodePort服务路由到的ClusterIP服务。您可以通过请求从集群外部联系NodePort服务:

使用云提供商的负载平衡器对外公开服务。自动创建外部负载平衡器路由到的NodePort和ClusterIP服务

<强>注释:< /强>裸金属Env,考虑使用使用< /P> Kubernetes没有为裸机集群提供网络负载平衡器(LoadBalancer类型的服务)的实现。Kubernetes提供的网络LB的实现都是调用各种IaaS平台(GCP、AWS、Azure…)的粘合代码。如果您没有在受支持的IaaS平台(GCP、AWS、Azure…)上运行,则负载平衡器在创建时将无限期地保持“挂起”状态

一旦您将api公开给外界(如有必要)

  • 您可以在客户端和服务器(api)端点之间使用相互TLS身份验证

  • 你可以用

作为替代解决方案,您可以考虑以REST API作为SIEDECAR作为附加验证,验证是否存在身份验证。 如果您对微服务之间的身份验证感兴趣,可以查看本文

如果您对istio感兴趣,请查看 Istio提供两种类型的身份验证:

  • 对等身份验证:用于服务对服务身份验证,以验证建立连接的客户端
  • 请求身份验证:用于最终用户身份验证,以验证附加到请求的凭据。Istio通过JSON Web令牌(JWT)验证和使用自定义身份验证提供程序或任何OpenID连接提供程序的简化开发人员体验实现请求级身份验证-

验证客户端api/端点url的最佳方法是使用
Istio


我将通过Istio提供安全性的整个过程记录在一个PDF文件中,并附上该文件。Istio用于验证令牌,而Key斗篷用于生成JWT令牌。

此群集是否在您的本地环境中?您使用的是Kubernetes版本。是Kubeadm还是Minikube?您将如何在外部公开您的集群?我使用谷歌云创建了集群,但没有使用GKE。我使用vm实例创建了一个主节点和两个工作节点。Kubeadm与kube-flannel.yml文件一起用于连接主节点和辅助节点。我正在使用我的虚拟机的公共ip和nodePort在postman中公开我的集群。我可以点击那个网址。publicip:nodePort/adapter\u名称。命中率正在达到我的吊舱,日志正在生成。当我以前使用minikube时,我使用端口转发来公开我的端口。现在我没有使用那个客户端版本:Version.Info{Major:“1”,Minor:“19”,GitVersion:“v1.19.4”,GitCommit:“d360454c9bcd1634cf4cc52d1867af5491dc9c5f”,gitRestate:“clean”,BuildDate:“2020-11-11T13:17:17Z”,GoVersion:“go1.15.2”,编译器:“gc”,平台:“linux/amd64”}服务器版本:Version.Info{Major:“1”,Minor:“19”,GitVersion:“v1.19.4”,GitCommit:“D360454C9BCD1634CF4C52D1867AF5491DC9C5F”,GitTreeState:“清洁”,建造日期:“2020年”-