Restoring the PPC using the bootstrap script

Complete the steps provided in this section to restore a PPC deployment using an existing backup.

Architecture Selection

  • amd64 (x86-64-based environments such as standard Intel or AMD servers)
  • arm64 (ARM-based environments such as AWS Graviton)

The bootstrap script prompts you to select the node architecture interactively during deployment (step 1b).

Restoring the PPC

Ensure that the PCT is downloaded and extracted on the jump box. For more information, refer to Preparing for PPC deployment.

Run the following command to initiate restore using an existing backup:

./bootstrap.sh --cloud aws --restore

To deploy PPC on ARM-based infrastructure, specify the architecture explicitly:

The bootstrap script asks for variables to be set to complete the deployment. Follow the instructions on the screen.

The --restore command enables the restore mode for the installation. It initiates restoration of data from the configured AWS S3 backup bucket. This process must be followed on a fresh jump box.

The script prompts for the following variables.

  1. Enter Cluster Name

    • Ensure that the cluster name does not match the name of the source cluster. Reusing an existing cluster name during restore can lead to discrepancies during cluster installation.
    • This same cluster name must already be updated in the KMS key policy. If this update is not performed, the restore process fails because the new cluster cannot decrypt the backup data.
    • Ensure that the cluster name does not exceed 31 characters. Cluster names longer than this limit can cause the bootstrap script to fail in subsequent installation steps.
      If the installation fails because the cluster name exceeds the 31-character limit, correct the name and re-run the script.
      • Correction: Choose a cluster name with 31 characters or fewer.
      • Retry: Execute the installation command again with the updated name. The script will automatically handle the update and proceed with the bootstrap process.

    The following characters are allowed:

    • Lowercase letters: a-z
    • Numbers: 0-9
    • Hyphens: -

    The following characters are not allowed:

    • Uppercase letters: A-Z
    • Underscores: _
    • Spaces
    • Any special characters such as: / ? * + % ! @ # $ ^ & ( ) = [ ] { } : ; , .
    • Leading or trailing hyphens
    • More than 31 characters

    After the cluster name is accepted, the script prompts you to select the node architecture.

    [1b/10] Select Node Architecture

    [1b/10] Select Node Architecture
      1) amd64 (x86_64) — e.g. t3, m5, c5 instances
      2) arm64 (Graviton) — e.g. t4g, m7g, c7g instances
    

    Enter 1 to select amd64 or 2 to select arm64.

    Note: Select amd64 for standard Intel/AMD 64-bit environments. Select arm64 for ARM-based environments such as AWS Graviton instances.

  2. Enter a VPC ID from the table

    The script automatically retrieves the available VPCs. Enter the VPC ID where the cluster must be created.

  3. Querying for subnets in VPC…

    The script queries for the available VPC subnets and prompts to enter two private subnet IDs. Specify two private subnet IDs from different availability zones.
    The script then automatically updates the VPC CIDR block based on the VPC details.

  4. Enter FQDN

    This is the Fully Qualified Domain Name (FQDN) for the ingress.

    While entering the FQDN, ensure that:

    • contains at least two labels separated by a dot, such as app.example.com
    • does not start or end with a dot or hyphen
    • does not contain consecutive dot character
    • label length must be between 1–63 characters
    • each label must start and end with a letter or digit
    • the last label must start only with a letter

    Warning: Ensure that the FQDN does not exceed 50 characters and only the following characters are used:

    • Lowercase letters: a-z
    • Numbers: 0-9
    • Special characters: - .
  5. Restore mode requires an existing S3 bucket. Proceeding to existing bucket validation in Step 6.

  6. Select S3 Backup Bucket Option

    An AWS S3 bucket encrypted with SSE‑KMS containing backup artifacts used during the restore process.

    Note: Use a dedicated S3 bucket per cluster for backup and restore operations to ensure data and encryption isolation. Sharing a bucket across clusters increases the risk of cross-cluster data access or decryption due to IAM misconfiguration. Dedicated buckets with unique IAM policies eliminate this risk.

    Select backup

    During restore, the script prompts to manually select a backup from the available backups stored in the S3 bucket. User input is required to either restore from the latest backup or choose a specific backup from the list.

    [restore] Backup selection — schedule: authnz-postgresql-schedule-backup
    Restore from latest backup? [Y/n]
    
    • Enter Y to restore from the most recent backup.
    • Enter n to manually select a backup.

    If n is selected, then the script displays a list of available backups (latest first) and prompts to select one by number:

    Available backups (latest first):
    [1] <timestamp> authnz-postgresql-schedule-backup-xxxxxxx
    [2] <timestamp> authnz-postgresql-schedule-backup-xxxxxxx
    
    Select a backup number (1-2):
    

    After entering the backup number, the chosen backup is used for the restore, and the installation continues.

    Enter Insight backup

    During restore, the script prompts to manually select the required insight backup from the available backups stored in the S3 bucket. User input is required to either restore from the latest backup or choose a specific backup from the list.

    [restore] Insight backup selection — schedule: insight-configmaps-secrets
    Restore from latest backup? [Y/n]
    
    • Enter Y to restore from the most recent backup.
    • Enter n to manually select a backup.

    If n is selected, then the script displays a list of available backups (latest first) and prompts to select one by number:

    Available backups (latest first):
    [1] <timestamp>  insight-configmaps-secrets-xxxxxxxxx
    [2] <timestamp>  insight-configmaps-secrets-xxxxxxxxx
    
    Select a backup number (1-2):
    

    After entering the backup number, the chosen backup is used for the restore, and the installation continues.

  7. Enter Image Registry Endpoint

    Enter <Container_Registry_Path>, the container registry endpoint from where the container images are retrieved.

    Note: If deploying from the Protegrity Container Registry, use registry.protegrity.com:9443. Specify the local registry endpoint if a local registry is used.

    Expected format: <hostname>[:port].
    Do not include ‘https://’

    Note: The container registry endpoint must be a FQDN (Fully Qualified Domain Name). Sub-paths like, <Container_Registry_Path>/v2/path, are not supported by the OCI distribution specification.

  8. Enter Registry Username

    Enter the username for the registry mentioned in the previous step. Leave this entry blank if the registry does not require authentication.

  9. Enter Registry Password or Access Token

    Enter Password or Access Token for the registry. Input is masked with * characters. Press Enter to keep the current value.

    Leave this entry blank if the registry does not require authentication.

  10. Enter Owner Email (for cluster tagging)

Enter email address in the format name@domain.tld. This email is used for the cluster 'Owner' tag and the platform owner contact. 

Note: The cluster creation process can take approximately 15-20 minutes.

If the session is terminated during restore due to network issues, power outage, and so on, then the restore stops. To restart the process, run the following commands:

# Navigate to deployment directory and run the following command
./bootstrap.sh --cloud aws destroy

# Restore the cluster
./bootstrap.sh --cloud aws --restore

Warning: Do not install or manage multiple clusters from the same working directory. Each cluster deployment maintains its own Terraform or OpenTofu state, and reusing a directory can overwrite state files, causing loss of cluster tracking and unintended cleanup behavior.
Use a dedicated directory, and jump box, where possible, per cluster, and always verify the active kubectl context before running cleanup commands such as ./bootstrap.sh --cloud aws destroy.
To check the active kubectl context, run the following command:
kubectl config current-context

After the restore to the new cluster is completed successfully and all required validation and migration activities are finished, the source cluster can be deleted.

Last modified : November 03, 2026