Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7c2e6b6ecc | |||
| f8a3fc4cd3 | |||
| 9b5aec1c96 | |||
| 8eae5f1a10 | |||
| 1cfe24037c | |||
| 8c8ea75d69 | |||
| 958dcab3fa | |||
| 797ad67b90 | |||
| 5f2ba688e9 | |||
| 9dcf1f829b | |||
| 5d64ae8732 | |||
| 2b2daa5117 | |||
| cf1b161794 | |||
| baf27b42bb | |||
| 6627a62853 | |||
| 348a9bbe73 | |||
| 20a1c062e3 | |||
| 7bef51f350 | |||
| a912d08482 | |||
| 4255c00ba0 | |||
| 3d8de18123 | |||
| 26203c617d | |||
| 5daef4f2d5 | |||
| 49a5c19f6c | |||
| 6668f65528 | |||
| 4e205e0eae | |||
| ebd04134bf | |||
| 89815ffe55 | |||
| 011287ba4f | |||
| ef784f00d8 | |||
| 9863bfdf7d | |||
| 3806c5c2cc | |||
| 35ff8bc862 | |||
| d3a695bde9 |
@@ -0,0 +1,89 @@
|
|||||||
|
name: Docker Build and Push # Имя CI джобы
|
||||||
|
|
||||||
|
on: # Выполняется если производится push в ветку main
|
||||||
|
push:
|
||||||
|
branches: [ main ]
|
||||||
|
|
||||||
|
env: # Переменные окружения
|
||||||
|
REGISTRY: gitea.trastinfo.ru
|
||||||
|
IMAGE_NAME: sailor/mkdocs
|
||||||
|
PLATFORMS: linux/amd64,linux/arm64
|
||||||
|
|
||||||
|
jobs: # Список выполняемых джоб
|
||||||
|
need-build: # джоба проверки изменений в зависимостях. Если requirements.txt был изменен, то будет выполнена сборка и пуш образа
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
src_changed: ${{ steps.need-build.outputs.src }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: dorny/paths-filter@v2
|
||||||
|
id: need-build
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
src:
|
||||||
|
- 'requirements.txt'
|
||||||
|
- 'dockerfile'
|
||||||
|
|
||||||
|
need-deploy: # джоба проверки изменений в файлах. При изменении пулит новые файлы и перезапускает контейнер
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
src_changed: ${{ steps.need-deploy.outputs.src }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: dorny/paths-filter@v2
|
||||||
|
id: need-deploy
|
||||||
|
with:
|
||||||
|
filters: |
|
||||||
|
src:
|
||||||
|
- 'docs/*'
|
||||||
|
- 'mkdocs.yml'
|
||||||
|
|
||||||
|
|
||||||
|
build: # джоба сборки и пуша образа. Выполняется если проверка изменений показала что requirements.txt был изменен
|
||||||
|
needs: need-build
|
||||||
|
if: needs.need-build.outputs.src_changed == 'true'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Login to Gitea Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ secrets.REGISTRY_USERNAME }}
|
||||||
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: main
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and push multi-arch image
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: need-deploy
|
||||||
|
if: needs.need-deploy.outputs.src_changed == 'true'
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Deploy over SSH
|
||||||
|
uses: appleboy/ssh-action@v0.1.6
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.HOST }}
|
||||||
|
username: ${{ secrets.USER }}
|
||||||
|
key: ${{ secrets.KEY }}
|
||||||
|
script: |
|
||||||
|
sudo docker run -p 8000:8000 gitea.trastinfo.ru/sailor/mkdocs:latest
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
name: ci
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- main
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Configure Git Credentials
|
|
||||||
run: |
|
|
||||||
git config user.name github-actions[bot]
|
|
||||||
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
|
|
||||||
- uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
|
|
||||||
- uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
key: mkdocs-material-${{ env.cache_id }}
|
|
||||||
path: .cache
|
|
||||||
restore-keys: |
|
|
||||||
mkdocs-material-
|
|
||||||
- run: pip install -r requirements.txt
|
|
||||||
- run: mkdocs gh-deploy --force
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
services:
|
||||||
|
mkdocks:
|
||||||
|
image: gitea.trastinfo.ru/sailor/mkdocs:latest
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
+4
-3
@@ -1,4 +1,4 @@
|
|||||||
FROM docker.io/library/python:alpine
|
FROM gitea.trastinfo.ru/sailor/pyhton:0.1
|
||||||
WORKDIR /home/ubadmin/mkdocks
|
WORKDIR /home/ubadmin/mkdocks
|
||||||
COPY ./requirements.txt .
|
COPY ./requirements.txt .
|
||||||
RUN apk add --update --no-cache --virtual .build-deps gcc musl-dev &&\
|
RUN apk add --update --no-cache --virtual .build-deps gcc musl-dev &&\
|
||||||
@@ -6,7 +6,9 @@ RUN apk add --update --no-cache --virtual .build-deps gcc musl-dev &&\
|
|||||||
pip install --no-cache-dir --requirement ./requirements.txt &&\
|
pip install --no-cache-dir --requirement ./requirements.txt &&\
|
||||||
apk del .build-deps &&\
|
apk del .build-deps &&\
|
||||||
rm ./requirements.txt
|
rm ./requirements.txt
|
||||||
WORKDIR /d
|
WORKDIR /mkdocs
|
||||||
|
COPY mkdocs.yml /mkdocs/mkdocs.yml
|
||||||
|
COPY docs/* /mkdocs/docs/
|
||||||
CMD ["mkdocs", "serve", "-a", "0.0.0.0:8000"]
|
CMD ["mkdocs", "serve", "-a", "0.0.0.0:8000"]
|
||||||
|
|
||||||
|
|
||||||
@@ -16,4 +18,3 @@ CMD ["mkdocs", "serve", "-a", "0.0.0.0:8000"]
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# Планы для Sailor.lab
|
|
||||||
~~1) Развернуть vault~~
|
|
||||||
2) Выбрать систему мониторинга
|
|
||||||
3) Настроить бекапы
|
|
||||||
4) Установить ubuntu на старый комп
|
|
||||||
5) Подумать над переделкой шаблона as a service?
|
|
||||||
6) Добавить диск и маунт диска для логов
|
|
||||||
7) Настроить Vault
|
|
||||||
8) Сделать дашборд для веб панелей
|
|
||||||
9) Развернуть opensearch
|
|
||||||
@@ -1 +1,2 @@
|
|||||||
Стартовая страница
|
Стартовая страница
|
||||||
|
1
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
services:
|
||||||
|
mkdocks:
|
||||||
|
image: gitea.trastinfo.ru/sailor/mkdocs:latest
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ./mkdocs.yml:/mkdocs/mkdocs.yml
|
||||||
|
- ./docs:/mkdocs/docs
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
@startuml
|
||||||
|
!theme bluegray
|
||||||
|
|
||||||
|
title Схема доступа к Vm через Proxy
|
||||||
|
|
||||||
|
node "Proxy" as proxy
|
||||||
|
|
||||||
|
node "Master-1" as m1
|
||||||
|
node "Master-2" as m2
|
||||||
|
node "Master-3" as m3
|
||||||
|
|
||||||
|
node "Worker-1" as w1
|
||||||
|
node "Worker-2" as w2
|
||||||
|
node "Worker-3" as w3
|
||||||
|
|
||||||
|
node "Docker" as d1
|
||||||
|
|
||||||
|
proxy -down-> m1
|
||||||
|
proxy -down-> m2
|
||||||
|
proxy -down-> m3
|
||||||
|
|
||||||
|
proxy -down-> w1
|
||||||
|
proxy -down-> w2
|
||||||
|
proxy -down-> w3
|
||||||
|
|
||||||
|
proxy -down-> d1
|
||||||
|
@enduml
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
@startuml
|
||||||
|
!theme bluegray
|
||||||
|
|
||||||
|
title Схема Кластера Кубера
|
||||||
|
|
||||||
|
node "Proxy" as proxy
|
||||||
|
|
||||||
|
node "Мастер-ноды" {
|
||||||
|
[Master-1]
|
||||||
|
[Master-2]
|
||||||
|
[Master-3]
|
||||||
|
}
|
||||||
|
|
||||||
|
node "Воркер-ноды" {
|
||||||
|
[Worker-1]
|
||||||
|
[Worker-2]
|
||||||
|
[Worker-3]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
proxy --> [Master-1]
|
||||||
|
proxy --> [Master-2]
|
||||||
|
proxy --> [Master-3]
|
||||||
|
|
||||||
|
[Master-1] --> [Worker-1]
|
||||||
|
[Master-1] --> [Worker-2]
|
||||||
|
[Master-1] --> [Worker-3]
|
||||||
|
[Master-2] --> [Worker-1]
|
||||||
|
[Master-2] --> [Worker-2]
|
||||||
|
[Master-2] --> [Worker-3]
|
||||||
|
[Master-3] --> [Worker-1]
|
||||||
|
[Master-3] --> [Worker-2]
|
||||||
|
[Master-3] --> [Worker-3]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@enduml
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Registry and local push
|
||||||
|
Gitea позволяет хранить свои образы контейнеров. Это позволяет не прибегать к dockerhub и не ставить еще и отдельную хранилку образов. Эта функция включена по умолчанию в новых версиях.
|
||||||
|
Для того что бы запушить образ требуется авторизоваться в регистри. Для этого нам требуется сгенерить токен доступа для регистри.
|
||||||
|
Что бы сгенерить токен переходим в настройки нашей Учетки (не репозитория) https://gitea.trastinfo.ru/user/settings/applications
|
||||||
|
Далее нажимаем создать новый токен. Пишем имя токена и выбираем доступа для токена. Для пайплайна нам требуется доступ к чтению repository и чтение\запись к package (Это как раз и есть registry)
|
||||||
|
Логинимся в gita
|
||||||
|
```
|
||||||
|
docker login gitea.trastinfo.ru --username sailor --password 5968ad45678afc6dc2f41b2ff389ca10fc982170
|
||||||
|
```
|
||||||
|
gitea.trastinfo.ru - Наша gitea
|
||||||
|
--username sailor - Юзер под которым логинемся
|
||||||
|
--password 5968ad45678afc6dc2f41b2ff389ca10fc982170 вместо пароля ставим токен, который мы сгенерили
|
||||||
|
Собираем образ. Есть две особенности на которые надо обратить внимание:
|
||||||
|
- Именование образов
|
||||||
|
- слеш (/) при указании тега
|
||||||
|
Именование образов имеет формат {registry}/{owner}/{image}:{tag}
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build -t gitea.trastinfo.ru/sailor/sailor-doc:0.01 -f dockerfile
|
||||||
|
```
|
||||||
|
После билда пушим образ
|
||||||
|
```
|
||||||
|
docker push gitea.trastinfo.ru/sailor/sailor-doc:0.01
|
||||||
|
```
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# NPM
|
||||||
|
Краткая инструкция как поднять и настроить NPM
|
||||||
|
Ссылки
|
||||||
|
Гайд с оф сайта https://nginxproxymanager.com/guide/
|
||||||
|
Гитхаб https://github.com/NginxProxyManager/nginx-proxy-manager
|
||||||
|
Для начала заходим на сервак и ставим докер.
|
||||||
|
```
|
||||||
|
curl https://get.docker.com | sh -
|
||||||
|
```
|
||||||
|
Далее создаем директорию под NPM. Директорию лучше не называть npm, что бы не путать с пакетным менджером
|
||||||
|
```
|
||||||
|
mkdir proxy && cd proxy
|
||||||
|
```
|
||||||
|
Создаем compose.yaml
|
||||||
|
```
|
||||||
|
nano compose.yaml
|
||||||
|
```
|
||||||
|
И записываем туда конфиг для композа
|
||||||
|
```
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: 'jc21/nginx-proxy-manager:2.15.1' #Можно посмотреть севужую версию на https://github.com/NginxProxyManager/nginx-proxy-manager
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
TZ: "Europe/Moscow"
|
||||||
|
ports:
|
||||||
|
- '80:80'
|
||||||
|
- '81:81' #Порт веб панели администратора, лучше поменять на свой
|
||||||
|
- '443:443'
|
||||||
|
volumes: #Директории для сертов и данных, создадутся в рабочем каталоге
|
||||||
|
- ./data:/data
|
||||||
|
- ./letsencrypt:/etc/letsencrypt
|
||||||
|
```
|
||||||
|
Разрешаем трафик по этим портам
|
||||||
|
```
|
||||||
|
sudo iptables -A INPUT -p tcp -i eth0 --dport 80,443,81 -j ACCEPT
|
||||||
|
```
|
||||||
|
Поднимаем контейнер композом
|
||||||
|
```
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
Заходим в вебку админа по ip-server:81 и настраиваем учетку и тд.
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# deployment.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: sailor-mkdocs # Имя вашего развертывания
|
||||||
|
spec:
|
||||||
|
replicas: 2 # Желаемое количество запущенных экземпляров (подов)
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: sailor-mkdocs # Как Deployment будет находить свои поды
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: sailor-mkdocs # Метка, которая будет присвоена подам
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: mkdocs
|
||||||
|
image: gitea.trastinfo.ru/sailor/mkdocs:5d64ae8732c674d0e6d5132a0e8c7db1c4acc790 # ПУТЬ К ВАШЕМУ ОБРАЗУ!
|
||||||
|
ports:
|
||||||
|
- containerPort: 8000 # Порт, который слушает ваше приложение внутри контейнера
|
||||||
|
resources: # Рекомендуется указывать для планирования ресурсов
|
||||||
|
requests:
|
||||||
|
memory: "128Mi"
|
||||||
|
cpu: "100m"
|
||||||
|
limits:
|
||||||
|
memory: "256Mi"
|
||||||
|
cpu: "250m"
|
||||||
@@ -22,8 +22,6 @@ theme:
|
|||||||
- navigation.instant
|
- navigation.instant
|
||||||
- navigation.instant.progress
|
- navigation.instant.progress
|
||||||
- navigation.sections
|
- navigation.sections
|
||||||
# - navigation.tabs
|
|
||||||
# - navigation.tabs.sticky
|
|
||||||
- navigation.path
|
- navigation.path
|
||||||
- navigation.top
|
- navigation.top
|
||||||
- navigation.prune
|
- navigation.prune
|
||||||
|
|||||||
Reference in New Issue
Block a user