Portworx vSphere generic spec generation
Step 1: vCenter user for Portworx
Provide Portworx with a vCenter server user that has the following minimum vSphere privileges using your vSphere console:
Datastore
- Allocate space
- Browse datastore
- Low level file operations
- Remove file
Host
- Local operations
- Reconfigure virtual machine
Virtual machine
Change Configuration
Add existing disk
Add new disk
Add or remove device
Advanced configuration
Change Settings
Extend virtual disk
Modify device settings
Remove disk
If you create a custom role as above, make sure to select Propagate to children when assigning the user to the role.
All commands in the subsequent steps need to be run on a machine with kubectl access.
Step 2: Create a Kubernetes secret with your vCenter user and password
Get VCenter user and password by running the following commands:
- For
VSPHERE_USER:echo '<vcenter-server-user>' | base64 - For
VSPHERE_PASSWORD:echo '<vcenter-server-password>' | base64
Note the output of both commands for use in the next step.
- For
Update the following Kubernetes Secret template by using the values obtained in step 1 for
VSPHERE_USERandVSPHERE_PASSWORD.apiVersion: v1
kind: Secret
metadata:
name: px-vsphere-secret
namespace: <px-namespace>
type: Opaque
data:
VSPHERE_USER: XXXX
VSPHERE_PASSWORD: XXXXApply the above spec to update the spec with your VCenter username and password:
kubectl apply -f <updated-secret-template.yaml>
Step 3: Generate the specs
vSphere environment details
Export the following environment variables based on your vSphere environment. These variables will be used in a later step when generating the YAML spec.
# Hostname or IP of your vCenter server
export VSPHERE_VCENTER=myvcenter.net
# Prefix of your shared ESXi datastore(s) names. Portworx will use datastores who names match this prefix to create disks.
export VSPHERE_DATASTORE_PREFIX=mydatastore-
# Change this to the port number vSphere services are running on if you have changed the default port 443
export VSPHERE_VCENTER_PORT=443
Disk templates
A disk template defines the VMDK properties that Portworx will use as a reference for creating the actual disks out of which Portworx will create the virtual volumes for your PVCs.
The template adheres to the following format:
type=<vmdk type>,size=<size of the vmdk>
- type: Supported types are thin, eagerzeroedthick, and lazyzeroedthick
- size: This is the size of the VMDK in GiB
The following example will create a 150GB zeroed thick vmdk on each VM:
export VSPHERE_DISK_TEMPLATE=type=eagerzeroedthick,size=150