我是 Kubernetes 和 GKE 的新手。我有一些用 Spring Boot 2 编写并从 GitHub 部署到 GKE 的微服务。我想让这些服务安全,我想知道是否可以在我的网关微服务上使用入口来确保入口点的安全。我使用 HTTPS 创建了一个入口,但似乎我的所有健康检查都失败了。
是否可以仅通过使用入口而不更改 Spring Boot 应用程序来使我的架构安全?
我是 Kubernetes 和 GKE 的新手。我有一些用 Spring Boot 2 编写并从 GitHub 部署到 GKE 的微服务。我想让这些服务安全,我想知道是否可以在我的网关微服务上使用入口来确保入口点的安全。我使用 HTTPS 创建了一个入口,但似乎我的所有健康检查都失败了。
是否可以仅通过使用入口而不更改 Spring Boot 应用程序来使我的架构安全?
是的,根据您的情况,可以使用 GKE 入口,有一个关于如何逐步执行此操作的官方指南。
此外,这里是有关如何实施 Google 托管证书的分步指南。
另外,我知道我的回答有些笼统,但我只能在不了解您的 GKE 基础架构的情况下为您提供这么多帮助(例如您用于所述证书的 DNS 名称等)。
请记住,您必须直接在 GKE 基础架构上而不是在 GCP 端实现这一点,如果您在 GKE 之外修改或创建新内容但它与 GKE 相关联,您可能会看到您的部署在特定时间后回滚或停止一段时间后工作。
编辑:
我将在这里假设几件事,并且由于我没有您的 Spring Boot 2 部署 yaml 文件,因此我将用 nginx 部署替换它。
证书.yaml
apiVersion: networking.gke.io/v1beta1
kind: ManagedCertificate
metadata:
name: ssl-cert
spec:
domains:
- example.com
nginx.yaml
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
name: "nginx"
namespace: "default"
labels:
app: "nginx"
spec:
replicas: 1
selector:
matchLabels:
app: "nginx"
template:
metadata:
labels:
app: "nginx"
spec:
containers:
- name: "nginx-1"
image: "nginx:latest"
nodeport.yaml(请根据您的需要修改“targetPort:80”)
apiVersion: "v1"
kind: "Service"
metadata:
name: "nginx-service"
namespace: "default"
labels:
app: "nginx"
spec:
ports:
- protocol: "TCP"
port: 80
targetPort: 80
selector:
app: "nginx"
type: "NodePort"
入口证书.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
networking.gke.io/managed-certificates: ssl-cert
spec:
backend:
serviceName: nginx-service
servicePort: 80
请记住,假设您的 DNS 名称“example.com”指向您的负载均衡器外部 IP,创建和应用您的 SSL 证书可能需要一段时间。