> For the complete documentation index, see [llms.txt](https://utm-1.gitbook.io/utm-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://utm-1.gitbook.io/utm-docs/dokumentaciya/utm-it/resheniya/kubernetes/persistentvolumes/pv-cherez-csi-driver-smb/podgotovka-na-linux-servere.md).

# Подготовка на Linux сервере

## Ссылки

\[kube-prometheus-stack] как использовать постоянные тома вместо emptyDir: [github.com](https://github.com/prometheus-community/helm-charts/issues/2816)

kubernetes-csi / csi-driver-smb: [github.com](https://github.com/kubernetes-csi/csi-driver-smb/tree/master/charts)

## Общая информация

## Подготовка на Linux сервере

Выполнить подготовку на Linux сервере, где будет располагаться папка с PersistentVolumes, которая будет расшарена через samba.

Предполагается:

* Установить samba сервер
* Настроить samba сервер
* Создать группу `utm-k8s-smb` для управления доступом samba
* Создать технического пользователя `k8s-smb-tu` на сервере samba для доступа под этим пользователем из кластера Kubernetes
* Создать папку `/srv/samba/k8s-pvs`
* Расшарить через samba папку `/srv/samba/k8s-pvs` с предоставлением доступа к папке только техническому пользователю

<details>

<summary>Установка samba</summary>

Установка:

```bash
# Обновление пакетов
sudo apt update

# Настройка даты и времени
#sudo apt install chrony -y
#sudo systemctl enable chrony
#sudo systemctl start chrony

# Установка samba 
sudo apt install samba -y

# Запуск
sudo systemctl enable smbd
sudo systemctl start smbd

# Проверка
systemctl status smbd

sudo ufw allow Samba

# Сделать резервную копию файла настроек
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
```

</details>

<details>

<summary>Настройка samba</summary>

Внести изменения в файл /etc/samba/smb.conf

```bash
sudo nano /etc/samba/smb.conf
```

В секции `[global]` указать:

```
map to guest = never
```

Перезапустить samba

```bash
sudo systemctl restart smbd
```

</details>

<details>

<summary>Группа доступа к папкам samba и пользователи samba</summary>

Создать :

```bash
# Группа доступа
sudo addgroup utm-k8s-smb

# Техническая учетная запись k8s-smb-tu для доступа из Kubernates
# В linux:
sudo useradd --no-create-home --shell /bin/false k8s-smb-tu
# В samba
sudo smbpasswd -a k8s-smb-tu

# Добавить пользователей в группу
sudo usermod -a -G utm-k8s-smb k8s-smb-tu
sudo usermod -a -G utm-k8s-smb maxim
sudo usermod -a -G utm-k8s-smb andrew
```

</details>

<details>

<summary>Общая папка в samba для PersistentVolumes</summary>

Подготовка папки для PersistentVolumes:

```bash
# Создать папку
sudo mkdir -p /srv/samba/k8s-pvs
# Права на доступ к папке
sudo chmod -R 0775 /srv/samba/k8s-pvs
# Владелец папки - группа utm-k8s-smb
sudo chown -R root:utm-k8s-smb /srv/samba/k8s-pvs
# Добавить линк в домашней папке к папке /srv/samba/k8s-pvs
ln -s /srv/samba/k8s-pvs $HOME/k8s-pvs
```

Настройка папки:

```bash
sudo nano /etc/samba/smb.conf
```

Добавить следующий блок:

```
[k8s-pvs]
   comment = Папка для хранения PV Kubernetes
   path = /srv/samba/k8s-pvs
   public = no
   browsable = yes
   writable = yes
   guest ok = no
   read only = no
   create mask = 0777
   directory mask = 0777
   force create mode = 0777
   force directory mode = 0777
   valid users = k8s-smb-tu, maxim, andrew

;    hosts allow = ip адреса, с которых можно получить доступ к этому серверу
;   valid users =  список пользователей которые могут авторизоваться
```

Перезапустить сервис:

```bash
sudo systemctl restart smbd
```

</details>

<details>

<summary>(!!! НЕ ТРЕБУЕТСЯ !!!) Папка для нового PersistentVolume</summary>

При создании нового PersistentVolume для него необходимо подготовить папку.

Папка должна располагаться в общей папке samba для PersistentVolumes.

Например, имя новой папки `pv-test1`

Выполнить

```bash
# Создать папку
sudo mkdir -p /srv/samba/k8s-pvs/pv-test1
# Права на доступ к папке
sudo chmod -R 0775 /srv/samba/k8s-pvs/pv-test1
# Владелец папки - группа utm-k8s-smb
sudo chown -R root:utm-k8s-smb /srv/samba/k8s-pvs/pv-test1
```

</details>
