Latest Posts

Простой 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 предлагается написать самостоятельно, либо же мы их рассмотрим в будущих статьях.

Read more

aleksandrzhiliaev/checker — мониторинг для веб сайта

aleksandrzhiliaev/checker — мониторинг для веб сайта

Checker —  простейшая библиотека на Go, опрашивающая заданный http адрес с некоторым заданным периодом времени и отправляющая метрики на различные бекенды в зависимости от конфигурации:

  • stdout — отправка названия сайта и статус кода сервиса
  • StatsD — отправка метрики формата: example_com.status_code

В данный момент ведется разработка для бекенда MySQL и Prometheus.

Read more

HA Proxy load balancer и docker

HA Proxy load balancer и docker

Недавно потребовался load balancer, который прост в настройке (привет любителям пописать конфиги в nginx) и удобен в установке. Выбор пал на HA Proxy — очень удобный TCP, HTTP прокси и load balancer сервер. Также было важно правильно настроить сервер в режиме SSL Passthrough ну и для удобства развёртывния чтобы можно было использовать Docker.

Read more

Деплоим локальный сервис в Kubernetes при помощи Minikube. Установка Ingress

Деплоим локальный сервис в Kubernetes при помощи Minikube. Установка Ingress

В прошлой статье мы установили сервис echoserver и открыли порт 31933 для общения приложения с внешним миром. Но как видно использовать IP адрес и порт неудобно конечным пользователям. Давайте сделаем так, чтобы наше приложение отвечало нам если мы пишем http://example.test в браузере вместо IP адреса и порта. Для этого нам потребуется запустить Minikube, прописать IP адрес Minikube и доменное имя example.test  в /etc/hosts:

Read more

Деплоим локальный сервис в 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. Попробуем открыть порт:

Read more

Monkey patching в Golang

Monkey patching в Golang

Наткнулся на очень интересную библиотеку, позволяющую переопределять функции и методы у объектов для написания юнит тестов перед компиляцией. В PHP, Ruby или Python это делается довольно просто парой строк. Т.к го все же язык компилируемый и со строгой типизацией тут нужно повозиться.

Итак, устанавливаем эту библиотеку:

github.com/bouk/monkey

Пишем наш тест и «мокаем» метод http.get:

Read more

Marketplace. Скрипт учета депозитов

Marketplace. Скрипт учета депозитов

Скрипт: Скрипт учета криптодепозитов.

Скрипт позволяет проводить приём, учёт и начисление процентов на различные депозиты в разных валютах.

Текущие поддерживаемые валюты:

  1. Webmoney WMZ,WME,WMR,WMU,WMG,WMX — с ограничениями
  2. Яндекс.Деньги — с ограничениями
  3. Qiwi
  4. Perfect Money
  5. Bitcoin
  6. Ethereum
  7. Litecoin
  8. Monero
  9. Ripple
  10. Bytecoin
  11. Stellar
  12. Waves token
  13. Advcash
  14. OKPAY
  15. Payeer

Поставка:

Read more

Marketplace. Скрипт обменного пункта Exchange

Marketplace. Скрипт обменного пункта Exchange

Скрипт: Автоматический обменный пункт Exchange.

Скрипт производит прием и обмен средств с заданным курсом и комиссией системы. Курсы возможно получать в режиме реального времени с одного из провайдеров курсов, процент или коэффициент сделки задается через систему администрирования скрипта.

Поддерживаемые валюты:

  1. Webmoney WMZ,WME,WMR,WMU,WMG,WMX
  2. Яндекс.Деньги
  3. Qiwi
  4. Perfect Money
  5. Bitcoin (Bitcoind, coinbase API, blockchain API)
  6. Ethereum
  7. Litecoin
  8. Monero
  9. Ripple
  10. Bytecoin
  11. Advcash
  12. Unitpay
  13. OKPAY
  14. Paxum
  15. BTCE-E (WEX) коды
  16. Payeer

Для некоторых провайдеров услуг требуется установка дополнительного программного обеспечения.

Read more

Отправка писем из 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:

Read more

Скрипт системы приема криптодепозитов

Скрипт системы приема криптодепозитов

Подготовлена и внедрена система учета и приема депозитов для криптовалют.

В основу скрипта выделены следующие модули:

  1. Пополнение баланса пользователя. Доступен прием Ethereum и Bitcoin, для каждого пользователя выдается случайный адрес из пула всех адресов. Уведомление администратору.
  2. Раздел мои депозиты. После пополнения баланса возможно создать новый депозит на определенный или безлимитный срок. Начисление процентов на депозит происходит в заданное в системе время еженедельно.
  3. Администрирование. Для учета пополнений и депозитов, вывода статистики по системе, пользователям и конфигурационные данные.

Внедрение системы простое и не потребует дополнительных знаний при использовании серверов Sassoft. Доступна аренда решения.

Read more