Подгответе и стартирайте изходния код на Kubernetes с помощта на VS Code и отдалечена виртуална машина!

Инструкция за това как да използвате облачни виртуални машини и разширението Visual Studio Code Remote за настройка на среда за разработка на Kubernetes от нулата.

Може да сте нов сътрудник, просто искате бърза и изолирана среда или просто не искате да имате инсталирани купища неща на вашата машина, които са ви необходими само докато кодирате. Във всеки от тези сценарии можете да се възползвате, като стартирате цялата си среда за разработка на облачна виртуална машина и използвате разширението VS Code Remote, за да го направите така, както го изпълнявате локално.

Ето как ще изглежда крайното състояние:

Имайте предвид, че локалната машина може да бъде MacOs, Linux или Windows. Машината за разработка в този случай ще бъде Linux Ubuntu.

0. Създайте виртуална машина

Няма да отделям много време за това, тъй като трите основни облачни доставчици имат купища инструкции как да създават Linux VM в azure, gcp и aws.

Стъпките по-долу предполагат, че имате виртуална машина, знаете нейния публичен IP и имате настройка на вашите SSH ключове, за да можете да влезете в нея.

За целите на тази публикация виртуалната машина е в Google Cloud. Нищо обаче не ви забранява да използвате виртуални машини на други облачни доставчици или дори контейнери, хоствани някъде другаде.

1. Настройте локалната машина

Код на Visual Studio

Инсталиране на кода на Visual Studio във вашата реална машина. Ние ще използваме тази IDE като основен мост между вашата машина и действителната машина за разработка.

Инсталирайте разширението Go

Инсталирайте разширението ms-vscode.go. Можете да използвате прекия път за бързо отваряне на VS Code (Ctrl+P), да поставите следната команда и да натиснете enter.

ext install ms-vscode.go

Не забравяйте да щракнете върху инсталиране:

Инсталирайте VS Code Remote Extension Pack

Инсталирайте пакета vs-code-remote-extension. Същото тук, Ctrl+P:

ext install ms-vscode-remote.vscode-remote-extensionpack

Имайте предвид, че има няколко варианта на това разширение. Предпочитам да използвам пакета, тъй като той включва в едно разширение възможността за дистанционно управление в: Контейнери, WSL и SSH сървър (това, което ще използваме).

Свържете се с отдалечената виртуална машина

Още веднъж използвайте Ctrl+P и въведете командата:

> Remote-ssh Add New SSH Host

След това попълнете потребителското име и IP/FQDN за виртуалната машина:

Във формата по-долу:

ssh myusername@IP

Изберете опцията за локална ssh конфигурация, ако се съмнявате, вероятно е първата:

За да отворите Remote Explorer, щракнете върху новата икона, която се появи в лявата лента, когато сте инсталирали разширението Remote Development. Като алтернатива използвайте Ctrl+P:

> View: Show Remote Explorer

Отдалеченият изследовател трябва да показва IP адреса на виртуалната машина в секцията SSH Targets. Щракнете с десния бутон върху хоста и изберете Свързване с хост в текущия прозорец.

Потвърдете пръстовия отпечатък на виртуалната машина:

След като се свържете, ще започнете да имате достъп до отдалечената машина. Когато се опитате да отворите папка (Ctrl+K Ctrl+O) по подразбиране, тя ще покаже папките от VM:

Същото ще се случи при отваряне на терминала (Ctrl+`):

2. Настройте виртуалната машина

Сега, след като отдалечената машина е свързана, можем да започнем да настройваме средата на Kubernetes.

Създадох скрипта по-долу, който трябва да инсталира всички изисквания във виртуалната машина. Този скрипт е за Ubuntu, така че ако използвате друга дистрибуция, може да се наложи да направите няколко промени в нея.

Обърнете внимание, че скриптът дефинира версията на GO и местоположението на репо/форк, така че ги коригирайте съответно:

За просто да изтеглите и изпълните, използвайте VS Code Terminal (Ctrl+`), за да изпълните командите по-долу:

