Prepare to Install on Azure

Before installing GoodData.CN on Microsoft Azure, ensure your environment is set up with the necessary tools and prerequisites. This section guides you through verifying requirements, installing essential command-line tools, and configuring your environment to prepare for the installation process.

Meet Prerequisites

Before you begin, ensure you have the following:

Install Tools

This guide has been written from the point of view of a MacOS user using the shell terminal. If you are using different architecture, you may need to modify certain commands.

Steps:

  1. Install Azure CLI:

    brew install azure-cli
    
  2. Log in to Azure:

    az login
    
  3. Install kubectl:

    brew install kubectl
    
  4. Install helm:

    brew install helm
    
  5. Download and extract Tinkey:

    curl -fsL https://storage.googleapis.com/tinkey/tinkey-1.9.0.tar.gz \
        | tar xzvf -
    

Prepare Environmental Variables

During the installation, you will make use of environmental variables. This section provides instructions on creating and storing the necessary variables in a single file for easy management.

Steps:

  1. Run the following command to create file environmental_variables.sh with your environmental variables:

    cat <<EOF > environmental_variables.sh
    # You will assign some the commented out environmental 
    # variable values later in the installation process.
    
    # Azure
    AZ_RESOURCE_GROUP="gd-rg"
    AZ_LOCATION="eastus2" # REVIEW
    
    # PostgreSQL
    PG_NAME="gd-db"
    PG_ADMIN_NAME="postgres" # Don't change this!
    PG_ADMIN_PASSWORD="" # FILL IN
    PG_HOSTNAME="gd-db.postgres.database.azure.com"
    PG_PORT=5432
    PG_CREDENTIALS_SECRET="gd-pg-secret"
    
    # Kubernetes
    AZ_AKS="gd-aks-cluster"
    AZ_AKS_NODE_RESOURCE_GROUP="gd-rg-aks-nodes"
    PG_VNET="gd-vnet"
    PG_SUBNET="gd-subnet"
    # AZ_AKS_NODE_VNET=""
    # AZ_AKS_NODE_VNET_ID=""
    # PG_VNET_ID=""
    # PG_SUBNET_ID=""
    
    # DNS
    DNS_ZONE="" # FILL IN
    DNS_RESOURCE_GROUP="gd-rg" # Change this if your DNS zone is in different RG
    USER_ASSIGNED_IDENTITY_NAME="externaldns"
    FEDERATED_IDENTITY_CREDENTIAL_NAME="externaldns"
    SERVICE_ACCOUNT_NAMESPACE="external-dns"
    SERVICE_ACCOUNT_NAME="external-dns"
    ACME_EMAIL="" # FILL IN
    # AKS_OIDC_ISSUER=""
    # SUBSCRIPTION_ID=""
    # TENANT_ID=""
    # USER_ASSIGNED_CLIENT_ID=""
    # DNS_ID=""
    # RESOURCE_GROUP_ID=""
    
    # Azure Storage Account
    AZ_STORAGE_ACCOUNT_NAME="gd-storage-user"
    AZ_STORAGE_CONTAINER_NAME="gd-storage-container"
    AZ_STORAGE_SECRET_NAME="gd-storage-secret"
    # AZ_STORAGE_KEY=""
    
    # GoodData.CN
    GD_LICENSE_KEY="" # FILL IN
    GD_LICENSE_KEY_SECRET="gd-license-secret"
    GD_ENCRYPTION_KEYSET_SECRET="gd-keyset-secret"
    GD_ORGANIZATION_HOSTNAME="" # FILL IN, use "yourcustomsubdomain.your_dns_zone"
    GD_ORGANIZATION_ID="gd-org-id"
    GD_ORGANIZATION_NAME="gooddata-org-name"
    GD_ORGANIZATION_DISPLAY_NAME="GoodData Organization"
    GD_ADMIN_USER_NAME="bootstrapAdminUser"
    GD_ADMIN_USER_PASSWORD="" # FILL IN
    GD_CERT_SELF_SIGNED_SECRET="gd-cert-secret"
    # GD_ADMIN_USER_PASSWORD_SALTED=""
    # GD_BOOTSTRAP_API_TOKEN=""
    
    # Authentication
    OAUTH_ISSUER_LOCATION="" # FILL IN
    OAUTH_CLIENT_ID="" # FILL IN
    OAUTH_CLIENT_SECRET="" # FILL IN
    USER_SUB_CLAIM="" # FILL IN
    EOF
    
  2. Edit the file an update the following variables:

    • GD_LICENSE_KEY
    • AZ_LOCATION (see Choose Azure Location)
    • DNS_ZONE
    • ACME_EMAIL
    • PG_ADMIN_PASSWORD and GD_ADMIN_USER_PASSWORD
    • All Authentication variables.

    You may customize other variables as well.

  3. Export the variables by sourcing the file:

    source environmental_variables.sh