diff --git a/content/ru/docker-envs.md b/content/ru/docker-envs.md
index e450755e4c7c8a3627bb167742706fcd3f38cddc..79873a04eb944992466f9e4366dc622f8670a682 100644
--- a/content/ru/docker-envs.md
+++ b/content/ru/docker-envs.md
@@ -9,12 +9,12 @@ category: DevOps
 # Разделение докера на среды
 
 Должен ли ты разделять среды докера в несколько `docker-compose` файлов?
-Определенно! В некоторых случаях невозможно разобраться что разработчики хотели сделать или почему ничего не работает. Настройка раздельных сред может стать настоязей мешанино. В этой статье я покажу как настроить `docker-compose` и избежать миллиона проблем.
+Определенно! В некоторых случаях невозможно разобраться что разработчики хотели сделать или почему ничего не работает. Настройка раздельных сред может стать настояшей мешаниной. В этой статье я покажу как настроить `docker-compose` и избежать миллиона проблем.
 
 Как мы вообще можем разделить среды для локальной разработки и продовые?
 Отет прост: Требуется декомпозировать проект и создать отдельные файлы под каждую из сред или даже сервисов.
 
-Это нормально, если у тебя будет больше 2-ч `docker-compose` файлов. 
+Это нормально, если у тебя будет больше 2-х `docker-compose` файлов. 
 
 Например:
 ```
@@ -33,9 +33,9 @@ deploy
 ```
 
 ### Как это работает?
-Докер умеет работать с множеством `docker-compose` файлов одновременно.И мы можем использовать это для разделения сред.
+Докер умеет работать с множеством `docker-compose` файлов одновременно. И мы можем использовать это для разделения сред.
 
-Выглядит это следующим образом.
+Запуск таких конфигураций выглядит следующим образом:
 ```bash
 docker-compose \
 	-f "deploy/docker-compose.yml" \
@@ -46,12 +46,11 @@ docker-compose \
 
 В каждом из этих файлов определен какой-то кусок конфигурации, который не пересекается. Например в `docker-compose.yml` определено приложение и некоторые необходимые сервисы, а в остальных файлах добавляются сервисы или меняются значения предыдущих.
 
-Наверное, тут проще на примере пояснить.
+Наверное, тут проще показать на примере.
 
 Допустим у нас есть проект, у которого поднимается бекенд с параметрами, которые отличаются на проде и локально.
 
-Для простоты создадим простецикий проект со следующей структурой.
-
+Для простоты примера создадим простецкий проект со следующей структурой:
 ```
 proj
 ├── deploy
@@ -66,7 +65,7 @@ proj
 from sys import argv # это аргуметы переданные в скрипт
 
 def main():
-	print("; ".join(argv[1:])) # выводитна экран все аргументы программы
+	print("; ".join(argv[1:])) # выводит на экран все аргументы программы
 
 if __name__ == "__main__":
 	main()
diff --git a/content/ru/makefiles.md b/content/ru/makefiles.md
index c9fa26afaa8e89d2f472a5c2fd9ba2678c6c2296..cfc5482111612ecd7577e0a21c609d01e9bb81ca 100644
--- a/content/ru/makefiles.md
+++ b/content/ru/makefiles.md
@@ -6,9 +6,12 @@ category: 'DevOps'
 ---
 
 # Makefiles для чайников
-Если описывать в двух словах, то это просто описание команд для упрощения работы с проектом. Изначально делались для того, чтобы удобно компилировать всякие проекты на любых языках.
+Что такое мейкфайлы? Вы наверняка их встречали,
+если собирали проекты из ихсодных файлов. 
+Если описывать в двух словах, то это просто описание команд для упрощения работы
+с проектом. Изначально делались для того, чтобы удобно компилировать всякие проекты на любых языках.
 
-## Как они работают
+## Как они работают?
 Достаточно просто.
 
 Вот пример `Makefile`:
@@ -37,7 +40,7 @@ Hi!
 
 ## Зависимости таргетов
 
-На строчке объявления таргета `run` видно, что объявлен `test.gen`. Это зависимость данного таргета и она будет вызвана до того, как выполнится скрипт описываемого таргета. Таких зависимостей может быть много, перечисляются они чере пробел.
+На строчке объявления таргета `run` видно, что объявлен `test.gen`. Это зависимость данного таргета и она будет вызвана до того, как выполнится скрипт описываемого таргета. Таких зависимостей может быть много, перечисляются они через пробел.
 
 Например:
 ```makefile{}[Makefile]
@@ -96,7 +99,7 @@ memes
 
 ## Валидация сгенерированных файлов
 Зачастую `Makefile` используют для компиляции С и зачастую требуется
-собрать какую-либо часть проект и пропустить сборку этой части, если эта часть уже собрана.
+собрать какую-либо часть проекта в файл и пропустить сборку этого файла, если он уже собран.
 Раскрою секрет, в Makefile это базовый функционал.
 
 Давайте немного поменяем первый Makefile и запустим дважды.
diff --git a/content/ru/start-with-k8s.md b/content/ru/start-with-k8s.md
index 02f6dcda0e3d1dd7c370aadfa0931b0acced8633..94892e385069ef763b5b0b3a3401ad5321074ab7 100644
--- a/content/ru/start-with-k8s.md
+++ b/content/ru/start-with-k8s.md
@@ -7,15 +7,15 @@ position: 4
 
 # Проблема в изучении кубернетес
 
-Многие люди, кто задавались вопросом как начать работать с
-кубернетесом сталкивались с тем, что документация крайне
+Многие люди, кто задавались вопросом "Как начать работать с
+кубернетес?", сталкивались с тем, что документация крайне
 большая сложная и нет нормального описания как
-завернуть маленький проект из одного проекта в свой кластер или
-как развернуть свой кластер без боли.
+завернуть маленький проект из одного контейнра в свой кластер или
+как развернуть сам кластер без боли.
 
 А всё потому что вся документация нацелена на большие
 production-ready системы с большим rps и тому подобным.
-
+<br>
 В данной статье я попробую исправить это вселенское
 недопонимание используя k3s, свой комплюктер и немного знаний по кодингу.
 
@@ -28,12 +28,12 @@ production-ready системы с большим rps и тому подобны
 # Что такое кубернетес и почему это лучше докера
 
 Многие ребята, кто хорошо знаком с докером и его
-возможностями могут задаваться таким вопросом.
+возможностями, могут задаваться таким вопросом.
 Для тех кто в танке, напомню, что докер
 имеет вариант запуска в режиме кластера.
-Этот функционал называется docker swarm.
+Этот функционал называется [docker swarm](https://docs.docker.com/engine/swarm/).
 В целом, swarm отдалённо напоминает kubernetes,
-так как в этом режиме докер, худо-бедно но умеет
+так как в этом режиме докер худо-бедно умеет
 автоскейлится и запускаться в кластере,
 но это всё равно немного не то.
 
@@ -54,7 +54,7 @@ production-ready системы с большим rps и тому подобны
 
 Так как я в этой статье хотел затронуть
 совсем базовые и практические вещи, то рассматривать
-мы будем только крайне полезные компоненты.
+мы будем только самые часто используемые компоненты.
 
 - Container
 - Pod
@@ -65,12 +65,12 @@ production-ready системы с большим rps и тому подобны
 - Secret
 - ConfigMap
 
-А теперь рассмотрим немного поподробнее.
+А теперь рассмотрим каждый ресурс немного поподробнее.
 
 ## Container
 
-Контейнеры не то чтобы часть специфичная для кубернетес.
-С контейнерами вы можете быть знакомы из кучи систем.
+Контейнеры не являются чем-то специфичным для кубернетес.
+С контейнерами вы можете быть знакомы из кучи других систем.
 В контексте кубера они не обладают никакими дополнительными
 свойствами. Это ровно то же, что и контейнеры `containerd`
 или те, с которыми вы возились с докером. Ничего нового.
@@ -80,9 +80,9 @@ production-ready системы с большим rps и тому подобны
 
 <b-message type="is-warning" has-icon>
   
-  Важная ремарка. Кубер начиная с 2021 кубернетес не поддерживает
-  докер как бэкенд. Теперь кубер будет общаться с 
-  containerd напрямую. Это значит, что теперь перед использованием
+  Важная ремарка. Кубер, начиная с 2021 года, не поддерживает
+  докер как бэкенд. Теперь он будет общаться с 
+  containerd напрямую. Это значит, что перед использованием
   контейнеров собранных на локальной машине надо будет импортировать их
   в `containerd` используя `ctr image import`.
 
@@ -101,9 +101,9 @@ production-ready системы с большим rps и тому подобны
 
 В поде находится от одного до множества контейнеров.
 Интересная особенность пода в том, что все контейнеры
-делят один сетевой адресс. Другими словами,
+делят один сетевой адрес. Другими словами,
 если у вас один из контейнеров открыл порт `3000`,
-то другие контейнеры из пода эти порты использовать не смогут.
+то другие контейнеры из пода этот порт использовать не смогут.
 
 То есть, если вы хотите логически связанные приложения
 поместить в под, то они могут ходить друг к другу через лупбек
@@ -120,10 +120,10 @@ production-ready системы с большим rps и тому подобны
 
 <br>
 
-Deployment нужна именно для описания подов и создания
+Deployment нужен именно для описания подов и создания
 некоторых ресурсов, нужных для скейлинга.
 Также с помощью деплойментов можно делать откаты приложения через
-механиз роллбеков. Я это рассматривать не буду. Тут только база.
+механиз роллбеков. Я это рассматривать не буду. В этой статье только база.
 
 ## Service
 
@@ -147,7 +147,7 @@ Deployment нужна именно для описания подов и соз
 Также сервис выступает как балансировщик.
 
 <b-message type="is-info" has-icon>
-  Если вы хотите сделать запрос от одного пода до дргого внутри кластера, то
+  Если вы хотите сделать запрос от одного пода до дргого, внутри кластера, то
   вам придётся использовать сервис. 
   <br>
   Если вы попробуете сделать запрос напрямую по IP пода, то у вас, конечно же,
@@ -157,7 +157,7 @@ Deployment нужна именно для описания подов и соз
 
 ## Ingress
 
-Ингрессы это сервис описывающий куда пускать трафик,
+Ингресс - это сервис описывающий куда пускать трафик,
 который поступает снаружи кластера.
 
 <div align="center">
@@ -168,9 +168,9 @@ Deployment нужна именно для описания подов и соз
 
 Принцип работы ингресса следующий:
 
-Вы указываете хост ингресса и различные регексы пути.
+Вы указываете хост ингресса и различные пути.
 В зависимости от входящего запроса ингресс выбирает в какой сервис
-направить его и в какой порт.
+направить запрос и в какой порт.
 
 Настройка ингресса достаточно гибкая и я не думаю,
 что вы можете столкнуться с какими либо проблемами.
@@ -218,10 +218,10 @@ Deployment нужна именно для описания подов и соз
 - minikube
 
 На первый взгляд minikube может показаться лучшим вариантом.
-И он действительно хорош тем, что его легко почистить после
+И он действительно хорош тем, что его легко развернуть и почистить после
 своих экспериментов. Однако, там есть проблемы с ингрессами.
 По факту они не работают и там надо окольными путями получать
-адреса приложения.
+адреса.
 
 <br>
 
@@ -238,11 +238,10 @@ k3s - это легковесная production-ready реализация k8s. I
 
 ## Подключение кластера
 
-После установки в домашней дериктории должен был быть
+После установки `kubectl` в домашней дериктории должен был быть
 сгенерирован файл `.kube/config`. Этот файл содержит данные для
 подключения к различным кластерам. `minikube` Сам добавляет
-ключи для подключения к .kube/config. `K3S` не изменяет
-никаким образом `.kube/config`, поэтому надо будет это сделать вручную.
+ключи для подключения к .kube/config. `K3S` никак не изменяет `.kube/config`, поэтому надо будет это сделать вручную.
 
 Для того, чтобы это сделать сначала разберёмся как выглядит конфиг.
 
@@ -298,27 +297,28 @@ current-context: "k3s"
 можете передать параметр `--context $CONTEXT_NAME`, где `$CONTEXT_NAME` это название контекста.
 
 Чтобы достать данные для подключения к `k3s` надо посмотреть его конфиг
-и скопировать данные. Либо выставить переменную среды, которая будет
+и скопировать данные. Либо выставить переменную среды `KUBECONFIG`, которая будет
 указывать конфиг k3s. Конфиг подключения `k3s` лежит в файле `/etc/rancher/k3s/k3s.yaml`.
 
 Можете выполнить команду, которая будет просить kubectl использовать указанный конфиг:
-`export KUBE_CONFIG=/etc/rancher/k3s/k3s.yaml`
+`export KUBECONFIG=/etc/rancher/k3s/k3s.yaml`
 
 <br>
 
 Либо скопируйте нужные данные для подключения себе в `.kube/config`.
 
 После настройки выполните команду и проверьте что вам вернулось
-что-то подобное. Это значит, что никаких ресурсов пока в
-кластере нет. Это мы исправим позже. Пока что можно сказать,
-что подключение прошло успешно.
+что-то подобное.
 
 ```bash
 $ kubectl --context "my-context" get pods
 No resources found in default namespace.
 ```
 
-Если же у вас выпадает ошибка, например такая.
+Это значит, что никаких ресурсов пока в
+кластере нет. Это мы исправим чуть позже. Пока что можно сказать,
+что подключение прошло успешно.
+Если же у вас выпадает ошибка, например такая:
 
 ```
 The connection to the server localhost:8080 was refused - did you specify the right host or port?
