Compare commits

...

3 commits

5 changed files with 13 additions and 10 deletions

View file

@ -1,8 +1,13 @@
# Vanilla Kubernetes on VMware vSphere
## Prerequisites
1. [Packer](https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli) installed on your system
2. Account in vSphere with [appropriate privileges](https://developer.hashicorp.com/packer/plugins/builders/vsphere/vsphere-iso#required-vsphere-privileges)
3. [Ubuntu Server 20.04 installation ISO](https://releases.ubuntu.com/20.04.5/) copied to a vSphere datastore
## Packer
1. `cd packer`.
2. Copy `linux-server.example.pkrvars.hcl` to `linux-server.auto.pkrvars.hcl` and update it as appropriate for your environment.
2. Copy `ubuntu-k8s.example.pkrvars.hcl` to `ubuntu-k8s.auto.pkrvars.hcl` and update it as appropriate for your environment.
2. Put the SSH private key which corresponds to the `build_key` variable in `packer_cache/ssh_private_key_packer.pem`.
3. Place any needed internal CA PEM-formatted certs (with `.cer` file extension) in `certs/`.
4. Run it with `packer build -on-error=abort -force .`.

View file

@ -1,6 +1,4 @@
#!/bin/bash -eu
chmod 600 ~/.ssh/id_ed25519
echo ">> Installing Kubernetes components..."
# Configure and enable kernel modules

View file

@ -162,11 +162,6 @@ build {
destination = "/tmp"
}
provisioner "file" {
source = "packer_cache/ssh_private_key_packer.pem"
destination = "/home/${var.build_username}/.ssh/id_ed25519"
}
provisioner "shell" {
execute_command = "export KUBEVERSION=${var.k8s_version}; bash {{ .Path }}"
expect_disconnect = true

View file

@ -137,6 +137,7 @@ resource "vsphere_virtual_machine" "control" {
"echo export K8S_POD_CIDR=\"'${var.k8s-pod-cidr}'\" >> env.txt",
"echo export K8S_CLUSTER_NAME=\"'${var.k8s-cluster-name}'\" >> env.txt",
"echo export K8S_CONTROLPLANE_VIP=\"'${var.k8s-controlplane-vip}'\" >> env.txt",
"echo export K8S_CONTROLPLANE_COUNT=\"'${var.vm-control-count}'\" >> env.txt",
"echo export KUBEVIP_VER=\"'${var.k8s-kubevip-version}'\" >> env.txt",
"echo export K8S_NODE_COUNT=\"'${local.k8s-node-count}'\" >> env.txt",
"echo export VCENTER_SERVER=\"'${var.vsphere-server}'\" >> env.txt",

View file

@ -343,10 +343,14 @@ datacenters = "${VCENTER_DATACENTER}"
EOF
kubectl create secret generic vsphere-config-secret --from-file=csi-vsphere.conf --namespace=vmware-system-csi
if kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/vsphere-csi-driver/v2.7.0/manifests/vanilla/vsphere-csi-driver.yaml; then
wget "https://raw.githubusercontent.com/kubernetes-sigs/vsphere-csi-driver/v2.7.0/manifests/vanilla/vsphere-csi-driver.yaml"
if [ "${K8S_CONTROLPLANE_COUNT}" -lt 3 ]; then
sed -i 's/replicas: 3/replicas: 1/' vsphere-csi-driver.yaml
fi
if kubectl apply -f vsphere-csi-driver.yaml; then
echo ">> Cluster initialization complete!"
touch .k8s-cluster-success
rm -f csi-vsphere.conf discovery.yaml env.txt kubeadminit.yaml initialize-controlplane.sh
rm -f csi-vsphere.conf discovery.yaml env.txt kubeadminit.yaml initialize-controlplane.sh vsphere-csi-driver.yaml
else
echo ">> [ERROR] Failed to configure CSI! <<"
fi