add robots, add variables, change docs

This commit is contained in:
Artur Akmalov 2023-05-25 00:02:52 +05:00
parent 4d4d42964d
commit 8cc01bfe08
22 changed files with 223 additions and 11 deletions

15
.env.example Normal file
View File

@ -0,0 +1,15 @@
ALGOLIA_APP_ID=
ALGOLIA_API_KEY=
ALGOLIA_INDEX_NAME=
GISCUS_DISCUSSION_CATEGORY=
GISCUS_DISCUSSION_CATEGORY_ID=
GISCUS_PROJECT_ID=
GOOGLE_ANALYTICS_TAG_ID=
ORGANIZATION_NAME=
REPOSITORY_NAME=
SITE_TITLE=
SITE_URL=

View File

@ -11,6 +11,8 @@ jobs:
name: github-pages
name: Deploy to GitHub Pages
runs-on: ubuntu-latest
env:
GOOGLE_ANALYTICS_TAG_ID: ${{ secrets.GOOGLE_ANALYTICS_TAG_ID }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
@ -29,6 +31,3 @@ jobs:
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./build
# - name: GitHub Pages change URL
# run: bash github-page-url.sh

2
.gitignore vendored
View File

@ -18,3 +18,5 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.env

5
LICENSE.txt Normal file
View File

@ -0,0 +1,5 @@
1. You are free to use this code to build your own website
2. Do not copy the content in the following directories: blog, blog-work, static/img
3. Crediting the author is appreciated
No confusing license. Be kind and help others learn.

View File

@ -2,7 +2,7 @@
slug: adguard-home
title: Adguard Home
description: Adguard Home DNS server guide
# image:
image: ./adguard_home_darkmode.svg
tags: [docker, homelab, adguard, dns]
date: 2021-10-13T10:00
---

View File

@ -2,7 +2,7 @@
slug: cache-server
title: Cache Server для компьютерного клуба
description: Сервер для компьютерного клуба. Cache Server позволяет разгрузить интернет канал и скачивать обновления по локальной сети
# image:
image: ./logo-lan-cache-server.png
tags: [docker, linux, server, cache, lan, networks]
date: 2019-07-12
---

View File

@ -2,7 +2,7 @@
slug: image-generator-python-flask-docker
title: Image generator
description: Image generator Python - Создать изображение необходимого размера веса
# image:
image: ./image-generator.png
tags: [docker, python, flask, image]
date: 2022-01-23
---

View File

@ -2,7 +2,7 @@
slug: rdp-wrapper
title: RDP wrapper
description: Что такое RDP wrapper, как его устанавливать, краткая инструкция как создать пользователя для удаленного рабочего стола
# image:
image: ./logo-rdpwrap.png
tags: [rdp, windows, server]
date: 2019-06-21
---

View File

@ -2,7 +2,7 @@
slug: releases-info
title: Releases info
description: releases check latest version
# image:
image: ./update-releases.png
tags: [docker, python, flask, releases]
date: 2023-05-15
---

7
docs/helm/charts.md Normal file
View File

@ -0,0 +1,7 @@
---
sidebar_position: 3
---
# helm charts
Общее хранилище чартов - <https://artifacthub.io>

View File

@ -2,7 +2,9 @@
sidebar_position: 2
---
# Rollback
# commands
## rollback
История версий (список)
```

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,164 @@
---
sidebar_position: 3
---
# k8s заметки
Мои конспекты по куберу. Описал своими словами, могут быть ошибки или неточности
Ссылка на официальную документацию [kubernetes.io](https://kubernetes.io/docs/home/)
Ниже представлена галерея архитектуры с разных сайтов, суть одна визуализация разная
![Kubernetes Architecture](./components-of-kubernetes.png "Kubernetes Architecture")
![Kubernetes Architecture](./k8s-arch2.png "Kubernetes Architecture")
![Kubernetes Architecture](./k8s-arch3.png "Kubernetes Architecture")
![Kubernetes Architecture](./Kubernetes-components.png "Kubernetes Architecture")
![Kubernetes Architecture](./maxresdefault.jpg "Kubernetes Architecture")
## Компоненты мастера (master node)
### API Server (kube-scheduler)
Основная шина взаимодействия и точка входа для всех запросов. Аутентификация, валидация (линтер)
### Scheduler (kube-scheduler)
Определяет на какой worker ноде создать новый под, в зависимости от требуемых ресурсов и занятости нод. Смотрит и проверяет нагрузку на ноды, по оределенной логике определяет куда назначить под
### Controller (kube controller manager)
Проверяет состояние кластера по API (через kube-api) в etcd. Демон который включается в себя группы контроллеров. Занимается созданием и обслуживанием linux name-space.
Контролируют разные ячейки типо deployment, replicaset, pod. Например если удалить под, а вышего него есть replicsate, deployment с желаемым состоянием под удалится, controller manager видит желаемое состояние ячеек и поднимет новый под.
### Etcd
База данных (хранилище ключ-значение). Хранятся все манифесты, текущее состояние, желаемое состояние. Любая сущность описанная в yml. Для работы необходим кворум (нечетное количество). Один master — один etcd, поэтому для отказоустойчивости желательно иметь 3 мастер ноды. В некоторых случаях выносят за пределы мастера в отдельный кластер БД.
## Компоненты ноды Node (worker node)
### Pod
Базовая сущность k8s, которая группирует контейнеры между собой. Внутри может содержать несколько контейнеров ( контейнеры находятся в одном namespace шарят между собой loopback интерфейс)
### Kubelet
Бинарник, основной компонент k8s существует на каждой worker ноде кластера. Проверят API сервер на предмет описания новых подов, смотрим принес ли controller что нибудь новое, если есть изменения пытается применить их. Например смотрит на новые ноды которые должны быть развернуты на своей ноде. (который назначает scheduler (положил в etcd))
После того как привел к нужному состоянию передает информацию в API сервер. Также сообщает постоянно о состояних подов
### Kube-proxy
Представляет собой контейнер, аналог ривер прокси, отвечает за пересылку и проксирование запросов к уже существующим сервисам или приложениям, в приватной сети самого кубера, по умолчанию использует ipvs (аналог iptables оптимизированный для k8s).
### Optionals Addons
Дополнительные плагины такие как RBAC, kalico (CNI),
## Сущности
### Deployment -> Replicaset -> Pod
Поле kind — сущности представлены и описаны в виде yaml файлов. Записываем то состояние к которму k8s должен привести. (Мы не описываем как наливать чай, а просто говорим какую кружку, какой чай, какого цвета, какой температуры и т.д. нужен как в ansible)
В yaml файл записывают минимальный необходимый набор описаний, остальное докидывает controller
Deployment — набор сценариев который порождает другую сущность replicaset ( а он своб очередь другую сущность pod)
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: name-space
spec:
selector:
matchLabels:
app: nginx
replicas: 5
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginxdemos/hello:0.2
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
readinessProbe:
httpGet:
path: /
port: 80
resources:
limits:
cpu: "0.5"
memory: 128Mi
requests:
cpu: "0.5"
memory: 128Mi
```
### Service
Используется для доступа к подам.
В моем понимании ClusterIP сервис работает как виртуальный IP для доступа к подам и проброса портов внутри кластера, т.к. к IP адресам подов нет смысла подвязываться
А тут имеем статичный сервис который по лейблам сам направит на нужный под.
Так же там по умолчанию выполняется балансировка нагрузки по round-robin
```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service-cluster-ip
namespace: name-space
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service-nodeport
namespace: name-space
spec:
type: NodePort
selector:
app: nginx
ports:
- port: 80
targetPort: 80
nodePort: 30000
```
## Пробы (Probes)
Нужны для проверки работоспособности контейнера. Проверкой проб занимается kubelet. Интересная статья про пробы хабр
Их существует три вида:
- Startup
- Liveness
- Readiness
### Startup probe
Производит проверку при старте контейнера, если контейнер запустился без ошибок и его процесс по PID живой значит проверка прошла успешно
### Liveness probe
Выполняется постоянно
### Readiness probe
Производит проверку при старте контейнера, если контейнер запустился без ошибок и его процесс по PID живой значит проверка прошла успешно
### Дополнительно про пробы
Производит проверку при старте контейнера, если контейнер запустился без ошибок и его процесс по PID живой значит проверка прошла успешно
## Пример запроса в API сервер
kubectl если отправляем какой нибудь манифест на создание пода например:
kubectl applay -f test.yml -n name-space
Запрос проходит аутентификацию, валидацию и передает информацию в etcd.
Scheduler через API сервер смотрит изменения etcd, видит что пытаются создать новый под, определяет ноду куда можно его засунуть и отправляет эту информацию в API сервер, а API сервер записывает в etcd
Controller manager в это время контролирует все это добро. Сморит тип kind создает ячейки внутри etcd
Дальше kubelet на соответствующей ноде видит информацию в etcd, что на него хотят загрузить под и пытается это сделать через CRI и результаты и сам процесс через API сервер сообщает в etcd.

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

View File

@ -1,5 +1,6 @@
// @ts-check
// Note: type annotations allow type checking and IDEs autocompletion
require("dotenv").config();
const lightCodeTheme = require('prism-react-renderer/themes/github');
const darkCodeTheme = require('prism-react-renderer/themes/dracula');
@ -35,8 +36,23 @@ const config = {
blog: {
showReadingTime: true,
blogSidebarCount: 0,
editUrl:
'https://github.com/akmalovaa/akmalov.com/tree/main/',
editUrl: 'https://github.com/akmalovaa/akmalov.com/tree/main/',
feedOptions: {
type: 'all',
copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc.`,
createFeedItems: async (params) => {
const { blogPosts, defaultCreateFeedItems, ...rest } = params;
return defaultCreateFeedItems({
// keep only the 10 most recent blog posts in the feed
blogPosts: blogPosts.filter((item, index) => index < 10),
...rest,
});
},
},
},
gtag: {
trackingID: process.env.GOOGLE_ANALYTICS_TAG_ID,
anonymizeIP: true,
},
theme: {
customCss: require.resolve('./src/css/custom.css'),

2
static/robots.txt Normal file
View File

@ -0,0 +1,2 @@
User-agent: *
Disallow: