Безопасность Spring Boot по протоколу HTTP (HTTPS) с Kubernetes Ingress - PullRequest
0 голосов
/ 06 мая 2020

Я новичок в Kubernetes и GKE. У меня есть несколько микросервисов, написанных в Spring Boot 2 и развернутых с GitHub на GKE. Я хотел бы сделать эти службы безопасными, и я хочу знать, можно ли использовать ingress на моем микросервисе шлюза, чтобы сделать точку входа безопасной именно так. Я создал вход с помощью HTTPS, но похоже, что все мои проверки работоспособности не работают.

Можно ли обезопасить мою архитектуру, просто используя входящий трафик и не меняя приложения весенней загрузки?

1 Ответ

1 голос
/ 07 мая 2020

Да, с учетом вашего сценария можно было бы использовать вход GKE, есть официальное руководство о том, как это сделать шаг за шагом.

Кроме того, вот шаг за шагом. step руководство о том, как реализовать сертификаты, управляемые Google.

Кроме того, я понимаю, что мой ответ является несколько общим, но я могу только помочь вам, не зная вашей инфраструктуры GKE (например, вашего DNS имя для указанного сертификата среди прочего).

Помните, что вы должны реализовать это непосредственно в своей инфраструктуре GKE, а не на стороне GCP, если вы изменяете или создаете что-то новое вне GKE, но связанное с GKE, вы может увидеть, что либо ваше развертывание откатилось через определенное время, либо оно перестало работать через определенное время.

Изменить:

Я предполагаю здесь несколько вещей, и поскольку у меня нет вашего YAML-файл развертывания Spring Boot 2, я заменю его развертыванием nginx.

cert.yaml

apiVersion: networking.gke.io/v1beta1
kind: ManagedCertificate
metadata:
  name: ssl-cert
spec:
  domains:
    - example.com

nginx .yaml * 102 0 *

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"

ingress-cert.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 может занять некоторое время.

...