- Перейти в каталог проекта
cd /path/to/project/docker/image
- Отредактировать
Dockerfile
- Собрать образ при помощи Dockerfile
docker build -t asemn00/golang_app_intern:latest .
- Создать и запустить контейнер из образа
docker run -d -p 3000:3000 asemn00/golang_app_intern:latest
- Открыть ссылку http://localhost:3000 в браузере для проверки приложения
- Войти в реестр Docker Hub
export DOCKER_REGISTRY=https://index.docker.io/v1/
export DOCKER_USER=asemn00 # пользователь registry
read -s DOCKER_PASSWORD # пароль от registry
echo $DOCKER_PASSWORD | docker login -u ${DOCKER_USER} --password-stdin ${DOCKER_REGISTRY}
- Загрузить созданный образ в репозиторий
docker push asemn00/golang_app_intern:latest
- Выйти из рееста
docker logout
Output:
Removing login credentials for https://index.docker.io/v1/
- Перейти в каталог проекта ansible
cd /path/to/project/ansible
- Написать Playbook
golang.yaml
- Установить библиотеку виртуального окружения
python3 -m pip install virtualenv
- Создать и активировать виртуальное окружение
python3 -m virtualenv ansible
source ansible/bin/activate
- Записать в
requirements.txt
библиотеки, необходимые для запуска Playbook - Установить их
pip install -r requirements.txt
- Запустить Playbook
ansible-playbook golang.yaml
- Установить Инструмент командной строки Kubernetes, Minikube, Helm
- Запустить minikube
minikube start
- Перейти в каталог проекта helm
cd /path/to/project/helm
- Создать чарт в каталоге golang-app
helm create golang-app
- Перейти в каталог чарта
cd golang-app
- Отредактировать файл values.yaml
- Развернуть чарт
helm install --values values.yaml golang-app .
- Проверить запустился ли контейнер
kubectl get pods
Output:
NAME READY STATUS RESTARTS AGE
golang-app-77658fc567-jwkl9 1/1 Running 0 97s
- Получить URL приложения
export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services golang-app)
export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
echo https://$NODE_IP:$NODE_PORT
- Проверить приложение
curl http://$NODE_IP:$NODE_PORT
Output:
Hello !