You've already forked rarus_1c_devops
mirror of
https://github.com/agibalovsa/-1C_DevOps.git
synced 2025-10-08 23:22:16 +02:00
Добавлено описание инфраструктуры.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
.arg
|
||||
.env
|
||||
|
44
README.md
44
README.md
@@ -1 +1,43 @@
|
||||
# 1C-DevOps
|
||||
# 1C-DevOps
|
||||
|
||||
## Описание
|
||||
|
||||
В данном репозитории находятся настроечные файлы для создания docker образов и развертывания docker контейнеров приложений, относящихся к разработке на платформах 1С:Предприятие, 1С:Элемент.
|
||||
|
||||
Репозиторий содержит:
|
||||
|
||||
- Файлы *dockerfile* для создания репозитория.
|
||||
- Файлы *.arg.tmpl* - как шаблоны файлов для задания аргументов сборки образов.
|
||||
> Для кастомизации образов файлы аргументов сборки образов *.arg* помещены в *gitignore*, чтобы они не влияли на репозиторий.
|
||||
- Файлы *docker-compose.yml* для создания контейнеров с помощью `docker compose`.
|
||||
- файлы *docker-stack.yml* для создания контейнеров с помощью `docker stack deploy`.
|
||||
- Файлы *.env.tmpl* - как шаблоны файлов для задания переменны среды.
|
||||
> Для кастомизации контейнеров файлы переменных среды *.env* помещены в *gitignore*, чтобы они не влияли на репозиторий.
|
||||
- Файлы */swarm/\*.tmpl* - как шаблоны файлов конфигураций для **docker swarm**.
|
||||
> Файлы шаблонов настроек содержат минимальные настройки для успешного запуска приложения для предварительного знакомства.
|
||||
- Файлы *\*.sh* - вспомогательные скрипты для настройки инфраструктуры.
|
||||
|
||||
Порядок работы с репозиторием:
|
||||
|
||||
- Создать образ.
|
||||
- Поднять контейнер с минимальными настройками (docker compose, docker stack deploy).
|
||||
- Настроить приложения в контейнере помощью пользовательских настроек.
|
||||
|
||||
> **Важно**. Репозиторий на текущем этапе развития не претендует на полноту описания. Его развитие будет идти по мере изучения новых механизмов и оптимизации изученных раннее. За любую помощь в дополнении или развития текущих файлов настроек автор репозитория будет очень благодарен.
|
||||
|
||||
Автор постарался выполнить настроечные файлы таким образом, чтобы они отвечали требованиям манифеста развития репозитория.
|
||||
|
||||
## Манифест развития репозитория
|
||||
|
||||
- Репозиторий заточен прежде всего под создание стека технологий для работы с приложениями на 1С.
|
||||
- Все настроечные файлы репозитория должны быть выполнены таким образом, чтобы их хватило для начального запуска приложений с минимально-необходимыми настройками.
|
||||
- Все настроечные файлы в репозитории не должны мешать настройке приложений с помощью пользовательских конфигурационных файлов.
|
||||
- Содержания настроечных файлов репозитории должно хватить, чтобы пользователь смог поднимать приложения, без изменения этих файлов "под себя".
|
||||
- Настроечные файлы не должны путать пользователей репозитория своей сложной структурой и должны следовать единственной цели - помогать специалистам и сообществу в развитии своей внутренней инфраструктуры, и стеку технологии работы с приложениями 1с в целом.
|
||||
|
||||
## Содержание
|
||||
|
||||
- [Portainer](docker/portainer/RAEDME.md)
|
||||
- [Nginx](docker/portainer/RAEDME.md)
|
||||
- [Gitlab](docker/portainer/RAEDME.md)
|
||||
- [Sonarqube](docker/portainer/RAEDME.md)
|
||||
|
@@ -13,4 +13,4 @@ letsencrypt['enable'] = false
|
||||
nginx['redirect_http_to_https'] = true
|
||||
nginx['http2_enabled'] = false
|
||||
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
|
||||
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
|
||||
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
|
9
docker/nginx/swarm/.env.tmpl
Normal file
9
docker/nginx/swarm/.env.tmpl
Normal file
@@ -0,0 +1,9 @@
|
||||
HOSTNAME=
|
||||
GITLAB_HOSTNAME=
|
||||
GITLAB_HTTPS_PORT=
|
||||
GITLAB_SSH_PORT=
|
||||
SONAR_HOSTNAME=
|
||||
SONAR_HTTP_PORT=
|
||||
PORTAINER_HOSTNAME=
|
||||
PORTAINER_HTTPS_PORT=
|
||||
PORTAINER_HTTP_PORT=
|
5
docker/nginx/swarm/docker-stack-deploy.sh
Executable file
5
docker/nginx/swarm/docker-stack-deploy.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
export $(cat .env) > /dev/null 2>&1;
|
||||
|
||||
docker stack deploy -c docker-stack.yml nginx
|
@@ -53,8 +53,12 @@ server {
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-Protocol $scheme;
|
||||
proxy_set_header X-Url-Scheme $scheme;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
proxy_pass https://{{ env "PORTAINER_HOSTNAME" }}:{{ env "PORTAINER_HTTPS_PORT" }};
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
|
||||
proxy_pass https://{{ env "PORTAINER_HOSTNAME" }}:{{ env "PORTAINER_HTTPS_PORT" }}/;
|
||||
|
||||
}
|
||||
|
||||
|
7
docker/nginx/swarm/update-config.sh
Executable file
7
docker/nginx/swarm/update-config.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
if (docker config inspect nginx_conf) ; then
|
||||
docker config rm nginx_conf
|
||||
fi;
|
||||
|
||||
docker config create --template-driver golang nginx_conf nginx_conf.tmpl
|
15
docker/portainer/README.md
Normal file
15
docker/portainer/README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Portainer
|
||||
|
||||
[**Portainer**](https://docs.portainer.io/) - это универсальная платформа для управления контейнерами.
|
||||
|
||||
## Создание контейнера
|
||||
|
||||
Переменные среды:
|
||||
|
||||
- `PORTAINER_HTTPS_PORT` - порт хоста для указания HTTPS порта приложения.
|
||||
- `PORTAINER_HTTP_PORT` - порт хоста для указания HTTP порта приложения.
|
||||
- `PORTAINER_KUBERNET_PORT` - порт хоста для указания порта приложения интеграции с **Kubernetes**.
|
||||
|
||||
Запуск осуществляется с помощью **docker swarm** на узле где активирован менеджер swarm, для этого используется файл скрипта *docker-stack-deploy.sh*.
|
||||
|
||||
Для запуска приложения необходимо создать файл переменны среды *.env* на основе шаблона *.env.tmpl*.
|
3
docker/portainer/swarm/.env.tmpl
Normal file
3
docker/portainer/swarm/.env.tmpl
Normal file
@@ -0,0 +1,3 @@
|
||||
PORTAINER_HTTPS_PORT=9443
|
||||
PORTAINER_HTTP_PORT=9000
|
||||
PORTAINER_KUBERNET_PORT=8000
|
5
docker/portainer/swarm/docker-stack-deploy.sh
Executable file
5
docker/portainer/swarm/docker-stack-deploy.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
export $(cat .env) > /dev/null 2>&1;
|
||||
|
||||
docker stack deploy -c docker-stack.yml portainer
|
24
docker/sonarqube/README.md
Normal file
24
docker/sonarqube/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Sonarqube
|
||||
|
||||
[**Sonarqube**](https://docs.sonarsource.com/) - платформа с открытым исходным кодом для непрерывного анализа и измерения качества программного кода.
|
||||
|
||||
## Создание образа
|
||||
|
||||
Аргументы сборки:
|
||||
|
||||
- `SONARQUBE_VERSION` - версия [базового образа](https://hub.docker.com/_/sonarqube/tags?name=community) *sonarqube*.
|
||||
- `RUSSIAN_PACK` - версия [плагина русификации](https://github.com/1c-syntax/sonar-l10n-ru) *sonarqube*.
|
||||
- `BSL_PLUGIN_VERSION` - плагин, [поддерживающий язык 1С:Предприятие 8](https://github.com/1c-syntax/sonar-bsl-plugin-community) для *sonarqube*.
|
||||
- `BRANCH_PLUGIN_VERSION` - плагин, [позволяющий работать с ветками для](https://github.com/mc1arke/sonarqube-community-branch-plugin) *sonarqube community edition*.
|
||||
- `ROOT_CERTS` - ссылки на внешние публичные сертификаты, для их фиксации в образе.
|
||||
Данная переменная используется, для интеграции с внешними сервисами по протоколу HTTPS, например, с Gitlab. Ее указание необходимо в 2 случаях:
|
||||
- Внешние сервисы используют сертификаты, выпущенные внутренним PKI, и для их доверия необходимо указать корневые и промежуточные сертификаты.
|
||||
- Внешние сервисы используют сертификаты, выпущенными доверенными центрами сертификации, но, по каким-то причинам, эти сертификаты не установлены в базовом образе Linux. Соответственно возникает ошибка доверия при обращении к этим сервисам.
|
||||
|
||||
Сертификаты должны быть доступны по url ссылкам. Ссылки должны быть разделены запятой. Например:
|
||||
|
||||
```ini
|
||||
ROOT_CERTS="http://secure.globalsign.com/cacert/gsgccr6alphasslca2023.crt http://secure.globalsign.com/cacert/root-r6.crt""http://secure.globalsign.com/cacert/gsgccr6alphasslca2023.crt http://secure.globalsign.com/cacert/root-r6.crt"
|
||||
```
|
||||
|
||||
Для сборки приложения необходимо создать файл переменны среды *.arg* на основе шаблона *.arg.tmpl*.
|
@@ -2,3 +2,4 @@ SONARQUBE_VERSION=
|
||||
RUSSIAN_PACK=
|
||||
BSL_PLUGIN_VERSION=
|
||||
BRANCH_PLUGIN_VERSION=
|
||||
ROOT_CERTS=
|
@@ -8,5 +8,6 @@ docker build \
|
||||
--build-arg "RUSSIAN_PACK=$RUSSIAN_PACK" \
|
||||
--build-arg "BRANCH_PLUGIN_VERSION=$BRANCH_PLUGIN_VERSION" \
|
||||
--build-arg "BSL_PLUGIN_VERSION=$BSL_PLUGIN_VERSION" \
|
||||
--build-arg "ROOT_CERTS=$ROOT_CERTS" \
|
||||
-t sonarqube/1c:${SONARQUBE_VERSION}-${BSL_PLUGIN_VERSION} \
|
||||
.
|
||||
|
@@ -1,7 +1,7 @@
|
||||
# https://hub.docker.com/_/sonarqube
|
||||
ARG SONARQUBE_VERSION=lts-community
|
||||
|
||||
FROM sonarqube:${SONARQUBE_VERSION}
|
||||
FROM "sonarqube:${SONARQUBE_VERSION}"
|
||||
|
||||
USER root
|
||||
|
||||
@@ -17,16 +17,29 @@ ARG RUSSIAN_PACK \
|
||||
BRANCH_PLUGIN_VERSION
|
||||
|
||||
RUN set -eux; \
|
||||
curl -#Lo extensions/plugins/sonar-l10n-ru-plugin-${RUSSIAN_PACK}.jar https://github.com/1c-syntax/sonar-l10n-ru/releases/download/v${RUSSIAN_PACK}/sonar-l10n-ru-plugin-${RUSSIAN_PACK}.jar; \
|
||||
curl -#Lo "extensions/plugins/sonar-l10n-ru-plugin-${RUSSIAN_PACK}.jar" "https://github.com/1c-syntax/sonar-l10n-ru/releases/download/v${RUSSIAN_PACK}/sonar-l10n-ru-plugin-${RUSSIAN_PACK}.jar"; \
|
||||
if [ "$BSL_PLUGIN_VERSION" = "nightly*" ]; then \
|
||||
curl -#Lo /opt/sonarqube/extensions/plugins/sonar-communitybsl-plugin-${BSL_PLUGIN_VERSION}.jar https://github.com/1c-syntax/sonar-bsl-plugin-community/releases/download/v999.99.99/sonar-communitybsl-plugin-${BSL_PLUGIN_VERSION}.jar; \
|
||||
curl -#Lo "/opt/sonarqube/extensions/plugins/sonar-communitybsl-plugin-${BSL_PLUGIN_VERSION}.jar" "https://github.com/1c-syntax/sonar-bsl-plugin-community/releases/download/v999.99.99/sonar-communitybsl-plugin-${BSL_PLUGIN_VERSION}.jar"; \
|
||||
else \
|
||||
curl -#Lo /opt/sonarqube/extensions/plugins/sonar-communitybsl-plugin-${BSL_PLUGIN_VERSION}.jar https://github.com/1c-syntax/sonar-bsl-plugin-community/releases/download/v${BSL_PLUGIN_VERSION}/sonar-communitybsl-plugin-${BSL_PLUGIN_VERSION}.jar; \
|
||||
curl -#Lo "/opt/sonarqube/extensions/plugins/sonar-communitybsl-plugin-${BSL_PLUGIN_VERSION}.jar" "https://github.com/1c-syntax/sonar-bsl-plugin-community/releases/download/v${BSL_PLUGIN_VERSION}/sonar-communitybsl-plugin-${BSL_PLUGIN_VERSION}.jar"; \
|
||||
fi; \
|
||||
curl -#Lo /opt/sonarqube/extensions/plugins/sonarqube-community-branch-plugin-${BRANCH_PLUGIN_VERSION}.jar https://github.com/mc1arke/sonarqube-community-branch-plugin/releases/download/${BRANCH_PLUGIN_VERSION}/sonarqube-community-branch-plugin-${BRANCH_PLUGIN_VERSION}.jar; \
|
||||
curl -#Lo "/opt/sonarqube/extensions/plugins/sonarqube-community-branch-plugin-${BRANCH_PLUGIN_VERSION}.jar" "https://github.com/mc1arke/sonarqube-community-branch-plugin/releases/download/${BRANCH_PLUGIN_VERSION}/sonarqube-community-branch-plugin-${BRANCH_PLUGIN_VERSION}.jar"; \
|
||||
chown sonarqube:root /opt/sonarqube/extensions/plugins/*;
|
||||
|
||||
ENV SONAR_WEB_JAVAADDITIONALOPTS=-javaagent:/opt/sonarqube/extensions/plugins/sonarqube-community-branch-plugin-${BRANCH_PLUGIN_VERSION}.jar=web \
|
||||
SONAR_CE_JAVAADDITIONALOPTS=-javaagent:/opt/sonarqube/extensions/plugins/sonarqube-community-branch-plugin-${BRANCH_PLUGIN_VERSION}.jar=ce
|
||||
|
||||
ARG ROOT_CERTS=
|
||||
RUN set -eux; \
|
||||
for cert in ${ROOT_CERTS}; do \
|
||||
certFile=$(basename "${cert}"); \
|
||||
curl -#o "/usr/local/share/ca-certificates/${certFile}" "${cert}"; \
|
||||
keytool -importcert -keystore /opt/java/openjdk/lib/security/cacerts \
|
||||
-storepass changeit -file "/usr/local/share/ca-certificates/${certFile}" \
|
||||
-alias "${certFile%.*}" -noprompt; \
|
||||
done; \
|
||||
if [ "${ROOT_CERTS}" ]; then \
|
||||
update-ca-certificates; \
|
||||
fi;
|
||||
|
||||
USER sonarqube
|
||||
|
Reference in New Issue
Block a user