Развертывание приложений на Akash Network

Aleksandr Vorobev
3 min readDec 5, 2020

Для начала расскажу кто же такой этот загадочный Akash Network

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

Итак сейчас я Вам покажу как буквально за 5 минут развернуть свое приложение с помощью Akash Network.

Для начала нужно установить сам akash

Для Mac OS установить можно с помощью brew в терминале

brew tap ovrclk/tap
brew install akash-edge
brew link akash-edge — force

Для других операционных систем можете посмотреть тут

Настроим некоторые переменные для терминала

Обьявление переменных впринципе необязательно, но тогда вместо переменных вида $VAR нужно будет писать в командах реальные значения.

export AKASH_NET=”https://raw.githubusercontent.com/ovrclk/net/master/edgenet"export AKASH_VERSION=”$(curl -s “$AKASH_NET/version.txt”)”export AKASH_CHAIN_ID="$(curl -s "$AKASH_NET/chain-id.txt")"export export AKASH_NODE=$(curl -s "$AKASH_NET/rpc-nodes.txt" | shuf -n 1)

Если у вас Mac OS то shuf работать не будет, тогда используйте gshuf, установив

brew install coreutils

Чтобы проверить, что переменная успешно записалась — используйте:

echo $VAR

Например на команду echo $AKASH_NODE должно вывести примерно такое:

echo $AKASH_NODEtcp://rpc-edgenet.akashdev.net:2665

Теперь создадим свой адрес

export KEY_NAME=ivanakash keys add "$KEY_NAME"

У вас выведется примерно такая информация, сохраните ее в надежном месте

- name: ivan
type: local
address: akash1cz87pqkad72gggrv3t7y2x9z56h9gqghlnx3j3
pubkey: akashpub1addwnpepqtnydvj056gy64uuquldq5yx7mr8ncmn3ut59wwl9p83d8h2v4rtg5xa3vn
mnemonic: ""
threshold: 0
pubkeys: []
**Important** write this mnemonic phrase in a safe place. It is the only way to recover your account if you ever forget your password.town wolf margin parrot strong disease dance eyebrow inflict meadow crunch version tube elite interest movie uphold column shift fox excuse humble nest call

И теперь последний штрих в настройке

export ACCOUNT_ADDRESS="$(akash keys show $KEY_NAME -a)"

Теперь нужно проверить есть ли на балансе что-то, для этого

akash query bank balances --node $AKASH_NODE $ACCOUNT_ADDRESS
balances:
- amount: "10000000"
denom: uakt
pagination:
next_key: null
total: "0"

Если нет поля amount, то нужно получить средства для этого на сайте для этого введите там ваш ACCOUNT_ADDRESS

Собственно сам деплой

Теперь с помощью пары команд мы выложим свое приложение, в качестве примера будем выкладывать приложение retwis(вот ссылка на гитхаб для интересующихся, но делать что-то с самим кодом приложения Вам не понадобится)

Скачаем файлик deploy.yaml с гитхаба, собственно этот файл и будет ссылаться на наше приложение, которое мы хотим выложить.

Теперь создадим деплоймент

akash tx deployment create deploy.yml --from $KEY_NAME --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID -y

Вы должны получить в ответ в терминале достаточно объёмный json.

Теперь получим информацию о нашем деплойменте

akash query market lease list --owner $ACCOUNT_ADDRESS --node $AKASH_NODE --state active

Тут ответ должен быть вот таким

- lease_id:
dseq: "12323"
gseq: 1
oseq: 1
owner: akash1j8s87w3fctz7nlcqtkl5clnc805r240443eksx
provider: akash15ql9ycjkkxhpc2nxtnf78qqjguwzz8gc4ue7wl
price:
amount: "77"
denom: uakt
state: active
pagination:
next_key: null
total: "0"

owner: должен будет соответствовать вашему $ACCOUNT_ADRESS

amount: это стоимость за один блок

Сохраните полученные переменные dseq ,gseq, oseq и provider как мы это делали вначале статьи с помощью export.

И финальный аккорд:

akash provider send-manifest deploy.yml --node $AKASH_NODE --dseq $DSEQ --oseq $OSEQ --gseq $GSEQ --owner $ACCOUNT_ADDRESS --provider $PROVIDERakash provider lease-status --node $AKASH_NODE --dseq $DSEQ --oseq $OSEQ --gseq $GSEQ --owner $ACCOUNT_ADDRESS --provider $PROVIDER

Тут возможны ошибки например — Error 500, тогда начните все заново начиная с создания деплоймента и конечно проверьте что все переменные на месте с помощью команды echo $VAR

Если все окей в терминале появится следующее:

{
"services": {
"web": {
"name": "web",
"available": 1,
"total": 1,
"uris": [
"6veev7chcfmnclgqklegcc.provider4.akashdev.net"
],
"observed-generation": 0,
"replicas": 0,
"updated-replicas": 0,
"ready-replicas": 0,
"available-replicas": 0
}
},
"forwarded-ports": {}
}

Поле “uris”: [“6veev7chcfmnclgqklegcc.provider4.akashdev.net”] содержит ссылку на Ваше приложение, этот домен также можно кастомизировать.

Ну что же проверим как выглядит наше приложение, для этого перейдем по полученной ссылке

Готово мы выложили веб приложение у которого есть еще и база данных!

Если мы захотим свернуть наш деплоймент, вызовем команду:

akash tx deployment close --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID --dseq $DSEQ --owner $ACCOUNT_ADDRESS --from $KEY_NAME -y

Все сегодня мы научились развертывать веб приложение на Akash Network, если у вас остались какие-то вопросы пишите мне в telegram @youasme

--

--