@@ -331,18 +331,19 @@ sudo systemctl start k3s.service
 ```
 
 Либо у вас неверные данные для входа.
+Перепроверьте свой `.kube/config`.
 
 ### Мониторинг кластера
 
-Для просматривания управления кластером используется cli утилита `kubectl`.
-Но для того, чтобы с ней работать нужно получше понять что вообще в кластере есть.
+Для просмотра ресурсов и управления кластером используется `kubectl`.
+Но для того, чтобы с ней работать нужно получше понять, что вообще в кластере есть.
 
 Для этого я советую использовать [Lens](https://k8slens.dev/). Это крайне
 удобный интерфейс для управления своим кластером.
-Также там есть очень клёвая настрока, которая сама включит мониторинг
+Также там есть очень клёвая настройка, которая сама включит мониторинг
 потребления памяти и процессора для всех подов и кластера в общем.
 
-На локальной машине это не очень много смысла имеет,
+На локальной машине это не имеет смысла,
 а вот в проде было бы очень полезно.
 
 Выглядит Lens примерно так:
@@ -437,7 +438,7 @@ app.listen(port, host, () => {
 Это всё. Сервер готов.
 
 <hr>
-Протестируем запуск сервера выполнив команду ниже и открыв в
+Протестируем запуск сервера, выполнив команду ниже и открыв в
 своём любимом браузере http://localhost:8080.
 
 ```