wget https://gist.githubusercontent.com/pjbgf/a8e02c81a9af62af3ca9b06196d84c70/raw/cbfb440e5298c99907c3891b1cfd733e6d7fb510/setup-kubernetes-contributors-developmroment.sh -O setup.sh
chmod +x setup.sh
./setup.sh 
# to also install crio add a --crio at the end of the line above

Без crio това обикновено отнема около 3 минути на n1-standard-4 (4 vCPU, 15 GB памет) в Google Cloud VM

Изграждане на изходния код

Всички зависимости и изходният код трябва да бъдат правилно инсталирани във виртуалната машина. Сега можете просто да презаредите профила, това ще зареди промените в PATH и новите променливи на средата GOPATH.

Влезте в папката на проекта и го компилирайте:

source ~/.profile
cd $GOPATH/src/k8s.io/kubernetes
make

Това трябва да отнеме около 8 минути при същата спецификация, както е споменато по-горе.

3. Оптимизиране на Visual Studio Code

За да извлечем максимума от VS Code, трябва да направим няколко промени в настройките му по подразбиране.

Go: Инструменти за инсталиране/актуализация

Има няколко go инструмента, които трябва да бъдат инсталирани, за да получите богато изживяване на IDE. Те ще предоставят неща като автоматично завършване, форматиране и т.н. За да ги инсталирате, използвайте Ctrl+P и въведете Go: Install/Update Tools :

Можете да изберете всички и да щракнете върху OK. Като алтернатива можете да ги инсталирате ръчно.

Настройки на VS кода

Големи проекти и промени във файлове

VS Code автоматично ще наблюдава всички файлове във вашия проект за промени. Ако имате отворен файл и той открие външни промени в него, той ще ги опресни вместо вас. Това е страхотна функция, но може да накара VS Code да работи бавно, когато количеството на наблюдаваните файлове е твърде голямо.

При отваряне на проекта чрез отваряне на папка (Ctrl+K Ctrl+O) и дефиниране на папката kubernetes:

Със сигурност ще получите това съобщение в долния десен ъгъл:

Не следвайте инструкциите, за да увеличите количеството манипулатори на файлове на ниво операционна система. Този проект има твърде много файлове и наблюдението на всички тях би било загуба на ресурси. За да имате представа, по-долу е броят файлове на папка след компилирането на проекта:

Вместо това ще изключим няколко от тях от програмата за наблюдение на файлове, като отворим Настройки (Ctrl+,) и променим настройката Files: Watcher Exclude. За лесен достъп напишете „гледайте“ в текстовото поле на филтъра:

Добавянето на тези 6 изключения, свързани с kubernetes, трябва да ви помогне да работите много по-леко. Само не забравяйте, че външни промени в тези файлове няма да бъдат открити автоматично.

Go Configuration

Променете филтъра за настройки, за да активирате както „Използване на езиков сървър“, така и „Автоматично попълване на неимпортирани пакети“.

Променете „Go: Format tool“ на „goimports“, тъй като в момента опцията по подразбиране (goreturns) не поддържа „go модули“.

Ето го

Това е почти всичко за настройка. Сега трябва да можете да преминете през изходния код с функции като Go to или Peek Definition, Find All References и т.н. Трябва също така да можете да компилирате и стартирате клъстер от единичен възел, за да тествате вашите промени.

За да изпълните клъстер с единичен възел въз основа на изпълнение на изходния код:

API_HOST=0.0.0.0 hack/local-up-cluster.sh

Това може да отнеме няколко минути. След като завърши зареждането, отворете друг отдалечен терминал, за да проверите дали kube-dns работи и работи:

Ако желаете локално пренасочване на портове към вашия отдалечен клъстер, разширението Code Remote също поддържа това. Просто се уверете, че вашият kubeconfig е правилно конфигуриран на вашата локална машина.

От тук накъде?

Е, сега имате среда на Kubernetes, работеща и можете да правите почти всичко. :)

Ако тепърва започвате като сътрудник, със сигурност бих ви препоръчал да прочетете Ръководството на сътрудника и след това да опитате да вземете един от онези елементи „Добър първи брой“ от github. Също така се уверете, че сте се присъединили към Kubernetes Slack channels.