- Minimum Requirements:
- CPU: 48 vCPUs
- Memory: 192 GB
- Recommended Node Size:
- 3 nodes of
Standard_B16as_v2
(16 vCPUs, 64 GB RAM)
- 3 nodes of
- Public Subnet
Create the following buckets:
storage_container_private
storage_container_public
reports_container_private
telemetry_container_private
backups_container_private
flink_state_container_private
dial_state_container_public
- Storage Account
- Random String
- Encryption String
- JWT Tokens
- RSA Keys
- Navigate to the
terraform
directory and create a folder for the new cloud provider. Example:terraform/gcp/
Organize the folder as follows:
terraform/<cloud_provider>/
├── _common
│ ├── kubernetescluster.hcl
│ ├── keys.hcl
│ ├── network.hcl
│ ├── output-file.hcl
│ ├── serviceaccount.hcl
│ ├── storage.hcl
│ └── upload-files.hcl
├── modules
│ ├── kubernetescluster
│ ├── keys
│ ├── network
│ ├── output-file
│ ├── serviceaccount
│ ├── storage
│ └── upload-files
└── template/
├── kubernetescluster
│ └── terragrunt.hcl
├── create_tf_backend.sh
├── environment.hcl
├── global-values.yaml
├── install.sh
├── keys
│ └── terragrunt.hcl
├── network
│ └── terragrunt.hcl
├── output-file
│ └── terragrunt.hcl
├── postman.env.json
├── storage
│ └── terragrunt.hcl
├── terragrunt.hcl
└── upload-files
└── terragrunt.hcl
Copy the template files from the Azure configuration:
cp sunbird-ed-installer/terraform/azure/template/{environment.hcl,global-values.yaml,install.sh} sunbird-ed-installer/terraform/gcp/template/
In global-values.yaml, add this variable:
cloud_provider: "REPLACE_ME" # for configuring GCP and AWS installations
This will become the input for Helm bundles:
global-cloud-values.yaml
environment.hcl
global-values.yaml
In Helm charts, wherever cloud values are being referred to, use the following format:
{{- if eq .Values.global.cloud_provider "aws" }}
# AWS Specific Values
{{- else if eq .Values.global.cloud_provider "gcp" }}
# GCP Specific Values
{{- end }}
In Helm charts, using a direct reference for Azure:
container_name: "{{ .Values.global.azure_telemetry_container_name }}"
Using an if-else
condition for multiple cloud providers:
container_name:
{{- if eq .Values.global.cloud_provider "aws" }}
"{{ .Values.global.aws_public_bucket_name }}"
{{- else if eq .Values.global.cloud_provider "gcp" }}
"{{ .Values.global.gcp_public_bucket_name }}"
{{- else }}
"{{ .Values.telemetry_container_private }}"
{{- end }}
When using storage buckets, ensure the appropriate service account is enabled and annotated For example:
serviceAccount:
create: true
name: <created at step 2>
annotations:
iam.gke.io/gcp-service-account: iam.gke.io/gcp-service-account: <service-account-name>@<project-id>.iam.gserviceaccount.com
For Azure installation, please refer to the documentation:
/sunbird-ed-installer/README.md