如何从AppEngine开发服务器访问k8s服务

时间:2018-07-05 19:10:54

标签: google-app-engine kubernetes ssl-certificate google-kubernetes-engine

太多的挣扎,我需要分享。

需要:GETPOST上的https://ip_cluster_/apis/v1/xxx / dev_appserver(用于本地测试)

错误:Invalid and/or missing SSL certificate for URL

原因:k8s集群端点使用自动签名证书

尝试:

  • 使用带有入口的“让我们加密”证书。失败,因为让我们加密需要DNS
  • 要求AppEngine进行不安全的连接:在PYTHONHTTPSVERIFY: 0中与main.app全局,在validate_certificate=None中与url_fetch本地,以及与{{1} }。失败,因为AppEngine中不允许与自动签名证书进行不安全的SSL连接。 PR:https://github.com/GoogleCloudPlatform/python-compat-runtime/pull/124
  • verify=False获取证书/密钥,解码base64,写入文件,并将它们与requests中的https://container.googleapis.com/v1beta1/projects/<my-gcp-project>/locations/<location>/clusters/<my-cluster>一起使用。失败,因为在AppEngine中禁用了本地证书支持。配合使用curl效果很好。显然。
  • 获取上述证书/密钥,并将其添加为Google Cloud SDK中的自定义证书:cert=('cluster_k8s.cert', 'cluster_k8s.key')。由于生活艰难而失败。
  • 获取上述证书/密钥,并将其附加到Google Cloud SDK之一: requests 由于生活更加艰难而失败。

1 个答案:

答案 0 :(得分:0)

解决方案:使用kubectl proxy --port=8001之类的kubectl代理

http://localhost:8001的http中知道可以访问k8s服务

在AppEngine中用以下代码切换端点:

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'): # Production else: # Local development server