Zero downtime khi chuyển từ self-managed SSL certificate sang sử dụng Google-managed SSL certificate trên Cloud Load Balancing

ssl google cloud platform Trong bài này chúng ta sẽ thực hiện chuyển từ self-managed SSL certificates sang Google-managed SSL certificates trên Cloud Load Balancing mà không bị downtime.

Giả sử chúng ta đang có một self-managed SSL certificates của domain example.com tên là example-com-self-managed-cert, đang sử dụng cho target HTTPS proxy tên là example-com-target-proxy.

$ gcloud compute ssl-certificates list
NAME                                      TYPE          CREATION_TIMESTAMP             EXPIRE_TIME                    MANAGED_STATUS
example-com-self-managed-cert             SELF_MANAGED  2022-10-04T00:00:00.000-07:00  2022-11-04T00:00:00.000-00:00
$ gcloud compute target-https-proxies list
NAME                                         SSL_CERTIFICATES                          URL_MAP                            CERTIFICATE_MAP
example-com-target-proxy                     example-com-self-managed-cert             example-com-url-map

Giờ ta tạo một Google-managed SSL certificates cho domain example.com.

$ gcloud compute ssl-certificates create "example-com-google-managed-cert" \
  --domains "example.com"

Ta sẽ chưa thể thay thế ngay example-com-google-managed-cert cho example-com-self-managed-cert vì GCP sẽ mất từ 60 tới 90 phút để tạo xong certificate. Nếu cố tình thay thế, user có thể gặp lỗi với SSL khi truy cập vào dịch vụ. Tuy nhiên GCP thì lại bắt buộc ta phải attach example-com-google-managed-cert vào một target proxy thì mới có thể tạo thành công certificate, nếu không SSL certificate sẽ ở trạng thái FAILED_NOT_VISIBLE.

Giải pháp ở đây là attach đồng thời cả 2 certicates vào cùng một target proxy, ở đây có nghĩa là attach cả 2 certificates vào example-com-target-proxy.

$ gcloud compute target-https-proxies update "example-com-target-proxy \
  --ssl-certificates "example-com-self-managed-cert,example-com-google-managed-cert"

Với cách này, user vẫn truy cập vào ứng dụng của ta một cách bình thường, trong khi đó certicate vẫn được tạo.

Chờ cho tới khi example-com-google-managed-cert được tạo thành công (ở trạng thái ACTIVE) thì ta bỏ self-managed certificate khỏi target proxy.

$ gcloud compute ssl-certificates list \
--filter="outbound-dashboard-beta-lb-crt"
NAME                             TYPE     CREATION_TIMESTAMP             EXPIRE_TIME                    MANAGED_STATUS
example-com-google-managed-cert  MANAGED  2022-11-04T01:07:08.657-07:00  2023-02-01T23:39:11.000-08:00  ACTIVE
    example.com: ACTIVE
$ gcloud compute target-https-proxies update "example-com-target-proxy \
  --ssl-certificates "example-com-google-managed-cert"

Đọc thêm

  1. https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs
  2. https://cloud.google.com/load-balancing/docs/ssl-certificates/troubleshooting

#gcp #devops