Skip to content

otus-devops-2019-02/sigorilla_microservices

Repository files navigation

sigorilla_microservices

How to update src

cd src
git init
git remote add origin git@github.com:express42/reddit.git
git fetch
git checkout origin/<branch> -ft
rm -rf .git
cd ..

Setup docker machine

GOOGLE_PROJECT=docker-239511 docker-machine create --driver google \
    --google-machine-image https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/family/ubuntu-1604-lts \
    --google-machine-type n1-standard-1 \
    --google-zone europe-west1-b \
    docker-host
eval $(docker-machine env docker-host)

Shut down docker machine

eval $(docker-machine env --unset)
docker-machine rm docker-host

Host network driver

При запуске нескольких контейнеров с одной сетью --network host запущенным остается только первый, т.к. остальные не могут подключиться у нужному порту, ведь он уже занят.

2019/06/11 19:11:26 [emerg] 1#1: bind() to 0.0.0.0:80 failed (98: Address already in use)

Docker compose

Базовое имя проекта

Оно генерируется либо с помощью опции -p CLI, либо с помощью COMPOSE_PROJECT_NAME.

Monitorings

docker-compose -f docker-compose-monitoring.yml up -d

Gitlab

Setup

sudo su
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-get install docker-ce docker-compose

mkdir -p /srv/gitlab/config /srv/gitlab/data /srv/gitlab/logs
cd /srv/gitlab/
touch docker-compose.yml # copy of ./gitlab-ci/docker-compose.yml

docker-compose up -d

Setup runners

docker run -d --name gitlab-runner --restart always \
    -v /srv/gitlab-runner/config:/etc/gitlab-runner \
    -v /var/run/docker.sock:/var/run/docker.sock \
    gitlab/gitlab-runner:latest
docker exec -it gitlab-runner gitlab-runner register --run-untagged --locked=false
# http://<YOUR-VM-IP>/
# <TOKEN>
# linux,xenial,ubuntu,docker
# docker
# alpine:latest

Kubernetes

Minikube

minikube start
cd kubernetes/reddit
kubectl apply -f dev-namespace.yml
kubectl apply -f . -n dev

GKE

После поднятия кластера необходимо выполнить следующую команду (пример). Точную команду можно получить в интерфейсе GCP:

gcloud container clusters get-credentials cluster-1 --zone us-central1-a --project docker-239511

Получаем адрес сервиса:

# Host
kubectl get nodes -o wide
# Port
kubectl describe service ui -n dev | grep NodePort