Deckhouse Virtualization Platform на bare metal

Создайте проект и администратора проекта (в примере используется проект test-project и пользователь test-user@deckhouse.io, измените их, если необходимо):

1d8 k create -f - <<EOF
2---
3apiVersion: deckhouse.io/v1alpha2
4kind: Project
5metadata:
6  name: test-project
7spec:
8  description: test-project
9  projectTemplateName: default
10  parameters:
11    # Квоты проекта.
12    resourceQuota:
13      requests:
14        cpu: 20
15        memory: 20Gi
16      limits:
17        cpu: 20
18        memory: 20Gi
19    # Администраторы проекта.
20    administrators:
21      - subject: User
22        name: test-user
23---
24apiVersion: deckhouse.io/v1
25kind: User
26metadata:
27  name: test-user
28spec:
29  # e-mail пользователя.
30  email: test-user@deckhouse.io
31  # это хэш пароля k7q8e3m7g5, сгенерированного сейчас
32  # сгенерируйте свой или используйте этот, но только для тестирования
33  # echo -n 'k7q8e3m7g5' | htpasswd -BinC 10 "" | cut -d: -f2 | tr -d '\n' | base64 -w0; echo
34  # возможно, захотите изменить
35  password: 'JDJhJDEwJFByNDVGbU10ZWJROWZBVjVudi9XVHVucHFMZWp5NS9aeHB5Wlg4a1BoN3dYUjl1VlpBWnVP'
36---
37apiVersion: rbac.authorization.k8s.io/v1
38kind: RoleBinding
39metadata:
40  namespace: test-project
41  name: admin
42subjects:
43  - kind: User
44    name: test-user@deckhouse.io
45    apiGroup: rbac.authorization.k8s.io
46roleRef:
47  kind: ClusterRole
48  # Роль пользователя.
49  name: d8:use:role:admin
50  apiGroup: rbac.authorization.k8s.io
51EOF

Откройте веб-интерфейс генерации файла kubeconfig, для удаленного доступа к API-серверу. Адрес веб-интерфейса формируется в соответствии с шаблоном DNS-имен, указанным в глобальном параметре publicDomainTemplate. Например, если publicDomainTemplate: %s.kube.my, то веб-интерфейс будет доступен по адресу kubeconfig.kube.my.

Введите логин (в примере — test-user@deckhouse.io) и пароль созданного пользователя и получите конфигурационный файл для доступа к кластеру:

На компьютере, имеющем сетевой доступ к развернутому кластеру, создайте файл ~/.kube/config (для Linux/MacOS) или %USERPROFILE%\.kube\config (для Windows) и вставьте в него конфигурацию kubectl, приведенную на вкладке Raw Config.

Вы настроили kubectl на этом компьютере для управления кластером. Дальнейшие команды выполняйте на этом компьютере.

Создайте виртуальную машину:

1kubectl create -f - <<EOF
2---
3apiVersion: virtualization.deckhouse.io/v1alpha2
4kind: VirtualImage
5metadata:
6  name: ubuntu-2204
7  namespace: test-project
8spec:
9  storage: ContainerRegistry
10  dataSource:
11    type: HTTP
12    http:
13      url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
14---
15apiVersion: virtualization.deckhouse.io/v1alpha2
16kind: VirtualDisk
17metadata:
18  name: disk
19  namespace: test-project
20spec:
21  dataSource:
22    objectRef:
23      kind: VirtualImage
24      name: ubuntu-2204
25    type: ObjectRef
26  persistentVolumeClaim:
27    size: 4G
28---
29apiVersion: virtualization.deckhouse.io/v1alpha2
30kind: VirtualMachine
31metadata:
32  name: vm
33  namespace: test-project
34spec:
35  virtualMachineClassName: generic
36  runPolicy: AlwaysOn
37  blockDeviceRefs:
38  - kind: VirtualDisk
39    name: disk
40  cpu:
41    cores: 1
42  memory:
43    size: 1Gi
44EOF

Выведите список виртуальных машин, чтобы увидеть статус виртуальной машины:

1kubectl get vm -o wide

После успешного старта виртуальная машина должна перейти в статус Running.

Пример вывода:

1$ kubectl get vm -o wide
2NAME   PHASE     CORES   COREFRACTION   MEMORY   NEED RESTART   AGENT   MIGRATABLE   NODE           IPADDRESS     AGE
3vm     Running   1       100%           1Gi      False          False   True         virtlab-pt-1   10.66.10.19   6m18s

Подключитесь к виртуальной машине, введите логин (в примере — test-user@deckhouse.io) и пароль:

1d8 v console -n test-project vm

Поздравляем! Вы создали виртуальную машину и подключились к ней.