There are some tools that you need installed on your local machine, in order to provision Phenomenal-KubeNow:
- Git to clone/download the install scripts from github repo
- Docker to run the container with all other dependencies
Phenomenal-KubeNow are distributed via GitHub:
# the repository contains submodules therefore `--recursive` parameter when cloning e.g.
git clone --recursive https://github.com/phnmnl/cloud-deploy-kubenow.git
cd cloud-deploy-kubenow
# If you later want to pull latest version and also pull latest submodule updates:
git pull --recurse-submodules
git submodule update --recursive --remote
All of the commands in this documentation are meant to be run in the cloud-deploy-kubenow directory.
Amazon specific prerequisites
- You have an IAM user along with its access key and security credentials (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)
Configuration
Start by creating your configuration file: config.aws.sh
There is a template that you can use for your convenience:
mv config.aws.sh-template config.aws.sh
In this configuration file you will need to set:
Cluster
-
TF_VAR_cluster_prefix
: every resource in your tenancy will be named with this prefix -
TF_VAR_aws_access_key_id
: your access key id -
TF_VAR_aws_secret_access_key
: your secret access key id -
TF_VAR_aws_region
: the region where your cluster will be bootstrapped (e.g.eu-west-1
) -
TF_VAR_availability_zone
: an availability zone for your cluster (e.g.eu-west-1a
)
Master configuration
TF_VAR_master_instance_type
: an instance flavor for the masterTF_VAR_master_as_edge
:
Node configuration
TF_VAR_node_count
: number of Kubernetes nodes to be created (no floating IP is needed for these nodes)TF_VAR_node_instance_type
: an instance flavor name for the Kubernetes nodes
Gluster configuration
TF_VAR_glusternode_count
: number of egde nodes to be created (1 - 3 depending on preferred replication factor)TF_VAR_glusternode_instance_type
: an instance flavor for the glusternodesTF_VAR_glusternode_extra_disk_size
: disk size of the fileserver size in GB
Edge configuration (optional)
TF_VAR_edge_count
: number of egde nodes to be createdTF_VAR_edge_instance_type
: an instance flavor for the edge nodes
Cloudflare (optional) - See: KubeNow Cloudflare documentation.
TF_VAR_use_cloudflare
: wether you want to use cloudflare as dns providerTF_VAR_cloudflare_email
: the mail that you used to register your Cloudflare accountTF_VAR_cloudflare_token
: an authentication token that you can generate from the Cloudflare web interfaceTF_VAR_cloudflare_domain
: a zone that you created in your Cloudflare account. This typically matches your domain name (e.g. somedomain.com)
Galaxy
TF_VAR_galaxy_admin_email
: the local galaxy admin (you?)TF_VAR_galaxy_admin_password
: min 6 characters admin password
Jupyter
TF_VAR_jupyter_password
: password for your notebook
Once you are done with your settings you are ready to deploy the cluster:
./phenomenal.sh deploy aws
when deployment is finished then you should be able to reach the services at:
Galaxy = http://galaxy.<your-prefix>.<yourdomain>
Jupyter = http://notebook.<your-prefix>.<yourdomain>
Luigi = http://luigi.<your-prefix>.<yourdomain>
Kube-dashboard = http://dashboard.<your-prefix>.<yourdomain>
and to destroy use:
./phenomenal.sh destroy aws
Google cloud specific prerequisites
-
You have enabled the Google Compute Engine API: API Manager > Library > Compute Engine API > Enable
-
You have created and downloaded a service account file for your GCE project: Api manager > Credentials > Create credentials > Service account key
-
You installed python package apache-libcloud and jmespath (e.g.
sudo pip install apache-libcloud jmespath
)
Configuration
Start by creating your configuration file: config.gcp.sh
There is a template that you can use for your convenience:
mv config.gcp.sh-template config.gcp.sh
In this configuration file you will need to set:
Cluster
-
TF_VAR_cluster_prefix
: every resource in your tenancy will be named with this prefix -
TF_VAR_gce_credentials_file
: path to your service account file -
TF_VAR_gce_region
: the zone for your project (e.g.europe-west1-b
) -
TF_VAR_gce_project
: your project id
Master configuration
TF_VAR_master_flavor
: an instance flavor for the masterTF_VAR_master_as_edge
:
Node configuration
TF_VAR_node_count
: number of Kubernetes nodes to be created (no floating IP is needed for these nodes)TF_VAR_node_flavor
: an instance flavor name for the Kubernetes nodes
Gluster configuration
TF_VAR_glusternode_count
: number of egde nodes to be created (1 - 3 depending on preferred replication factor)TF_VAR_glusternode_flavor
: an instance flavor for the glusternodesTF_VAR_glusternode_extra_disk_size
: disk size of the fileserver size in GB
Edge configuration (optional)
TF_VAR_edge_count
: number of egde nodes to be createdTF_VAR_edge_iflavor
: an instance flavor for the edge nodes
Cloudflare (optional) - See: KubeNow Cloudflare documentation.
TF_VAR_use_cloudflare
: wether you want to use cloudflare as dns providerTF_VAR_cloudflare_email
: the mail that you used to register your Cloudflare accountTF_VAR_cloudflare_token
: an authentication token that you can generate from the Cloudflare web interfaceTF_VAR_cloudflare_domain
: a zone that you created in your Cloudflare account. This typically matches your domain name (e.g. somedomain.com)
Galaxy
TF_VAR_galaxy_admin_email
: the local galaxy admin (you?)TF_VAR_galaxy_admin_password
: min 6 characters admin password
Jupyter
TF_VAR_jupyter_password
: password for your notebook
Once you are done with your settings you are ready to deploy the cluster:
./phenomenal.sh deploy gcp
when deployment is finished then you should be able to reach the services at:
Galaxy = http://galaxy.<your-prefix>.<yourdomain>
Jupyter = http://notebook.<your-prefix>.<yourdomain>
Luigi = http://luigi.<your-prefix>.<yourdomain>
Kube-dashboard = http://dashboard.<your-prefix>.<yourdomain>
and to destroy use:
./phenomenal.sh destroy gcp
Openstack specific prerequisites
- You have downloaded the OpenStack RC file (credentials) for your tenancy: https://docs.openstack.org/user-guide/common/cli-set-environment-variables-using-openstack-rc.html#download-and-source-the-openstack-rc-file
Configuration
Start by creating your configuration file: config.ostack.sh
There is a template that you can use for your convenience:
mv config.ostack.sh-template config.ostack.sh
In this configuration file you will need to set:
Cluster
-
TF_VAR_cluster_prefix
: every resource in your tenancy will be named with this prefix -
TF_VAR_os_credentials_file
: your openstack credentials file: https://docs.openstack.org/user-guide/common/cli-set-environment-variables-using-openstack-rc.html#download-and-source-the-openstack-rc-file -
TF_VAR_floating_ip_pool
: a floating IP pool name -
TF_VAR_external_network_uuid
: the uuid of the external network in the OpenStack tenancy -
TF_VAR_dns_nameservers
: (optional, only needed if you want to use other dns-servers than default 8.8.8.8 and 8.8.4.4)
Master configuration
TF_VAR_master_flavor
: an instance flavor for the masterTF_VAR_master_as_edge
:
Node configuration
TF_VAR_node_count
: number of Kubernetes nodes to be created (no floating IP is needed for these nodes)TF_VAR_node_flavor
: an instance flavor name for the Kubernetes nodes
Gluster configuration
TF_VAR_glusternode_count
: number of egde nodes to be created (1 - 3 depending on preferred replication factor)TF_VAR_glusternode_flavor
: an instance flavor for the glusternodesTF_VAR_glusternode_extra_disk_size
: disk size of the fileserver size in GB
Edge configuration (optional)
TF_VAR_edge_count
: number of egde nodes to be createdTF_VAR_edge_flavor
: an instance flavor for the edge nodes
Cloudflare (optional) - See: KubeNow Cloudflare documentation.
TF_VAR_use_cloudflare
: wether you want to use cloudflare as dns providerTF_VAR_cloudflare_email
: the mail that you used to register your Cloudflare accountTF_VAR_cloudflare_token
: an authentication token that you can generate from the Cloudflare web interfaceTF_VAR_cloudflare_domain
: a zone that you created in your Cloudflare account. This typically matches your domain name (e.g. somedomain.com)
Galaxy
TF_VAR_galaxy_admin_email
: the local galaxy admin (you?)TF_VAR_galaxy_admin_password
: min 6 characters admin password
Jupyter
TF_VAR_jupyter_password
: password for your notebook
Once you are done with your settings you are ready to deploy the cluster:
./phenomenal.sh deploy ostack
when deployment is finished then you should be able to reach the services at:
Galaxy = http://galaxy.<your-prefix>.<yourdomain>
Jupyter = http://notebook.<your-prefix>.<yourdomain>
Luigi = http://luigi.<your-prefix>.<yourdomain>
Kube-dashboard = http://dashboard.<your-prefix>.<yourdomain>
and to destroy use:
./phenomenal.sh destroy ostack
Azure specific prerequisites
- You have created an application API key (Service Principal) in your Microsoft Azure subscription: (https://www.terraform.io/docs/providers/azurerm/authenticating_via_service_principal.html#creating-a-service-principal)
Configuration
Start by creating your configuration file: config.azure.sh
There is a template that you can use for your convenience:
mv config.azure.sh-template config.azure.sh
In this configuration file you will need to set:
Cluster
-
TF_VAR_cluster_prefix
: every resource in your tenancy will be named with this prefix -
TF_VAR_location
: some Azure location (e.g.West Europe
) -
TF_VAR_subscription_id
: your subscription id -
TF_VAR_client_id
: your client id (also called appId) -
TF_VAR_client_secret
: your client secret (also called password) -
TF_VAR_tenant_id
: your tenant id
Master configuration
TF_VAR_master_vm_size
: the vm size for the master (e.g.Standard_DS2_v2
) (e.g.Standard_DS2_v2
)TF_VAR_master_as_edge
:
Node configuration
TF_VAR_node_count
: number of Kubernetes nodes to be created (no floating IP is needed for these nodes)TF_VAR_node_vm_size
: the vm size for the Kubernetes nodes (e.g.Standard_DS2_v2
)
Gluster configuration
TF_VAR_glusternode_count
: number of egde nodes to be created (1 - 3 depending on preferred replication factor)TF_VAR_glusternode_vm_size
: the vm size for the glusternodesTF_VAR_glusternode_extra_disk_size
: disk size of the fileserver size in GB
Edge configuration (optional)
TF_VAR_edge_count
: number of egde nodes to be createdTF_VAR_edge_vm_size
: the vm size for the the edge nodes
Cloudflare (optional) - See: KubeNow Cloudflare documentation.
TF_VAR_use_cloudflare
: wether you want to use cloudflare as dns providerTF_VAR_cloudflare_email
: the mail that you used to register your Cloudflare accountTF_VAR_cloudflare_token
: an authentication token that you can generate from the Cloudflare web interfaceTF_VAR_cloudflare_domain
: a zone that you created in your Cloudflare account. This typically matches your domain name (e.g. somedomain.com)
Galaxy
TF_VAR_galaxy_admin_email
: the local galaxy admin (you?)TF_VAR_galaxy_admin_password
: min 6 characters admin password
Jupyter
TF_VAR_jupyter_password
: password for your notebook
Once you are done with your settings you are ready to deploy the cluster:
./phenomenal.sh deploy azure
when deployment is finished then you should be able to reach the services at:
Galaxy = http://galaxy.<your-prefix>.<yourdomain>
Jupyter = http://notebook.<your-prefix>.<yourdomain>
Luigi = http://luigi.<your-prefix>.<yourdomain>
Kube-dashboard = http://dashboard.<your-prefix>.<yourdomain>
and to destroy use:
./phenomenal.sh destroy azure