Standard
If the cluster was installed with the DVPClusterConfiguration schema, migration to ModuleConfig-based configuration is required. Until the migration is completed, the D8CloudProviderDVPMigrationPending alert may fire and Deckhouse updates may be blocked.
See: How to migrate a cloud provider to ModuleConfig-based configuration.
Example of the layout configuration:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: cloud-provider-dvp
spec:
version: 2
enabled: true
settings:
nodes:
parameters:
layout: Standard
sshPublicKey: <SSH_PUBLIC_KEY>
ipAddresses:
master:
- Auto
provider:
parameters:
namespace: demo
---
apiVersion: v1
kind: Secret
metadata:
name: d8-credentials
namespace: d8-cloud-provider-dvp
type: cloud-provider.deckhouse.io/credentials
stringData:
authScheme: kubeconfig
secret: <KUBE_CONFIG_BASE64>
---
apiVersion: deckhouse.io/v1alpha1
kind: DVPInstanceClass
metadata:
name: master
spec:
virtualMachine:
cpu:
cores: 4
coreFraction: 100%
memory:
size: 8Gi
virtualMachineClassName: generic
rootDisk:
size: 50Gi
storageClass: ceph-pool-r2-csi-rbd-immediate
image:
kind: ClusterVirtualImage
name: ubuntu-2204
etcdDisk:
size: 15Gi
storageClass: ceph-pool-r2-csi-rbd-immediate
---
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
name: master
spec:
nodeType: CloudPermanent
cloudInstances:
classReference:
kind: DVPInstanceClass
name: master
maxPerZone: 1
minPerZone: 1
nodeTemplate:
labels:
node-role.kubernetes.io/control-plane: ""
node-role.kubernetes.io/master: ""
Configuration
The built-in virtualization cloud provider parameters are set in four resources:
- The ModuleConfig of the
cloud-provider-dvpmodule defines the layout and the parent cluster connection parameters. - The
d8-credentialsSecret in thed8-cloud-provider-dvpnamespace stores the credentials for accessing the parent cluster API. Its format is covered in the Credentials Secret section. - The DVPInstanceClass resource describes the virtual machine parameters.
- The NodeGroup resource describes the node groups and references the instance class.
To modify the provider settings in a running cluster, edit the ModuleConfig:
d8 k edit mc cloud-provider-dvp
After changing node parameters, run the command:
dhctl converge
Example of a configuration with multiple parameters:
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: cloud-provider-dvp
spec:
version: 2
enabled: true
settings:
nodes:
parameters:
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
region: r1
zones:
- zone-a
- zone-b
- zone-c
ipAddresses:
master:
- 10.66.30.100
- 10.66.30.101
- 10.66.30.102
provider:
parameters:
namespace: default
---
apiVersion: v1
kind: Secret
metadata:
name: d8-credentials
namespace: d8-cloud-provider-dvp
type: cloud-provider.deckhouse.io/credentials
stringData:
authScheme: kubeconfig
secret: ZXhhbXBsZQo=
---
apiVersion: deckhouse.io/v1alpha1
kind: DVPInstanceClass
metadata:
name: master
spec:
virtualMachine:
cpu:
cores: 1
coreFraction: 100%
memory:
size: 4Gi
virtualMachineClassName: generic
additionalLabels:
additional-vm-label: label-value
additionalAnnotations:
additional-vm-annotation: annotation-value
tolerations:
- key: dedicated.deckhouse.io
operator: Equal
value: system
nodeSelector:
nodeSelectorTerms:
- matchExpressions:
- key: beta.kubernetes.io/os
operator: In
values:
- linux
rootDisk:
size: 10Gi
storageClass: linstor-thin-r1
image:
kind: ClusterVirtualImage
name: ubuntu-2204
etcdDisk:
size: 10Gi
storageClass: linstor-thin-r1
---
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
name: master
spec:
nodeType: CloudPermanent
cloudInstances:
classReference:
kind: DVPInstanceClass
name: master
maxPerZone: 1
minPerZone: 1
zones:
- zone-a
- zone-b
- zone-c
nodeTemplate:
labels:
node-role.kubernetes.io/control-plane: ""
node-role.kubernetes.io/master: ""
---
apiVersion: deckhouse.io/v1alpha1
kind: DVPInstanceClass
metadata:
name: worker
spec:
virtualMachine:
cpu:
cores: 4
coreFraction: 100%
memory:
size: 8Gi
virtualMachineClassName: generic
rootDisk:
size: 10Gi
image:
kind: ClusterVirtualImage
name: ubuntu-2204
---
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
name: worker
spec:
nodeType: CloudPermanent
cloudInstances:
classReference:
kind: DVPInstanceClass
name: worker
maxPerZone: 1
minPerZone: 1
zones:
- zone-a
- zone-b
- zone-c