Skip to content

Launching instances on Jetstream using Ansible and setting up Kubernetes

GowthamCh edited this page Mar 30, 2022 · 4 revisions

Plan of action:

  • Using terraform and OpenStack CLI we will create the instances. (master and worker nodes).
  • Using Ansible playbooks we will connect to the above instances and run the playbooks to setup kubernetes.
  • Finally connect to the master node and run Kubernetes yaml files for starting deployments and services.

Steps:

We need an instance to set up Ansible first. This can be a local or a remote machine. We chose a remote machine with Ubuntu image. Login to the machine and open the terminal

  1. Create SSH-key.
sudo su
ssh-keygen

This will generate public and private keys. we will use this key later to SSH connect to the instances we create.

  1. Copy the openrc.sh file to this instance. You can follow the steps in this Link to download the openrc file. And then Run the following command,
source <openrc.sh>

This will just save the environment variables to our localhost which we need to connect to the OpenStack python client.

  1. Make sure you have a public IP available. This can be created in the exosphere environment or running the following command. Ignore this step if you have an public IP address available.
pip3 install python-openstackclient
openstack floating ip create public
  1. Paste the IP address you created in the first line below and run the following code. We need to modify certain attributes from the cluster.tfvars file
  • master node IP address (k8s_master_fips)
  • availability zones(az_list)
  • external network(external_net)
  • number of nodes (number_of_k8s_nodes)

Note: The shell script below only modifies the IP address and the rest of the above attributes are already set based on the cloud environment provided to us.

  export IP=149.165.152.125
  bash instance-creation.sh

What does the instance-creation.sh shell script do?

  • It will install terraform, ansible.
  • Initiate the terraform scripts for creation of the VM instances.
  • Setup SSH as an agent to connect to the remote machines
  • Run ansible playbooks to install kubernetes.
  1. Kubernetes is installed successfully in our cluster( at the end of the above script you will be logged into the master node) and all the control node can talk to all the worker nodes now. Now its time to start the deployments and services of our application.
bash run-kub-cluster.sh
  1. To test the setup, you can ssh to the master machine and check the nodes connected. (Optional)
ssh ubuntu@$IP
sudu su
kubectl get nodes

Additional Information:

  • For knowing what is the external network you are currently in:
OpenStack network list --external 
  • For knowing the availability zone available for you.
Openstack availability zone list
Clone this wiki locally