Nginx Kubernetes-使用cloudflare代理将群集公开给外部访问

Nginx Kubernetes-使用cloudflare代理将群集公开给外部访问,nginx,networking,kubernetes,kubernetes-networking,Nginx,Networking,Kubernetes,Kubernetes Networking,我目前有以下设置: Cloudflare https代理dns,将所有流量路由到我的服务器(使用Cloudflare源CA进行端到端[客户端->代理和代理->服务器]加密) Nginx反向代理,充当到我的服务器的所有流量的SSL终端(我相信是原始签名证书) Nginx将任何进入kube.my-domain.com的内容代理到我的kubeapi服务器,如下所示:proxy\u passhttps://127.0.0.1:6443 kubeapi在我的服务器上运行 目前,通过在我的kubecon

我目前有以下设置:

  • Cloudflare https代理dns,将所有流量路由到我的服务器(使用Cloudflare源CA进行端到端[客户端->代理和代理->服务器]加密)
  • Nginx反向代理,充当到我的服务器的所有流量的SSL终端(我相信是原始签名证书)
  • Nginx将任何进入kube.my-domain.com的内容代理到我的kubeapi服务器,如下所示:
    proxy\u passhttps://127.0.0.1:6443
  • kubeapi在我的服务器上运行
目前,通过在我的kubeconfig中指定以下内容,我可以很好地连接到集群:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: REDACTED
    server: https://127.0.0.1:6443  <-----------------------------
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    namespace: test-namespace
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
现在,我假设这是因为我的流量必须通过cloudflare的代理,并且一路上有不同的证书。所以我尝试附加--unsecure skip tls verify=true并得到以下响应:

user@master:~$ kubectl get deployments --insecure-skip-tls-verify=true
error: the server doesn't have a resource type "deployments"
所以我查了一下,发现很多时候都是因为RBAC(尽管我应该作为kubernetes管理员进行身份验证,这在我本地连接时有效…)

我做错了什么?另外,公开集群并确保其安全的最佳方法是什么

我觉得这与NGINX上的SSL终止有关,它删除了api服务器识别我所必需的内容

谢谢

更新:看起来cloudflare proxy pr NGINX正在剥离身份验证证书和密钥,因此导致请求的用户变得匿名。还在调查这件事

无法连接到服务器:x509:未知签名的证书 权威

上述错误表示端点提供的服务器证书未由kubeconfig文件
证书颁发机构数据
部分中的证书颁发机构签名。在kubeconfig中,您需要配置正确的证书颁发机构(CA)

无法连接到服务器:x509:未知签名的证书 权威


上述错误表示端点提供的服务器证书未由kubeconfig文件
证书颁发机构数据
部分中的证书颁发机构签名。在kubeconfig中,您需要配置正确的证书颁发机构(CA)。

我会尝试这样做,但是--unsecure skip tls verify=true是否会跳过这一需要?感谢您的快速响应,我将在此期间尝试此操作,并向您报告我是否也需要更改服务器上的CA配置?我仍然收到相同的问题您是如何设置群集的?我会说使用相同的ca生成所有certsI使用的kubeadm init,如下指南所示:在我的kubeconfig中,我放置了以下根ca:是否正确?我还尝试了nginx使用的签名证书来终止ssl,但是没有luckI会尝试,但是--unsecure skip tls verify=true不需要吗?感谢您的快速响应,我将在此期间尝试此操作,并向您报告我是否也需要更改服务器上的CA配置?我仍然收到相同的问题您是如何设置群集的?我会说使用相同的ca生成所有certsI使用的kubeadm init,如下指南所示:在我的kubeconfig中,我放置了以下根ca:是否正确?我还尝试了nginx用来终止ssl的签名证书,但没有成功
user@master:~$ kubectl get deployments --insecure-skip-tls-verify=true
error: the server doesn't have a resource type "deployments"
I0317 00:41:09.281404   31989 loader.go:375] Config loaded from file:  /home/user/.kube/config
I0317 00:41:09.281813   31989 round_trippers.go:423] curl -k -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubectl/v1.17.3 (linux/amd64) kubernetes/06ad960" 'https://kube.my-domain.com/api?timeout=32s'
I0317 00:41:09.493885   31989 round_trippers.go:443] GET https://kube.my-domain.com/api?timeout=32s 403 Forbidden in 212 milliseconds
I0317 00:41:09.493921   31989 round_trippers.go:449] Response Headers:
I0317 00:41:09.493970   31989 round_trippers.go:452]     Set-Cookie: REDACTED; expires=Thu, 16-Apr-20 04:41:09 GMT; path=/; domain=.my-domain.com; HttpOnly; SameSite=Lax; Secure
I0317 00:41:09.493991   31989 round_trippers.go:452]     Expect-Ct: max-age=604800, report-uri="REDACTED"
I0317 00:41:09.494002   31989 round_trippers.go:452]     Server: cloudflare
I0317 00:41:09.494027   31989 round_trippers.go:452]     Cf-Ray: REDACTED
I0317 00:41:09.494065   31989 round_trippers.go:452]     Date: Tue, 17 Mar 2020 04:41:09 GMT
I0317 00:41:09.494070   31989 round_trippers.go:452]     X-Content-Type-Options: nosniff
I0317 00:41:09.494091   31989 round_trippers.go:452]     Cf-Cache-Status: DYNAMIC
I0317 00:41:09.494112   31989 round_trippers.go:452]     Content-Type: application/json
I0317 00:41:09.498893   31989 request.go:1017] Response Body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"forbidden: User \"system:anonymous\" cannot get path \"/api\"","reason":"Forbidden","details":{},"code":403}
I0317 00:41:09.503266   31989 round_trippers.go:423] curl -k -v -XGET  -H "Accept: application/json, */*" -H "User-Agent: kubectl/v1.17.3 (linux/amd64) kubernetes/06ad960" 'https://kube.my-domain.com/apis?timeout=32s'
I0317 00:41:09.640948   31989 round_trippers.go:443] GET https://kube.my-domain.com/apis?timeout=32s 403 Forbidden in 137 milliseconds
I0317 00:41:09.640992   31989 round_trippers.go:449] Response Headers:
I0317 00:41:09.641000   31989 round_trippers.go:452]     Date: Tue, 17 Mar 2020 04:41:09 GMT
I0317 00:41:09.641006   31989 round_trippers.go:452]     Content-Type: application/json
I0317 00:41:09.641011   31989 round_trippers.go:452]     Cf-Cache-Status: DYNAMIC
I0317 00:41:09.641016   31989 round_trippers.go:452]     Expect-Ct: max-age=604800, report-uri="REDACTED"
I0317 00:41:09.641021   31989 round_trippers.go:452]     Set-Cookie: REDACTED; expires=Thu, 16-Apr-20 04:41:09 GMT; path=/; domain=.my-domain.com; HttpOnly; SameSite=Lax; Secure
I0317 00:41:09.641027   31989 round_trippers.go:452]     X-Content-Type-Options: nosniff
I0317 00:41:09.641031   31989 round_trippers.go:452]     Server: cloudflare
I0317 00:41:09.641056   31989 round_trippers.go:452]     Cf-Ray: REDACTED