GKE Installer
Fury GKE Installer deploys a production-grade Kubernetes Fury cluster based on Google Kubernetes Engine (GKE).
Modules
The following packages are included in the Fury GKE installer:
Module | Description |
---|---|
VPC | Deploy the necessary networking infrastructure |
VPN | Deploy a VPN Server to connect to private clusters |
GKE | Deploy the GKE cluster |
Click on each module to see its full documentation.
Architecture
The GKE installers deploys and configures a production-ready GKE cluster without having to learn all internals of the service.
The GKE module deploys a private control plane cluster, where the control plane endpoint is not publicly accessible.
The VPC module setups all the necessary networking infrastructure. The VPN module setups one or more bastion hosts with an OpenVPN server.
The bastion host includes a OpenVPN instance easily manageable by using furyagent to provide access to the cluster.
🕵🏻♂️ Furyagent is a tool developed by SIGHUP to manage OpenVPN and SSH user access to the bastion host.
Usage
This installer is a set of terraform modules that will provision all the required components to use a GKE cluster, in which you can then install KFD using furyctl
and the KFDDistribution
provider.
Requirements
- GCP Access Credentials of a GCP Account with
Project Owner
role with the following APIs enabled:- Identity and Access Management (IAM) API
- Compute Engine API
- Cloud Resource Manager API
- Kubernetes Engine API
- terraform
>=1.3.0
ssh
or OpenVPN Client - Tunnelblick (on macOS) or OpenVPN Connect (for other OS) are recommended.
Create GKE Cluster
To create the cluster via the installer you can start from the provided example:
-
Clone the repository and go to the example folder:
git clone github.com/sighupio/fury-gke-installer
cd fury-gke-installer -
Login into Google Cloud using the
gcloud
CLI:gcloud auth application-default login
export GOOGLE_APPLICATION_CREDENTIALS=~/.config/gcloud/application_default_credentials.json -
Create a copy of the
main.auto.tfvars.dist
file inside thevpc
folder and populate it with your own values:cd examples/vpc
cp main.auto.tfvars.dist main.auto.tfvars
vi main.auto.tfvars -
Use terraform to create the VPC:
terraform init
terraform plan
terraform apply -
Create a copy of the
main.auto.tfvars.dist
file inside thevpn
folder and populate it with your own values:cd ../vpn
cp main.auto.tfvars.dist main.auto.tfvars
vi main.auto.tfvars -
Use terraform to create the VPN bastion host:
terraform init
terraform plan
terraform apply -
Create a OpenVPN client certificate using
furyagent
furyagent configure openvpn-client --config=./secrets/furyagent.yml --client-name test > /tmp/fury-example-test.ovpn
-
Use the
/tmp/fury-example-test.ovpn
client file to connect to the VPN using the VPN client of your choice -
Create a copy of the
main.auto.tfvars.dist
file inside thegke
folder and populate it with your own values:cd ../gke
cp main.auto.tfvars.dist main.auto.tfvars
vi main.auto.tfvarstipSee the GKE release notes page to know the release names and their maintenance windows. The name you see there is also the one you will need to put inside the
cluster_version
variable.See also the KFD Compatibility Matrix to know the Kubernetes versions that KFD supports.
-
Use terraform to create the GKE cluster:
terraform init
terraform plan
terraform apply -
Get your
kubeconfig
file from the outputs:terraform output -raw kubeconfig > .kubeconfig
-
Verify that the cluster is up&running:
KUBECONFIG=.kubeconfig kubectl get nodes
You're all set! Now you can install KFD inside your cluster.