我的应用程序结构使用 GKE 和 CloudFlare。它看起来像这样:
CloudFlare -> GKE -> Ingress -> My app running nginx
我在 CloudFlare 中使用了灵活的 SSL,所以只有用户和 CloudFlare 之间的连接使用 HTTPS,其余的都使用 HTTP。我知道的CloudFlare设置X-Forwarded-Proto到https在这种情况下,但是当我看到我的nginx的应用程序正在接收头,它得到X-Forwarded-Proto: http。
我很确定这发生在 GKE 的负载均衡器和 Ingress 之间,因为我可以看到CF-Visitor: {"scheme": "https"}CloudFlare 配置的标头设置为 HTTPS。我的理解是,这意味着 CloudFlare 确实设置X-Forwarded-Proto为https,但在此过程中它被覆盖了。
不幸的是,我无法从 GKE 负载均衡器获取标头日志(似乎他们根本不记录X-Forwarded-*标头),所以我无法 100% 确认 CloudFlare 实际上正在设置标头,但我会如果不是,那就太惊讶了。
如果这是真的,Google Cloud 将X-Forwarded-Proto使用http. 我怎样才能避免这样做?
编辑:我在https://cloud.google.com/community/tutorials/nginx-ingress-gke 之后配置了 nginx 入口而不是 gce ,并且X-Forwarded-Proto设置https为预期。这是另一个信号,表明它gce是覆盖X-Forwarded-Proto标头的入口控制器。
如果我有一个 GAE Flex 应用程序,它仅供内部使用而不打算用于任何面向公众的用途,那么保护它的最佳方法是什么?默认情况下,*.appspot.com 域公开一个公共 HTTP/S 端点。
如果我将默认 App Engine 防火墙规则设置为明确拒绝所有 HTTP 流量,那么我如何从其他 GCE 实例或其他项目中的其他 GAE Flex 应用程序访问应用程序?
我最初认为编辑app.yaml文件以将实例启动到具有自己的 GCE 防火墙规则(使用默认入口拒绝)的私有 VPC 就足够了,但由于请求通过云负载均衡器 IP 的事实,它仍然允许外部流量.
我查看的下一个选项是 Cloud IAP,它只允许经过身份验证的用户和服务帐户访问我的应用程序。这可能会起作用,但是,如果我需要从没有互联网访问权限的私有 VPC 访问我的应用程序,如果我正确理解该服务将无法工作,因为请求仍然必须通过 HTTP 来。
那么我能做些什么来确保绝对没有对应用引擎的公开访问,同时仍然允许内部资源访问它?
我正在使用 GCP 负载平衡并希望将 HTTP 重定向到 HTTPS 链接。但是想不通。
我的负载平衡看起来像:
Load balancer name
Front End:
Protocols IP Certificate
HTTP x.x.x.x:80 -
HTTPS x.x.x.x:443 example-com
Back End:
Hosts Paths Backend
example.com /* webs-backend
Run Code Online (Sandbox Code Playgroud)
我的 webs 后端是一个简单的 nginx web 服务器,它侦听 TCP/80 端口。Nginx 服务器配置:
server {
server_name example.com;
root /var/www/html;
<snip>
}
Run Code Online (Sandbox Code Playgroud)
现在有了这个 GCP 负载平衡设置,我可以访问 HTTP 和 HTTPS,尝试配置 Nginx 以将客户端 301 重定向发送到 HTTPS,但它不起作用。重定向过多。
问题是,如何配置 GCP 负载平衡以正确将 HTTP 重定向到 HTTPS?
我想知道如何在 Google VP 实例上设置像 postfix 这样的邮件服务器。
我正在运行 Ubuntu 16.04(和 LAMP 堆栈),无法让邮件服务器从网站发送电子邮件。
我已经安装了postfix,并打开了端口25,但没有运气。
关于如何进行的任何想法?
错误日志:网络不可达、连接超时
我们有一个从办公室到 Google Cloud 的 VPN 隧道。它工作正常,我们能够访问虚拟机和容器(kubernetes)。
问题是无法使用此隧道访问 SQL 实例。您可以跳过虚拟机实例,但无法直接连接。显然,问题在于 SQL 实例没有直接连接到 VPC 子网。我们尝试在 VPC 的“Cloud Router”上强制路由,但没有成功。我们尝试为所有 VPC 范围添加“允许所有”防火墙规则,但事实并非如此。
知道如何通过 VPN 隧道到达 SQL 实例吗?
我不知道在哪里寻找提示。
我们已经在开发集群中使用 Helm Chart安装了 gitlab-runners。大多数情况下,这是有效的,但在过去一周左右的时间里,我们经历了 Pod 陷入状态Pending而没有任何进一步日志的情况。在某个我无法更好定义的时刻,所有 Pod 都被调度到节点上,然后下一批再次陷入困境Pending。
我们使用 GKE,并为 gitlab-runner pod 设置了一个可抢占节点的节点池。我们运行 kubernetes v1.15.4-gke.18。
我们知道 Pod 被卡住的原因有多种Pending,但我总是期望在运行kubectl describe <GITLAB_RUNNER_POD>或kubectl get events. 问题是,没有。没有事件。
我们启用了 stackdriver 日志记录,我可以Kubernetes Apiservice Requests在下面看到日志Kubernetes Cluster,但它们对我来说没有任何有意义的内容。
有什么想法去哪里看吗?
我正在尝试删除属于已灭绝的 k8s 入口的转发规则、目标代理、url 映射和后端服务。
我成功删除了转发规则和目标代理,但是当我去删除 url-map 时,我得到以下信息:
gcloud compute url-maps delete k8s-um-prism-feature-password-workflow-unit-tests-prism-ingres0 --quiet
ERROR: (gcloud.compute.url-maps.delete) Could not fetch resource:
- The url_map resource 'projects/project-id/global/urlMaps/k8s-um-prism-feature-password-workflow-unit-tests-prism-ingres0' is already being used by 'projects/project-id/global/targetHttpProxies/k8s-tp-prism-feature-password-workflow-unit-tests-prism-ingres0
Run Code Online (Sandbox Code Playgroud)
k8s-tp-prism-feature-password-workflow-unit-tests-prism-ingres0不是它所属的目标代理的名称,但我继续尝试删除它并得到:
gcloud compute target-https-proxies delete k8s-tp-prism-feature-password-workflow-unit-tests-prism-ingres0 --quiet
ERROR: (gcloud.compute.target-https-proxies.delete) Could not fetch resource:
- The resource 'projects/project-id/global/targetHttpsProxies/k8s-tp-prism-feature-password-workflow-unit-tests-prism-ingres0' was not found
Run Code Online (Sandbox Code Playgroud) kubernetes google-cloud-platform google-kubernetes-engine ingress
任何人都知道如何在日志gcloud记录命令行中按时间戳过滤日志条目?从谷歌云网站 - https://cloud.google.com/logging/docs/reference/tools/gcloud-logging,我学会了通过命令读取日志
gcloud logging read "resource.type=gce_instance AND logName=projects/[PROJECT_ID]/logs/syslog AND textPayload:SyncAddress" --limit 10 --format json
我想知道如何按时间戳过滤。我需要阅读特定时期的日志。
我需要允许来自我的国家的流量。我该怎么做?我知道我可以创建指定 IP 范围的规则,但需要添加超过 1600 个 IP 范围。有什么“简单”的方法吗?