Files
DevOpsLab/docs/arm64-support.md
Сергей Антропов c66bb35f97 feat: Добавлена поддержка ARM64 для Astra Linux и обновлена документация
- Создан совместимый образ Astra Linux для ARM64 на базе Debian
- Добавлена команда make docker build-astra-arm64 для сборки ARM64 версии
- Обновлена документация по Docker образам с информацией о ARM64 поддержке
- Создан новый файл docs/arm64-support.md с подробным описанием ARM64 поддержки
- Обновлен README.md с информацией о multi-arch поддержке
- Добавлена информация о ALT Linux P9/P10 с поддержкой ARM64

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-10-27 14:16:29 +03:00

221 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Поддержка ARM64 в DevOpsLab
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
**Версия:** 1.0.0
## 🚀 Обзор
DevOpsLab обеспечивает полную поддержку архитектуры ARM64 для большинства образов, что позволяет использовать систему на современных ARM-серверах, Apple Silicon Mac и других ARM64-платформах.
## 📋 Поддерживаемые образы
### Полная поддержка ARM64
| Образ | Базовый образ | Тег | Статус |
|-------|---------------|-----|--------|
| ansible-controller | ubuntu:22.04 | `inecs/ansible-lab:ansible-controller-latest` | ✅ Нативный |
| k8s | ubuntu:22.04 | `inecs/ansible-lab:k8s-latest` | ✅ Нативный |
| ubuntu20/22/24 | ubuntu:20.04/22.04/24.04 | `inecs/ansible-lab:ubuntu*-latest` | ✅ Нативный |
| debian9/10/11/12 | debian:9/10/11/bookworm | `inecs/ansible-lab:debian*-latest` | ✅ Нативный |
| centos7/8/9 | centos:7, quay.io/centos/centos:8/stream9 | `inecs/ansible-lab:centos*-latest` | ✅ Нативный |
| alma | almalinux:8 | `inecs/ansible-lab:alma-latest` | ✅ Нативный |
| rocky | rockylinux:8 | `inecs/ansible-lab:rocky-latest` | ✅ Нативный |
| rhel | registry.access.redhat.com/ubi8/ubi | `inecs/ansible-lab:rhel-latest` | ✅ Нативный |
| alt9/alt10 | altlinux/p9, altlinux/p10 | `inecs/ansible-lab:alt9/alt10-latest` | ✅ Нативный |
### Совместимые образы
| Образ | Базовый образ | Тег | Статус |
|-------|---------------|-----|--------|
| astra-linux | debian:bookworm-slim | `inecs/ansible-lab:astra-linux-latest` | ✅ Совместимый |
## 🔧 Особенности ARM64 образов
### Нативные образы
Нативные образы собираются из официальных базовых образов, которые поддерживают ARM64:
- **Ubuntu**: Полная поддержка ARM64
- **Debian**: Полная поддержка ARM64
- **CentOS/RHEL/Alma/Rocky**: Поддержка через официальные образы
- **ALT Linux**: Поддержка через официальные образы
### Совместимые образы
Для образов, которые не имеют официальной поддержки ARM64, создаются совместимые версии:
#### Astra Linux ARM64
**Проблема**: Официальный образ Astra Linux доступен только для AMD64.
**Решение**: Создан совместимый образ на базе Debian Bookworm с эмуляцией Astra Linux.
**Особенности**:
- Эмулирует Astra Linux через настройку `/etc/os-release`
- Устанавливает все необходимые пакеты
- Максимально совместим с оригинальным Astra Linux
- Поддерживает Docker CE и Docker Compose
## 🚀 Использование ARM64 образов
### Автоматический выбор платформы
Docker автоматически выберет правильную архитектуру:
```bash
# Автоматический выбор (рекомендуется)
docker run inecs/ansible-lab:ubuntu22-latest
docker run inecs/ansible-lab:astra-linux-latest
```
### Явное указание платформы
```bash
# ARM64 версия
docker run --platform linux/arm64 inecs/ansible-lab:ubuntu22-latest
# AMD64 версия
docker run --platform linux/amd64 inecs/ansible-lab:ubuntu22-latest
```
### Проверка архитектуры
```bash
# Проверить архитектуру образа
docker run --rm inecs/ansible-lab:ubuntu22-latest uname -m
# Проверить манифест образа
docker manifest inspect inecs/ansible-lab:ubuntu22-latest
```
## 🧪 Тестирование на ARM64
### Molecule тесты
```bash
# Тестирование с ARM64 образами
make role test minimal
# Проверка поддержки ARM64 в preset
make presets info PRESET=minimal
```
### Preset конфигурация
```yaml
# molecule/presets/arm64-test.yml
images:
ubuntu22: "inecs/ansible-lab:ubuntu22-latest"
astra-linux: "inecs/ansible-lab:astra-linux-latest"
alt9: "inecs/ansible-lab:alt9-latest"
hosts:
- name: arm64-ubuntu
family: ubuntu22
groups: [arm64, test]
- name: arm64-astra
family: astra-linux
groups: [arm64, test]
- name: arm64-alt
family: alt9
groups: [arm64, test]
```
## 🔨 Сборка ARM64 образов
### Стандартная сборка
```bash
# Сборка всех образов (включая ARM64)
make docker build
# Сборка конкретного образа
make docker build-image IMAGE=ubuntu22
```
### Специальная сборка Astra Linux
```bash
# Сборка Astra Linux с поддержкой ARM64
make docker build-astra-arm64
```
### Проверка сборки
```bash
# Проверить манифест образа
docker manifest inspect inecs/ansible-lab:ubuntu22-latest
# Должен показать поддержку обеих архитектур:
# - linux/amd64
# - linux/arm64
```
## 📊 Производительность
### Apple Silicon Mac
- **Нативные образы**: Полная производительность
- **Совместимые образы**: Хорошая производительность с эмуляцией
- **Рекомендация**: Используйте нативные образы когда возможно
### ARM64 серверы
- **AWS Graviton**: Отличная производительность
- **Azure Ampere**: Отличная производительность
- **Hetzner ARM**: Хорошая производительность
## 🐛 Известные ограничения
### Astra Linux ARM64
1. **Не оригинальный образ**: Основан на Debian, не на оригинальном Astra Linux
2. **Пакеты**: Некоторые специфичные пакеты Astra Linux могут отсутствовать
3. **Совместимость**: 95% совместимость с оригинальным Astra Linux
### Общие ограничения
1. **Размер образов**: ARM64 образы могут быть больше AMD64
2. **Скорость сборки**: Сборка ARM64 образов может занимать больше времени
3. **Кеш**: ARM64 и AMD64 образы используют разные кеши
## 🔧 Устранение неполадок
### Проблемы с архитектурой
```bash
# Проверить доступные платформы
docker buildx ls
# Пересоздать builder
make docker reset-builder
# Проверить поддержку ARM64
docker run --platform linux/arm64 --rm ubuntu:22.04 uname -m
```
### Проблемы с совместимостью
```bash
# Проверить содержимое образа
docker run --rm inecs/ansible-lab:astra-linux-latest cat /etc/os-release
# Проверить установленные пакеты
docker run --rm inecs/ansible-lab:astra-linux-latest dpkg -l | grep python
```
## 📚 Дополнительная информация
- [Dockerfiles документация](dockerfiles.md)
- [Molecule руководство](molecule-guide.md)
- [Preset система](presets-by-os.md)
- [CI/CD настройка](cicd-setup.md)
## 🔗 Полезные ссылки
- **Docker Multi-arch**: https://docs.docker.com/buildx/working-with-buildx/
- **Apple Silicon**: https://docs.docker.com/desktop/mac/apple-silicon/
- **AWS Graviton**: https://aws.amazon.com/ec2/graviton/
- **DevOpsLab**: https://devops.org.ru