@@ -501,7 +502,7 @@ docker run --rm -it -p 3400:8000 "s3rius/req-counter-express:latest"
 
 - Вы можете запушить собранное приложение в [Docker HUB](https://hub.docker.com/) и использовать его.
 - Можете использовать мой образ `s3rius/req-counter-express:latest`
-- Импортировать собранный образ как tar файл и импортировать его в containerd напрямую.
+- Сохранить собранный образ как tar файл и импортировать его в containerd напрямую.
   Как это сделать почитать можно в [этой статье](https://cwienczek.com/2020/06/import-images-to-k3s-without-docker-registry/).
 
 ### Деплой в k8s
@@ -645,7 +646,7 @@ service/req-counter-service created
 Готово. Теперь вы можете зайти в lens, выбрать свой кластер из списка
 и посмотреть как там поживает ваше приложение.
 
-Также не забудьте указать неймспей, в который вы беплоиди приложение.
+Также не забудьте указать неймспейс, в который вы деплоили приложение.
 
 Выглядит это чудо примерно так:
 
@@ -694,7 +695,7 @@ ingress.networking.k8s.io/req-counter-ingress unchanged
 service/req-counter-service unchanged
 ```
 
-Как можно видеть изменился только наш `Deployment`.
+Как можно видеть, изменился только наш `Deployment`.
 Остальные ресурсы остались нетронутыми.
 
 Давайте посмотрим на поды в нашем неймспейсе.
@@ -711,16 +712,15 @@ req-counter-deployment-764476db97-x28fr   1/1     Running   0          69s
 нашего приложения.
 
 
-Теперь я пойду и выполню кучу запросов по адресу http://req-counter.local/
-и получу балансировку между подами из коробки, без дополнительных 
+Теперь можно выполнить кучу запросов по адресу http://req-counter.local/
+и получить балансировку между подами из коробки, без дополнительных 
 конфигураций.
 
 Если у вас не получается найти адрес. Добавьте данный хост себе в 
 `/etc/hosts` на линуксе или в `C:\Windows\System32\drivers\etc\hosts` на windows,
 дописав в конец файла следующее:
 
-```
-...
+```[/etc/hosts]
 127.0.0.1 req-couter.local
 ```
 
diff --git a/layouts/default.vue b/layouts/default.vue
index 80912f79ed096da4d38fef6beed3bc401aa42a01..0577cdf17fe4e53920fcff5625f9b54ab2318cfb 100644
--- a/layouts/default.vue
+++ b/layouts/default.vue
@@ -3,7 +3,7 @@
     <b-navbar type="is-primary w-100" :fixed-top="true">
       <template #brand>
         <NuxtLink to="/" class="navbar-item">
-          <img src="/icon.png" alt="Logo" /> Dev blog
+          <img src="/logo.png" alt="Logo" /> Dev blog
         </NuxtLink>
       </template>
       <template #end>
diff --git a/nuxt.config.js b/nuxt.config.js
index d9db53483ccbd6aa00aafcc455e72354f41627e3..3848b05edf04ec60b744c31adf07cb6ca652a8f1 100644
--- a/nuxt.config.js
+++ b/nuxt.config.js
@@ -13,8 +13,12 @@ export default {
       { name: 'viewport', content: 'width=device-width, initial-scale=1' },
       { hid: 'description', name: 'description', content: '' },
       { name: 'format-detection', content: 'telephone=no' },
+      { hid: "og:image", name: 'og:image', content: "https://s3rius.blog/icon.png"}
     ],
     link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }],
+    headAttrs: {
+      "prefix": "og: http://ogp.me/ns#"
+    }
   },
 
   // Global CSS: https://go.nuxtjs.dev/config-css
diff --git a/pages/_slug.vue b/pages/_slug.vue
index 8063ad73c9bd7e5619420fd70ab01647b4115f20..46ecf3e68888094c409404db636a6f53076ff99a 100644
--- a/pages/_slug.vue
+++ b/pages/_slug.vue
@@ -48,12 +48,6 @@ export default defineComponent({
             name: 'og:image',
             content: doc.image,
           })
-        } else {
-          meta_data.push({
-            hid: 'og:image',
-            name: 'og:image',
-            content: 'https://s3rius.blog/logo.png',
-          })
         }
         meta.value = meta_data
       })
diff --git a/static/icon.png b/static/icon.png
index de3a24790531063cdb20ef5d4509f450ce88c4a2..418f9325094f656d20cb2dcc63161b0ff381d2e3 100644
Binary files a/static/icon.png and b/static/icon.png differ
diff --git a/static/logo.png b/static/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..de3a24790531063cdb20ef5d4509f450ce88c4a2
Binary files /dev/null and b/static/logo.png differ