※ 本記事は、Guido Ferreyraによる”Using Velero to back up your OKE cluster or migrate your workloads from AKS and EKS“を翻訳したものです。
2023年8月16日
Container Engine for Kubernetes (OKE)への移行は、Kubernetesクラスタの実行コストを削減するのに役立ちます。現在のワークロードをOracle Cloud Infrastructure (OCI)に移行する方法を疑問に思うかもしれませんが、それには答えがあります。Veleroは、安全なバックアップとリストア、ディザスタ・リカバリの実行、Kubernetesクラスタ・リソースと永続ボリュームの移行を行うためのオープン・ソース・ツールです。様々なクラウド・プロバイダに異なるプラグインがあります。
OCI Object StorageバケットはS3互換であるため、ソース・クラスタがホストされている場所に関係なく、Amazon Web Services (AWS)プラグインを使用してOCIにバックアップできます。Veleroを使用すると、ポッド、デプロイメント、シークレット、永続ボリューム、クレーム、サービスなどのワークロードをMicrosoft Azure Kubernetes Service (AKS)またはAWS Elastic Kubernetes Service (EKS)からOKEにシームレスに移行できます。また、OKEクラスタのポイントインタイム・バックアップを作成し、新しいもの、別のリージョンなどにリストアすることもできます。
Velero OKEソリューションの概要

オラクルのソリューションは、デプロイメント、サービス、シークレット、永続ボリューム、クレームなど、ソースKubernetesクラスタ(または必要なネームスペース)をバックアップするターゲットとして、S3互換のOCI Object Storageバケットを使用します。Veleroでは、次の例のように、構成済のオブジェクト・ストレージ・バケットにフォルダ階層が作成されます。:
顧客秘密キー(S3 APIエンドポイント用)を設定した後、Veleroを使用して、永続ボリュームがアタッチされたNGINXポッドとカスタムindex.htmlファイルを持つAKSクラスタを移行しました。
PS /home/guido> kubectl get pods --namespace nginx
NAME READY STATUS RESTARTS AGE
task-pv-pod 1/1 Running 0 47h
PS /home/guido> kubectl exec -it task-pv-pod --namespace nginx -- curl localhost
AKS to OKE Migration with PVC attached
また、Veleroの機能を示すダミー・シークレットを作成しました。:
PS /home/guido> kubectl get secrets --namespace nginx
NAME TYPE DATA AGE
okemigration Opaque 1 2s
次のリストア・プロセスの実行後、永続ボリューム内のデータを含むネームスペース全体が移行されました:
gferreyr-mac:~ gferreyr$ velero restore describe nginxoke-20230722145553
Name: nginxoke-20230722145553
Namespace: velero
Labels: <none>
Annotations: <none>
Phase: Completed
Total items to be restored: 7
Items restored: 7
Started: 2023-07-22 14:55:54 +0300 EEST
Completed: 2023-07-22 14:56:45 +0300 EEST
..........
gferreyr-mac:~ gferreyr$ kubectl get pod -n nginx
NAME READY STATUS RESTARTS AGE
task-pv-pod 1/1 Running 0 2m15s
gferreyr-mac:~ gferreyr$ kubectl get secrets -n nginx
NAME TYPE DATA AGE
okemigration Opaque 1 2m21s
gferreyr-mac:~ gferreyr$ kubectl get pvc -n nginx
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
task-pv-claim Bound csi-d03267f7-32cf-4068-8809-d29aa649dcba 50Gi RWO oci-bv 2m31s
gferreyr-mac:~ gferreyr$
次の文字列は、データが移行されたことを証明するものです。:
gferreyr-mac:~ gferreyr$ kubectl exec task-pv-pod -n nginx -- curl http://localhost
AKS to OKE Migration with PVC attached
OKEクラスタのみのバックアップまたは別のリージョンへの移行を計画している場合、プロセスは同じです。AWSプラグインを使用してOKEをバックアップし、クラスタにリストアします。サービス・ゲートウェイを設定して、クラスタがオブジェクト・ストレージにアクセスできることを確認します。
さらに詳細が必要ですか?
詳細なステップバイステップ・ガイドについては、チュートリアル「Veleroを使用してAKSクラスタをOKEに移行する方法」を確認してください。リストアの実行時にVeleroがstorageClassNameを変更できるように、チュートリアルで説明されているconfigMapを作成することを忘れないでください。それ以外の場合、ポッドは保留状態のままです。
Veleroの使用方法の詳細については、該当するドキュメントを参照してください。
