- Создан совместимый образ 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
		
			
				
	
	
		
			221 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			221 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Поддержка 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
 |