GitLab システム管理者 - ハンズオンラボ: Kubernetes のバックアップとリストア
推定所要時間: 30 分
目的
このラボの目的は、仮想マシン上の GitLab インスタンスをバックアップし、以前の状態にリストアする方法を示すことです。GitLab インスタンスのバックアップ/リストアの詳細については、こちらをクリックしてください。
タスク A. バックアップ設定の構成
GitLab インスタンスサーバーで SSH セッションを開きます。
お好みのテキストエディターで helm 値を開きます。
このファイル内で、バックアップを有効にするためにいくつかの設定を更新する必要があります。まず、次の
global設定を追加します。global: appConfig: backups: bucket: gitlab-k8-bucket tmpBucket: bucket: gitlab-k8-tmp-bucketこれらの設定は、各バックアップタイプのリモートストレージバケットの名前を設定します。
Kubernetes のバックアップは
toolboxPod を通じて行われます。この Pod がバックアップを実行できるようにするには、バックアッププロバイダーに接続できる必要があります。次の設定をgitlabブロックに追加することで実現できます。toolbox: backups: objectStorage: backend: gcs config: key: config secret: storage-config gcpProject: demosys-ilt-training-cloudこれらのバケットにアクセスできるようにするには、GCS サービスアカウントの認証情報を提供する必要があります。これを行うには、
kubectl create secret generic storage-config --from-file=config=storage.configコマンドを実行します。この設定を追加したら、
helm upgrade --install gitlab gitlab/gitlab --version 9.4.3 --timeout 100s -f values.ymlコマンドを実行します。
タスク B. GitLab インスタンスのバックアップ
フルバックアップを取得するには、まず
toolboxPod を見つけます。kubectl get pods -lapp=toolbox次に、
toolboxPod からバックアップユーティリティを実行します。kubectl exec <toolbox-name> -it -- backup-utility最後に、Kubernetes シークレットを取得してファイルに保存します。
#Rails シークレットを取得 kubectl get secrets | grep rails-secret #シークレットをローカルの場所に保存 kubectl get secrets <rails-secret-name> -o jsonpath="{.data['secrets\.yml']}" | base64 --decode > gitlab-secrets.yaml
この時点で、バックアップはオブジェクトストレージに保存されます。ファイル名をメモしておきます。例: s3://bucket/1729261040_2024_10_18_17.4.1-ee_gitlab_backup.tar
重要: タイムスタンプをメモしておきます(この例では: 1729261040_2024_10_18_17.4.1-ee)。リストアプロセスで必要になります。
タスク C. GitLab 設定の変更
Web ブラウザーで GitLab インスタンスにサインインし、サイドバーを開きます。左下隅の Admin area をクリックします。
左サイドバーで Settings > General を選択します。
Account and limit を展開し、最大添付ファイルサイズを 500 MiB に、デフォルトのプロジェクト制限を 10000 に変更します。
Save changes をクリックして変更を保存します。
ページを更新して変更が適用されたことを確認します。
タスク D. バックアップからのリストア
GitLab インスタンスサーバーの SSH セッションに戻ります。
現在の Kubernetes シークレットを削除します。
kubectl delete secret <rails-secret-name>バックアップした Kubernetes シークレットに基づいて新しいシークレットセットを作成します。
kubectl create secret generic <rails-secret-name> --from-file=secrets.yml=gitlab-secrets.yamlシークレットを適用するために Kubernetes Pod を再起動します。
kubectl delete pods -lapp=sidekiq,release=gitlab kubectl delete pods -lapp=webservice,release=gitlab kubectl delete pods -lapp=toolbox,release=gitlabリストアプロセスを開始するには、
toolboxPod の名前を見つけます。kubectl get pods -lapp=toolboxKubernetes Pod のレプリカを 0 にスケールダウンします。
kubectl scale deploy -lapp=sidekiq,release=gitlab --replicas=0 kubectl scale deploy -lapp=webservice,release=gitlab --replicas=0 kubectl scale deploy -lapp=prometheus,release=gitlab --replicas=0バックアップコマンドから取得したタイムスタンプ ID を使用してリストアを実行します。
kubectl exec <Toolbox pod name> -it -- backup-utility --restore -t your-timestamp-idリストアプロセスを開始するよう求められた場合は、yes と入力します。
リストアプロセスが完了したら、Pod をスケールアップします。
kubectl scale deploy -lapp=sidekiq,release=gitlab --replicas=1 kubectl scale deploy -lapp=webservice,release=gitlab --replicas=1 kubectl scale deploy -lapp=prometheus,release=gitlab --replicas=1Kubernetes インスタンスにアクセスして、リストアが正常に完了したことを確認します。
ラボガイド完了
このラボ演習を完了しました。このコースの他のラボガイドを参照できます。
ご提案はありますか?
ラボに変更を加えたい場合は、マージリクエストを通じて変更内容を送信してください。
