Zero downtime khi chuyển từ self-managed SSL certificate sang sử dụng Google-managed SSL certificate trên Cloud Load Balancing
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.
- Self-managed SSL certificate: SSL certificates chúng ta tự mua, tự quản lý, sau đó upload lên GCP để áp dụng cho Cloud Load Balancing. Sau này khi gia hạn certificates thì chúng ta sẽ phải cập nhật lại trên GCP. Có một số bên cung cấp SSL certificates miễn phí như Let's Encrypt, cứ mỗi 90 ngày thì certificates sẽ phải được cập nhật một lần.
- Google-managed SSL certificates: SSL certificates do Google quản lý. Các việc như gia hạn, cập nhật certificates cho Cloud Load Balancing đều do Google làm, chúng ta không cần phải bận tâm gì.
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="example-com-google-managed-cert"
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"