Эмулятор на этом сайте не умеет запускать контейнеры. У эмулированного процессора нет вложенной виртуализации, поэтому Docker и Kubernetes там недостижимы, сколько ни настраивай. Это жёсткое ограничение, а не недоделка.
Cloud Shell обходит его. Это Linux-машина, которую Google выдаёт бесплатно, и на ней уже есть Docker и root, то есть ровно то, что нужно мануалам из моих статей. Работает она под твоим аккаунтом Google, поэтому мне это не стоит ничего, а наплыв читателей не может исчерпать ничью квоту, кроме квоты самого читателя.
Открывается в новой вкладке, а не внутри страницы. Google отдаёт X-Frame-Options: SAMEORIGIN
для Cloud Shell и DENY для страницы входа, поэтому встроить их во фрейм не может ни один
сторонний сайт. Так сделано намеренно: форма входа Google внутри чужой страницы это ровно то, как
выглядит фишинг, и запрет здесь и есть защита.
Что ты получаешь
- Linux-машину с
dockerи полноценнымsudo - 50 часов в неделю на аккаунт Google, счётчик сбрасывается еженедельно
- 5 ГБ постоянной домашней директории, хотя эта сессия её не использует
- одноразовую машину: в ссылке стоит
ephemeral=true, и всё стирается при закрытии вкладки
Как начать
Кнопка открывает Cloud Shell и клонирует маленький открытый репозиторий с одним установочным скриптом. Четыре шага, причём первые два происходят сами.
1. Доверить репозиторий. Cloud Shell спрашивает об этом перед клонированием всего, что не принадлежит Google. В окне написано, что репозиторий не доверенный по умолчанию, и это про владельца, а не про содержимое. Файлов там три, и их можно прочитать на GitHub заранее.
2. Прочитать, что напечаталось. После клонирования терминал печатает следующую команду и оставляет тебя в нужной директории. Выглядит так:
You are in Google Cloud Shell, on a machine Google gives you for free.
Docker and root are already here. kind and kubectl are not, so install them:
./setup.sh 3. Доставить то, чего не хватает. Docker на месте, а kind и kubectl нет,
поэтому скрипт качает их с официальных адресов релизов и печатает версии, которые получились:
./setup.sh 4. Идти по статье. Дальше команды работают ровно как написано. Для мануала по Kyverno это значит:
kind create cluster --name policy-demo
kubectl cluster-info --context kind-policy-demo Когда закончишь
Сессия одноразовая, так что достаточно закрыть вкладку. Но удалить кластер перед этим всё равно правильная привычка, и команда та же, что на ноутбуке:
kind delete cluster --name policy-demo Чем ты за это платишь
Здесь честность важнее, чем в остальных разделах. Эмулятор считает на твоей машине и не отправляет наружу ничего. Тут всё наоборот: терминал работает на серверах Google под твоим аккаунтом, и всё, что ты там набираешь, уходит к Google на тех условиях, которые у тебя с ними уже есть. У меня доступа к этому нет, и плачу за это тоже не я.
Если такой размен не устраивает, мануал проходится на любом ноутбуке с Docker. Cloud Shell это удобство, а не обязательное условие.