Гостевая статья Создание рабочего стола Linux для облачной разработки

Создание рабочего стола Linux для облачной разработки

В этом посте рассказывается о создании моего настольного ПК под Linux для Cloud Native Development. Я расскажу обо всем, от компонентов до периферийных устройств, интерфейсов командной строки и программного обеспечения SaaS, используя как можно больше ссылок и фрагментов. Я надеюсь, что вам понравится читать о моем опыте, чему-то научиться и, возможно, продолжить создавать свой собственный рабочий стол Linux.

Мой основной вариант используетса для работы с клиентом и разработки с открытым исходным кодом программного обеспечения как часть моего бизнеса . Моя работа в основном охватывает общение с клиентами и членами сообщества через Zoom, работу в IDE (VSCode) с такими языками, как Java, Go, Python и JavaScript. Я также создаю инфраструктурное программное обеспечение для и облачных приложений - таких как тестирование контроллеров Kubernetes и создание образов контейнеров с помощью Docker.

IMG_20200203_111036_2.jpg


Мне нужно, чтобы система была быстрой, эффективной, тихой и, что самое важное, подходящей для этой цели. Цель этого поста - не убедить мир в том, что Linux является единственной системой, которая может понадобиться разработчику, большинство людей предпочитают Mac для вычислений общего назначения.

EPrvuc4WsAAPbYb.jpeg


Linux, как я его знаю
Я всегда чувствовал, что использование рабочего стола и системы Linux дает мне более быстрое время отклика, чем мой Mac, при открытии терминала, компиляции двоичного файла или просто навигации по веб-страницам. Это может быть совершенно субъективно, но если плацебо излечивает отставание моего Mac, то почему бы и нет?

Один из моих основных вариантов использования - сборка кода, предназначенного для запуска не на Mac, а на хосте Linux в облаке. С ростом облачных, микросервисных и безсерверных систем почему бы не отправлять свои приложения на хост Linux?

compare-2.jpg


Оказывается, что контроллеры Kubernetes Go - это огромные двоичные файлы, настолько большие, что команде Go пришлось добавить специальные расширения в цепочку инструментов. По моему опыту, кросс-компиляция контроллера Go из Mac в двоичный файл Linux занимает гораздо больше времени и мешает быстрому внутреннему циклу, который мы жаждем как разработчики. Если вы сделаете еще один шаг и сконцентрируете сборку с помощью Docker для Mac, вам придется запускать гораздо меньшую виртуальную машину Linux - возможно, с 1 ГБ ОЗУ и 2 ядрами ЦП, что отрицательно скажется на производительности.

Выбор дистрибутива Linux
Точно так же, как сравнение MacOS с ОС Linux, предназначенной для широких масс, но с которой легко начать, выбор дистрибутива Linux приводит к аналогичным компромиссам. Я не совсем согласен с тем, что все пакеты должны быть собраны из исходного кода, поэтому слишком хардкорный для меня. находит хороший баланс для меня, имея быструю систему, которая может быть точно настроена на абсолютный минимум пакетов, но запускает непрерывное обновление. Если что-то не работает из коробки, это может занять несколько дней, если не недель. Некоторым людям также могут понравиться CentOS и Fedora, но по разным причинам семейство Ubuntu/Debian лучше подходит для моего использования.

Ubuntu предлагает сравнительно небольшой образ ISO, которую можно записать на USB-накопитель и установить в новую систему за короткий промежуток времени. Я не уверен, когда он был добавлен, но новая опция «установить минимальную систему» работает очень хорошо.

Неудачные попытки
Прежде чем выбрать Intel NUC Skull Canyon, у меня было несколько неудачных попыток.

Во-первых, я купил что-то подобное на eBay, с процессором i5 8-го или 9-го поколения. Мне понравился форм-фактор, и я был очень доволен использованием 5-го поколения i5 NUC без головок для серверной сборки.

У него было два ядра, 16 ГБ ОЗУ и быстрый SSD объемом 120 ГБ, но имелись многочисленные проблемы. Ubuntu не будет загружаться, если подключено USB-устройство, а встроенная графика, кажется, задыхается и тормозит даже при скромной прокрутке. Поскольку я не мог вернуть оборудование, я перешел на автономный хост, на котором круглосуточно работает кластер Kubernetes для быстрого тестирования в моей локальной сети.

31+P9PnM6AL._SL160_.jpg



Этот 6-ядерный NUC 10-го поколения может обеспечить лучший опыт, чем я предполагал, у него более новая прошивка и 6 ядер против двух из i5, которые я купил.

Вторая неудачная попытка состояла в том, чтобы «сделать все правильно» и купить мини-ПК у Lenovo. Меня привлекла линейка AMD Ryzen, и я знал, что процессор предлагает отличное соотношение цены и качества.

Я купил но ОЗУ до 32 ГБ и добавил больший NVMe.

410EuL0niZL._SL160_.jpg


В то время как у устройства была высокая верхняя тактовая частота, его вентиляторы запускались, что бы я не делал, будь то открытие окна терминала или просто открытие новой вкладки в Chrome. Дело не в том, что система находилась в состоянии стресса, просто представить себе не мог, как вентилятор ЦП разгоняется вверх и вниз в течение всего дня. К счастью, Lenovo можно было вернуть и, прочитав обзоры на Amazon, я обнаружил, что версия Intel для мини-ПК будет лучше охлаждаться.

Список деталей
Давайте рассмотрим оборудование.

Учитывая мой плохой опыт работы с интегрированной графикой в самой дешевой версии NUC, я сосредоточился на линейке Hades Canyon. Было предложено две версии - одна для игр (NUC8i7HNK) и другая для VR (NUC8i7HVK), но с графикой AMD.

Я выбрал более дешевую модель NUC8i7HNK, которая стоила примерно на 150-200 долларов США, одной из причин было снижение энергопотребления.

Вы можете получить предварительно собранную версию от Amazon или собрать сами.

41NjGOfGoWL._SL160_.jpg



  • ОЗУ - Я выбрал 32 ГБ ОЗУ
41ijXgLccfL._SL160_.jpg

  • Что-то вроде обеспечивает хорошее соотношение цены и качества.
  • Место хранения
EPOljtpX4AcDqaZ.jpeg


Я решил приобрести твердотельные накопители Samsung Evo Plus m2 для установки Windows 10 Pro на одну и Ubuntu 18.04 на другую

31+rkXdQL8L._SL160_.jpg

  • Если вы используете только Linux, то . Теперь вы можете купить два и установить их в массив RAID-0, используя .
Самое замечательное в сборке с помощью Intel Hades Canyon заключается в том, что мы в основном закончили. Нам не нужно беспокоиться о выборе материнской платы, энергоэффективного блока питания или какую видеокарту купить. Intel уже приняла все эти решения, и нам просто нужно выбрать «быструю» или «более быструю» модель NUC, затем добавить ОЗУ и хранилище.

Комплект Intel NUC поставляется с шестигранным ключом для откручивания 6 отдельных клавиш на верхней панели, после открытия необходимо отсоединить маленький плоский ленточный разъем и отвернуть винт Phillips. Тогда вы можете просто вставить любую поддерживаемую конфигурацию оперативной памяти и хранилища.

Я купил эту систему исключительно для деловых целей, чтобы использовать ее с моим постоянным клиентом и OSS. Если вы работаете не по найму или у вас есть бизнес, вы можете посмотреть, частично ли такая система вычитается из подоходного налога. Посоветуйтесь с вашим бухгалтером.

Установка и первая загрузка
Мне также принадлежит Intel Hades Canyon предыдущего поколения, который намного меньше и тоньше по сравнению с ним. Было приятно видеть переделанное охлаждение для этой версии. Первым делом я зашел в BIOS с помощью F2 и нашел «тихую» настройку охлаждения процессора. Вы можете заметить более громкий, чем ожидалось, шум процессора, но вместо скуления дешевого процессорного кулера мы слышим постоянный поток горячего воздуха из больших вентиляционных отверстий

41agxkkYlUL._SL160_.jpg



Я скачал и его на небольшой USB-накопитель.

При первой попытке установить Ubuntu с более ранним ядром я не смог войти в установщик из-за проблем с графическим драйвером AMD. Обход был долгим и разочаровывающим, и это означало, что я отложил отладку. Хорошей новостью является то, что ядро 5.x, которое теперь включено, имеет полную поддержку графики AMD.

Уловка, которую я использовал, чтобы войти в установщик, состояла в том, чтобы нажать ESC в меню Grub, а затем добавить nomodesetв конец опции ядра. , он не идеален и создает дополнительную нагрузку на процессор, но может преодолеть эту проблему.

Я рекомендую выполнить минимальную установку для экономии места, это приведет к тому, что в системе будут отсутствовать такие простые вещи, как git, но мы можем добавить их обратно одной командой. Отслеживание и удаление ненужных пакетов намного сложнее.

Получить несколько системных пакетов
Запуститьsudo apt updateиsudo apt install
  • tmux - терминальный мультиплексор - запустить команды, а затем отсоединить и подключить позже.
    Смотрите мой видео-учебник, вы должны знать, tmux
  • curl - добавьте его обратно, чтобы сделать HTTP-запросы
  • git - абсолютно необходим для любой коммерческой или OSS работы
    Если у вас есть 2FA (двухфакторная аутентификация) для вашей учетной записи GitHub (и я надеюсь, что у вас есть), то вам следует начать клонировать git-репозитории, используя ssh вместо HTTPS, в противном случае вам придется возиться с личными токенами доступа. ,
    Если у вас нет ключа SSH, сгенерируйте его:
ssh-keygen
Теперь войдите в свой профиль GitHub и добавьте новый открытый ключ SSH, вставьте содержимое ~/.ssh/id_rsa.pub.

Теперь вы можете использовать ssh ссылку, доступную в пользовательском интерфейсе GitHub, или вы можете заменить HTTPS git remote на эквивалент SSH.

clone-ssh.png

  • Если вам необходимо удалить существующий HTTPS «удаленный», запустить git remote rm origin затем git remote add origin git@github.com:alexellis/k3sup.git, например.
  • htop - красивый способ взглянуть на использование системы
  • vim - мой любимый редактор для системных файлов, если вы изучите некоторые ярлыки, вы можете ускорить рабочий процесс
  • gimp - при написании постов в блоге я использую gimp для изменения размера и обрезки изображений, например, для скриншота htop, который вы увидите позже
htop.png

Код:
sudo apt update && \  sudo apt install -qy tmux curl git htop vim gimp
Получите ваши графические приложения
Теперь нам нужны графические приложения, скачайте файл .deb, а затем дважды щелкните по нему. Начните с Chrome и идите дальще.
  • chrome-
    Более быстрый браузер, чем Firefox
  • Zoom-
    Установите, если вы встречаетесь с клиентами или посещаете брифинги OSS. Плата за Zoom - одна из лучших вещей, которую я встречал, она также не облагаетса налогом, если она используется в коммерческих целях. Вы можете
  • VSCode-
После того, как вы установили VSCode, вы захотите добавить орфографический плагин. Это важно, учитывая темп жизни, опечатки случаются, лучше поймать их перед публикацией.

  • Slack-
    Войдите и присоединитесь к своим рабочим пространствам, таким как где вы можете обсудить Kubernetes, Docker, ARM, Raspberry Pi, входные каналы, k3s и многое другое.
EPYNxJDX0AA_48f.jpeg


4k обеспечивает приличное количество места, и Терминал великолепен на фоне высокого разрешения.

Установите ваши другие приложения Linux
Не каждое приложение лучше всего устанавливать через загруженный .deb или менеджер пакетов.
  • docker - создавать, запускать образы
    Код:
    curl -sSLf https://get.docker.com | sudo sh
    
    sudo usermod -aG docker $(whoami)
  • docker-compose- compose является фаворитом среди разработчиков для локальной разработки, он может быть установлен pip и требует Python
    Код:
    sudo apt install -qy python3 python3-pip
    
    sudo pip3 install docker-compose
  • inletsctl- - это ваш собственный облачный туннель для получения общедоступного IP-адреса, когда он важен, для обмена работами с клиентами, вашей командой или сообществом. Это как Ngrok, но на 2020 год и бесплатный
    Код:
    curl -sSLf https://inletsctl.inlets.dev | sudo sh
    inletsctl download
    inletsctl download --pro
    Если вам нужна бесплатная пробная версия для inlets-pro, которая может туннелировать чистый TCP-трафик L4, подайте заявку здесь . Цитируйте этот пост, и я бесплатно удвою длину пробного лицензионного ключа.
  • k3d- запустить весь кластер Kubernetes в докер-контейнере, самый быстрый вариант из доступных и наименьший, основанный на
    Код:
    curl -s https://raw.githubusercontent.com/rancher/k3d/master/install.sh | bash
  • k3sup- k3sup можно использовать для установки k3s на удаленные виртуальные машины или ваш кластер Raspberry Pi. Вторым вариантом использования k3sup является установка приложений, таких как Kubernetes Dashboard, Minio, Postgresql, OpenFaaS, cert-manager и другие, используя их таблицы управления.
    Код:
    curl -sSLf https://get.k3sup.dev | sudo sh
  • kubectxkubectx - это скрипт bash, который быстро переключается между контекстами Kubernetes. Это понадобится вам для указания на локальный или удаленный кластер.
    Код:
    cd /tmp/
    git clone https://github.com/ahmetb/kubectx
    chmod +x ./kubectx/kubectx
    sudo cp ./kubectx/kubectx /usr/local/bin/
  • hub- если вы сопровождающий или когда-либо тестировали PR в проектах OSS, то вам нужен CLI "Hub" от GitHub .
    Код:
    curl -sSL https://github.com/github/hub/releases/download/v2.14.1/hub-linux-amd64-2.14.1.tgz > /tmp/hub.tgz
    sudo tar -xvf /tmp/hub.tgz -C /usr/local/ --strip-components=1
    Мои любимые команды hub pr list/checkoutиhub issue
    hub-cli.png
  • Golang - установка Go является ключевой частью моего рабочего процесса.
    Код:
    sudo mkdir -p /usr/local/go/
    curl -sSL https://dl.google.com/go/go1.13.7.linux-amd64.tar.gz > go1.13.7.linux-amd64.tar.gz
    sudo tar -xvf go1.13.7.linux-amd64.tar.gz -C /usr/local/go --strip-components=1
    Теперь отредактируйте ~/.bashrc:
    Код:
    export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
    export GOPATH=$HOME/go
    Затем создайте папку GOPATH, mkdir -p $HOME/go
    Проверьте работоспособность: go version
    Теперь перейдите к VSCode и установите плагин «Go», после чего выполните шаг установки, который загружает каждый инструмент статического анализа Go и устанавливает его локально в ваш $ PATH.

  • Node.js - даже если вы не являетесь разработчиком JavaScript, очень полезно иметь доступный узел, даже как калькулятор в вашем CLI
    Код:
    curl -sSL https://nodejs.org/dist/v12.14.1/node-v12.14.1-linux-x64.tar.gz > node-v12.14.1-linux-x64.tar.gz
    sudo tar -xvf node-v12.14.1-linux-x64.tar.gz -C /usr/local --strip-components=1
    Вот небольшой пример того, как вы можете использовать node в качестве быстрого калькулятора:
    Код:
    alex@nuc7:~$ node
    Welcome to Node.js v12.14.1.
    Type ".help" for more information.
    > day_rate=2500
    2500
    > day_rate*1.1
    2750
    >
    ```
    Остальное
    Этот раздел не является обязательным, и вы уже можете владеть всем, что вам нужно, например монитором, клавиатурой и мышью.

    EPrvuc4WsAAPbYb (1).jpeg

Раньше у меня был 27-дюймовый монитор Dell Ultrasharp, который мне действительно нравился, но мне хотелось найти более дешевую альтернативу. Именно здесь я познакомился с линейкой BenQ, в которой, похоже, используется та же электроника и другой корпус.

51-6YA93avL._SL160_.jpg



Масштабирование в Ubuntu работало хорошо для всего, что я пробовал, со стандартным кабелем HDMI, подключенным напрямую. Панель IPS красива и имеет антибликовое покрытие.

41m5VKTlEXL._SL160_.jpg



Монитор поставляется с тремя графическими входами: HDMI, DisplayPort и Mini DisplayPort. Я подключаю NUC через HDMI и мой Mac Mini через кабель USB-C-DisplayPort, оба из которых обеспечивают полную 4k при 60 Гц.

Теперь о методах ввода - механическая клавиатура и профессиональная мышь.

41e8rTvYPJL._SL160_.jpg



У меня есть мышь MX Master 2, которая работает по Bluetooth, к счастью, NUC содержит чип Bluetooth, и не было никаких задержек в использовании. Сегодня, если бы я покупал снова, я бы обновился до MX Master 3, которая является обновлением для 2019/2020.

Одно из моих самых желанных вещей - моя механическая клавиатура. Я перепробовал многие и теперь уверен, что MX Silver - лучшая для меня - она тихая, тактичная и быстрая.

41sbMULuDXL._SL160_.jpg



Модернизация клавиатуры - это одна из лучших вещей, которую вы можете сделать для своего рабочего места.



Последнее, без чего я не смог бы обойтись, - это USB-концентратор с питанием, но с достаточным запасом мощности для подключения ряда периферийных устройств и поддержки быстрой зарядки телефона через iQ.

4152xE3OFsL._SL160_.jpg



Концентратор USB также позволяет мне за очень короткий промежуток времени переключаться между компьютером Mac или Linux с помощью клавиатуры, мыши, веб-камеры и микрофона, которые легко отображаются на любом устройстве.

Удаленная работа и прием звонков
Моя веб-камера от Logitech, и я использую ее для всех звонков клиентов, так что я могу расположить ее там, где она мне нравится. Вы найдете, что новые модели выходят на регулярной основе, так что не используйте мой старый выбор в качестве руководства.

Многие разработчики рекомендуют микрофон Blue Yeti. Я не фанат этого, учитывая, что он имеет очень чувствительный прием фонового шума.

41EvhVRUKzL._SL160_.jpg


Я , который поставляется со штативом и для переноски. Это означает, что, путешествуя по конференциям или выезжая по работе с клиентами, я все еще могу записывать высококачественный звук для видеопередачи.

31gtbqaQ1nL._SL160_.jpg


При работе на расстоянии важно иметь возможность выйти на свежий воздух или выйти из домашнего офиса. включает превосходное подавление шума и хорошо работет по Bluetooth с телефоном, моим ноутбуком, или NUC.

И последнее, что стоит упомянуть - это офис или пакет повышения производительности.

unnamed.png


Я решил использовать GSuite, который я связал с доменным именем компании openfaas.com. Я использую это следующим образом:

  • Документы Google - для написания предложений и отчетов о работе (SoW) для клиентов или для CfP / рефератов конференций - функции совместной работы очень интуитивно понятны и полезны для асинхронной работы. Я также отслеживаю записи встреч OSS, используя общий документ.
  • Google Sheets - для отслеживания часов / дней / хода выполнения проекта, когда это необходимо. Если вы новичок в консалтинге, изучите стоимость в зависимости от времени.
  • Почта Google, связанная с openfaas.com, позволяет использовать различные почтовые ящики, такие как sales @ и support @, в качестве псевдонимов или отдельных учетных записей пользователей. Вы могли бы иметь отдельный адрес электронной почты для входа в систему вашего корпоративного бухгалтера.
  • Календарь Google - для планирования встреч и звонков. Я также использую это, чтобы заблокировать время для перерыва и исследования продукта.
ценами и не стесняйтесь использовать мои реферальные коды: как UAE7QWH7XPQRG3C для базового, так и V9VKLERQ3E3TDQG для бизнес-плана.

Дополнительным преимуществом приложений Gsuite является то, что они доступны с любого устройства в любое время и их достаточно для выполнения большей части работы.

Заключение
Надеюсь, вам понравилась эта статья, в которой я рассказал о своем опыте и аргументах в отношении создания компьютера с Linux для настольной системы в 2020 году. Я постарался подробно рассказать о сборке, а также о своем рабочем процессе и предпочтениях программного обеспечения, особенно в отношении инструмента Cloud Native.

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

Источник:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!