Рубрики
Uncategorized

Развертывание простого портфеля с туннелями и контейнерами Argo для развлечения 🚀 — Часть 2

Хорошо, теперь, когда я наконец закончил с первой частью этого сообщения в блоге, вот часть 2! К настоящему времени ты … Tagged с DevOps, Docker, CICD, Gitlab.

Argotunnels (2 серии части)

Хорошо, теперь, когда я наконец закончил с первой частью этого сообщения в блоге, вот часть 2!

К настоящему времени у вас должен быть работа Cloudflare Argo Tunnel и Gitlab Runner.

$ podman ps
CONTAINER ID  IMAGE                                  COMMAND               CREATED     STATUS                PORTS       NAMES
31f46243cbe9  docker.io/gitlab/gitlab-runner:alpine  run --user=gitlab...  8 days ago  Up About an hour ago              gitlab-runner

$ systemctl --user status cloudflared
Loaded: loaded (/home/leon/.config/systemd/user/cloudflared.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-10-10 14:51:26 IST; 1h 8min ago

Для работы CI/CD Gitlab вам нужно добавить .gitlab-ci.yml , в корневой папке вашего проекта это похоже на основной ингредиент.

Это то, что мой .gitlab-ci.yml выглядит как.

stages:
  - publish
  - deploy
variables:
  TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
  TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA
# Begin building the image
publish:
  image: quay.io/podman/stable:latest
  stage: publish
  tags:
    - publish
  script:
    - podman build -t $TAG_COMMIT -t $TAG_LATEST .
    - podman login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY
    - podman  push $TAG_COMMIT
    - podman push $TAG_LATEST

# Deployment
deploy:
  image: alpine:latest
  stage: deploy
  tags:
    - deployment
  before_script:
    - apk update && apk add openssh-client
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - eval $(ssh-agent -s)
    - echo "${PK_KEY}" |tr -d '\r' | ssh-add -
    - ssh-keyscan $SERVER_IP

  script:
    - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY"
    - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman pull $TAG_COMMIT"
    - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman container rm -f $WEB_NAME || true"
    - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "podman run -d -p 8080:80 --name $WEB_NAME $TAG_COMMIT"
  environment:
    name: production
    url: https://portfolio.afro-coder.com/
  # Run only on the main branch
  only:
    - main

Теперь давайте погрузимся в некоторые из важных переменных здесь, их необходимо определить в вашем репозитории Gitlab (индивидуальный репозиторий) => Настройки => CI/CD =>.

Убедитесь, что вы маскируете важные и чувствительные переменные, и защищали их, чтобы они не появлялись в ваших журналах, ваше имя пользователя также должно быть длиннее 4 Chars, чтобы замаскировать его, а также соответствовать их критериям корпорации.

  • $ Server_user — SSH Login для пользователя.
  • $ Server_ip — виртуальная машина, где вы запускаете эти контейнеры
  • $ Web_name — имя контейнера, которое вы хотели бы сохранить
  • $ Pk_key — закрытый ключ, используемый для SSH для сервера. Вы можете использовать ssh-keygen Чтобы создать ключ и добавить открытый ключ к вашему .ssh/autorized_keys файл

Дополнительную документацию по переменным Gitlab можно найти здесь

Теперь продолжайте и совершите этот файл в свой репозиторий.

git add .gitlab-ci.yml
git commit -s -m "Added Gitlab CI"
git push -u

Если ваш Gitlab CI/CD не работает после того, как подтолкнул его к основной ветви. Пересмотрите имя ветви и теги, которые вы дали своему бегуну, они должны соответствовать тому, что в файле .gitlab-ci.yml

Если ваша сборка идет успешно, вы должны увидеть следующее.

После строительства трубопровода контейнер должен работать на хосте

$ podman ps
CONTAINER ID  IMAGE                                                     COMMAND               CREATED         STATUS             PORTS                 NAMES
31646243cbe9  docker.io/gitlab/gitlab-runner:alpine                     run --user=gitlab...  8 days ago      Up 16 minutes ago                        gitlab-runner-priv
4930b205caa1  registry.gitlab.com/leon9923/new-portfolio/main:c2054av4  httpd-foreground      15 minutes ago  Up 15 minutes ago  0.0.0.0:8080->80/tcp  portfolio.afro-coder.com

И вот и все, теперь у вас есть самостоятельно без корней (но все же неуверенный, если не защищен правильно.) gitlab ci/cd с туннелями Podman и Argo, и это работает!

Моей следующей целью было бы создать пользовательского исполнителя для Gitlab, который использует Podman без интерфейса Docker вообще, спасибо за чтение!

Argotunnels (2 серии части)

Оригинал: «https://dev.to/afrocoder/deploying-a-simple-portfolio-with-argo-tunnels-and-containers-for-fun-part-2-2n8l»