俺では全くわからなかったRDS 証明書更新のトラップと回避方法
俺です。
普段RDS Auroraをご利用されている俺達は、最近AWSコンソールにアクセスする度に表示されるRDS SSL/TLS証明書交換の通知と毎日のようにチュッチュしていると思います。1週間後にリマインド送信フフッ...RDS♥⇔♥俺みたいな感じですよね。みんなもきっとそう。
なので証明書の強制ローテーションに伴うrebootがあるってことは誰もが知ってるので書きませんが、
緊急かつ重要なお知らせ ー Amazon RDS、Aurora、DocumentDB の証明書をローテーションしてくださいを見てメンテRTAにチャレンジした結果ドツボにハマって絶望したので、近い未来に同じ轍を踏みそうな世界のどこかにいる会ったことのない名前も知らない俺たちのために記録を残しておきます。
メンテタイムを短縮したい。もしくはCA交換時の再起動をコントローラブルにしたい方は参考にどうぞ。
- 対象RDS Aurora: MySQL/PostgreSQL
RDS 証明書更新のアナウンスに期待した結果
アナウンス記事上は2020 年 1 月 14 日 ー この日以降、作成されるインスタンスは、新しい証明書 (CA-2019) を使用するようになります。必要性がある場合は、一時的に古い証明書に戻すこともできます。
とあります。
と、いうことは...Aurora Clusterに新しくInstance追加したらCA2019として起動してくるんじゃないの。
と、いうことは...CA-2015なRDSインスタンスをCA-2019に変更せずに、新しくRDSインスタンスをクラスタへ追加しておけばCA-2019で起動されるってこと...?
と、いうことは...Failoverしたら終わりってメンテタイム爆縮できるやん最高やんけ抱いて!。と思ってしまいますが、実際にCA-2019のインスタンスで起動させるには...
- Writerインスタンスの証明書が
CA-2019
になっていることが前提です。 - Writerインスタンスの証明書が
CA-2015
だと新規追加したReaderインスタンスの証明書はCA-2015
のままです。はい絶望します。 -
--no-certificate-rotation-restart
でwriterのCA-2019に変更しておくだけでもOKです(内部でCAフラグがCA-2019になるため)
超図解
よってRDS再起動を最小限に抑えて証明書を更新するやり方は以下です。
1.RDS AuroraのWriterインスタンスを--no-certificate-rotation-restart
指定でrds-ca-2019に更新する。
aws rds modify-db-instance \
--db-instance-identifier chucchu-0 \
--ca-certificate-identifier rds-ca-2019 \
--no-certificate-rotation-restart \
--apply-immediately
2.Readerインスタンスを追加する
- chucchu-ca2019-1と2を追加します。
- CA-2019として起動してくれます。
aws rds describe-db-instances --db-instance-identifier chucchu-0 --query DBInstances[].CACertificateIdentifier --output text
rds-ca-2019
aws rds describe-db-instances --db-instance-identifier chucchu-1 --query DBInstances[].CACertificateIdentifier --output text
rds-ca-2015
aws rds describe-db-instances --db-instance-identifier chucchu-ca2019-1 --query DBInstances[].CACertificateIdentifier --output text
rds-ca-2019
aws rds describe-db-instances --db-instance-identifier chucchu-ca2019-2 --query DBInstances[].CACertificateIdentifier --output text
rds-ca-2019
3.Writerフェイルオーバーを実行します
aws rds failover-db-cluster --db-cluster-identifier chucchu --target-db-instance-identifier chucchu-ca2019-1
4.CA2015のReaderインスタンスを削除します。
chucchu-0と1を消しますさようならー。クラスタごと消さないようにオペミス考慮してクラスタのDeletion Protectionは仕掛けておきましょう
terraformを使う場合
今回試さなかったけどAWS Provider 2.44以上でサポートされたca_cert_identifierを使えばWriterのCAがCA-2015のままでもCA-2019のReaderインスタンス追加いけるんじゃないのって思ってます
- terraform AWS Providerを2.44以上にverupする
- ca_cert_idenfierを使う
- terraform applyして既存aws_rds_clusterにCA-2019なaws_rds_cluster_instanceを追加する
- Writer Failoverする
- aws_rds_clusterからCA-2015のaws_rds_cluster_instanceを削除する
- 抱いて!!
次は混乱しないようにまた証明書の有効期限が近づくまでアディオス
完
Author And Source
この問題について(俺では全くわからなかったRDS 証明書更新のトラップと回避方法), 我々は、より多くの情報をここで見つけました https://qiita.com/gamisan9999/items/f392a99b11b02632e843著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .