Простой pipeline для Kubernetes deployment в gitlab-ci
Простой pipeline для Kubernetes deployment в gitlab-ci
Для деплоя в Kubernetes понадобилось написать простой двухшаговый pipeline, который будет собирать Docker контейнер на первом шаге и при помощи kubectl обновлять конфигурацию deployment в шаге два. Скрипты реализации build и deploy в этой статье я упущу и только покажу общий .gitalb-ci.yml файл:
variables:
CONTAINER_IMAGE: registry.docker.com/image
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
stages:
- build
- deploy
build:
stage: build
image: docker:stable
services:
- docker:dind
script:
# этот скрипт или другие действия для сборки и отправки docker контейнера в registry
- ./docker/build.sh
deploy:
when: manual
stage: deploy
image: alpine
only:
- master
script:
- apk add --no-cache curl
- curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
- chmod +x ./kubectl
- mv ./kubectl /usr/local/bin/kubectl
# в этом шаге мы делаем установку kubeconfig и сам kubectl apply
- ./docker/deploy.sh
Простые скрипты build.sh и deploy.sh предлагается написать самостоятельно, либо же мы их рассмотрим в будущих статьях.
aleksandrzhiliaev/checker — мониторинг для веб сайта
aleksandrzhiliaev/checker — мониторинг для веб сайта
Checker — простейшая библиотека на Go, опрашивающая заданный http адрес с некоторым заданным периодом времени и отправляющая метрики на различные бекенды в зависимости от конфигурации:
- stdout — отправка названия сайта и статус кода сервиса
- StatsD — отправка метрики формата: example_com.status_code
В данный момент ведется разработка для бекенда MySQL и Prometheus.
HA Proxy load balancer и docker
HA Proxy load balancer и docker
Недавно потребовался load balancer, который прост в настройке (привет любителям пописать конфиги в nginx) и удобен в установке. Выбор пал на HA Proxy — очень удобный TCP, HTTP прокси и load balancer сервер. Также было важно правильно настроить сервер в режиме SSL Passthrough ну и для удобства развёртывния чтобы можно было использовать Docker.
Деплоим локальный сервис в Kubernetes при помощи Minikube. Установка Ingress
Деплоим локальный сервис в Kubernetes при помощи Minikube. Установка Ingress
В прошлой статье мы установили сервис echoserver и открыли порт 31933 для общения приложения с внешним миром. Но как видно использовать IP адрес и порт неудобно конечным пользователям. Давайте сделаем так, чтобы наше приложение отвечало нам если мы пишем http://example.test в браузере вместо IP адреса и порта. Для этого нам потребуется запустить Minikube, прописать IP адрес Minikube и доменное имя example.test в /etc/hosts:
Деплоим локальный сервис в Kubernetes при помощи Minikube
Деплоим локальный сервис в Kubernetes при помощи Minikube
Для работы требуется установленный Minikube и kubectl.
Запустим приложение echoserver — простой сервис, который будет отдавать нам данные нашего запроса и параметры сервера:
kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
Для того, чтобы сервис стал доступен внешнему миру есть два способа — открыть порт либо установить ingress controller и заходить на сервис через обычный URL вида http://example.test.
Сделаем для начала первый способ, во многих случаях это будет достаточно для тестирования сервисов в Kubernetes. Попробуем открыть порт:
Monkey patching в Golang
Monkey patching в Golang
Наткнулся на очень интересную библиотеку, позволяющую переопределять функции и методы у объектов для написания юнит тестов перед компиляцией. В PHP, Ruby или Python это делается довольно просто парой строк. Т.к го все же язык компилируемый и со строгой типизацией тут нужно повозиться.
Итак, устанавливаем эту библиотеку:
github.com/bouk/monkey
Пишем наш тест и «мокаем» метод http.get:
Marketplace. Скрипт учета депозитов
Marketplace. Скрипт учета депозитов
Скрипт: Скрипт учета криптодепозитов.
Скрипт позволяет проводить приём, учёт и начисление процентов на различные депозиты в разных валютах.
Текущие поддерживаемые валюты:
- Webmoney WMZ,WME,WMR,WMU,WMG,WMX — с ограничениями
- Яндекс.Деньги — с ограничениями
- Qiwi
- Perfect Money
- Bitcoin
- Ethereum
- Litecoin
- Monero
- Ripple
- Bytecoin
- Stellar
- Waves token
- Advcash
- OKPAY
- Payeer
Поставка:
Marketplace. Скрипт обменного пункта Exchange
Marketplace. Скрипт обменного пункта Exchange
Скрипт: Автоматический обменный пункт Exchange.
Скрипт производит прием и обмен средств с заданным курсом и комиссией системы. Курсы возможно получать в режиме реального времени с одного из провайдеров курсов, процент или коэффициент сделки задается через систему администрирования скрипта.
Поддерживаемые валюты:
- Webmoney WMZ,WME,WMR,WMU,WMG,WMX
- Яндекс.Деньги
- Qiwi
- Perfect Money
- Bitcoin (Bitcoind, coinbase API, blockchain API)
- Ethereum
- Litecoin
- Monero
- Ripple
- Bytecoin
- Advcash
- Unitpay
- OKPAY
- Paxum
- BTCE-E (WEX) коды
- Payeer
Для некоторых провайдеров услуг требуется установка дополнительного программного обеспечения.
Отправка писем из alpine контейнера с помощью SSMTP
Отправка писем из alpine контейнера с помощью SSMTP
Для отправки писем при помощи стороннего почтового сервера пригодится утилита ssmtp. Распишем по шагам как можно отправлять письма внутри alpine или любого другого linux дистрибутива.
Установим ssmtp пакет:
apk add ssmtp
Правим файл /etc/ssmtp/ssmtp.conf:
[email protected] # любой доступный mail сервер mailhub=smtp.mail.ru:465 UseTLS=YES # пользователь от кого будем отсылать письма [email protected] AuthPass= rewriteDomain=sassoft.ru hostname=sassoft.ru realname=sassoft.ru FromLineOverride=YES
Правим /etc/ssmtp/revaliases:
Скрипт системы приема криптодепозитов
Скрипт системы приема криптодепозитов
Подготовлена и внедрена система учета и приема депозитов для криптовалют.
В основу скрипта выделены следующие модули:
- Пополнение баланса пользователя. Доступен прием Ethereum и Bitcoin, для каждого пользователя выдается случайный адрес из пула всех адресов. Уведомление администратору.
- Раздел мои депозиты. После пополнения баланса возможно создать новый депозит на определенный или безлимитный срок. Начисление процентов на депозит происходит в заданное в системе время еженедельно.
- Администрирование. Для учета пополнений и депозитов, вывода статистики по системе, пользователям и конфигурационные данные.
Внедрение системы простое и не потребует дополнительных знаний при использовании серверов Sassoft. Доступна аренда решения.