Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • v2.28.0
  • v2.27.0
  • v2.25.1
  • v2.24.3
  • v2.26.0
  • v2.24.2
  • v2.25.0
  • v2.24.1
  • v2.22.2
  • v2.23.3
  • v2.24.0
  • v2.23.2
  • v2.23.1
  • v2.23.0
  • v2.22.1
  • v2.22.0
  • v2.21.0
  • v2.20.0
  • v2.19.1
  • v2.18.2
21 results

packet.md

Blame
  • Packet

    Kubespray provides support for bare metal deployments using the Packet bare metal cloud. Deploying upon bare metal allows Kubernetes to run at locations where an existing public or private cloud might not exist such as cell tower, edge collocated installations. The deployment mechanism used by Kubespray for Packet is similar to that used for AWS and OpenStack clouds (notably using Terraform to deploy the infrastructure). Terraform uses the Packet provider plugin to provision and configure hosts which are then used by the Kubespray Ansible playbooks. The Ansible inventory is generated dynamically from the Terraform state file.

    Local Host Configuration

    To perform this installation, you will need a localhost to run Terraform/Ansible (laptop, VM, etc) and an account with Packet. In this example, we're using an m1.large CentOS 7 OpenStack VM as the localhost to kickoff the Kubernetes installation. You'll need Ansible, Git, and PIP.

    sudo yum install epel-release
    sudo yum install ansible
    sudo yum install git
    sudo yum install python-pip

    Playbook SSH Key

    An SSH key is needed by Kubespray/Ansible to run the playbooks. This key is installed into the bare metal hosts during the Terraform deployment. You can generate a key new key or use an existing one.

    ssh-keygen -f ~/.ssh/id_rsa

    Install Terraform

    Terraform is required to deploy the bare metal infrastructure. The steps below are for installing on CentOS 7. More terraform installation options are available.

    Grab the latest version of Terraform and install it.

    echo "https://releases.hashicorp.com/terraform/$(curl -s https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r -M '.current_version')/terraform_$(curl -s https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r -M '.current_version')_linux_amd64.zip"
    sudo yum install unzip
    sudo unzip terraform_0.12.30_linux_amd64.zip -d /usr/local/bin/

    Download Kubespray

    Pull over Kubespray and setup any required libraries.

    git clone https://github.com/kubernetes-sigs/kubespray
    cd kubespray
    sudo pip install -r requirements.txt

    Cluster Definition

    In this example, a new cluster called "alpha" will be created.

    cp -LRp contrib/terraform/packet/sample-inventory inventory/alpha
    cd inventory/alpha/
    ln -s ../../contrib/terraform/packet/hosts

    Details about the cluster, such as the name, as well as the authentication tokens and project ID for Packet need to be defined. To find these values see Packet API Integration

    vi cluster.tfvars
    • cluster_name = alpha
    • packet_project_id = ABCDEFGHIJKLMNOPQRSTUVWXYZ123456
    • public_key_path = 12345678-90AB-CDEF-GHIJ-KLMNOPQRSTUV

    Deploy Bare Metal Hosts

    Initializing Terraform will pull down any necessary plugins/providers.

    terraform init ../../contrib/terraform/packet/

    Run Terraform to deploy the hardware.

    terraform apply -var-file=cluster.tfvars ../../contrib/terraform/packet

    Run Kubespray Playbooks

    With the bare metal infrastructure deployed, Kubespray can now install Kubernetes and setup the cluster.

    ansible-playbook --become -i inventory/alpha/hosts cluster.yml