Архив автора: admin

7 Основных инструментов для Frontend веб-разработки сайтов в 2023 году

Каждому интерфейсному веб-разработчику необходим набор инструментов, помогающих ему выполнять свою работу максимально эффективно и точно. Но с таким широким набором инструментов, доступных в настоящее время, как вы можете узнать, какие инструменты действительно необходимы, а какие из них следует полностью исключить? Эта статья познакомит вас с лучшими инструментами для фронтальной веб-разработки в 2022 году, которые помогут вам отделить необходимое от ненужного. Для опытных специалистов в frontend разработке есть вакансии frontend разработчика, CreatikSoft – международная IT–компания с офисами в нескольких странах.

 

1. Git и GitHub

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

Git стал важным инструментом для веб-разработчиков, поскольку он позволяет программистам совместно работать над одним и тем же кодом, не отменяя изменений друг друга. Разработчикам также нравится, что это быстро, масштабируемо, с открытым исходным кодом, децентрализовано и доступно бесплатно. Именно эти функции сделали Git самой популярной системой контроля версий, используемой сегодня.

GitHub часто используется в паре с Git. GitHub — это облачный хостинг, используемый для хранения репозиториев кода. GitHub также предлагает функции управления проектами и организации для управления рабочим процессом и предоставления обратной связи, что еще больше упрощает общение и совместную работу членов команды над одним проектом.

Вакансии IT-компании по разработке ПО в CreatikSoft, компания-разработчик программного обеспечения с командой профессионалов из Российского научно-технического центра. Предоставление высококачественных и экономически эффективных услуг в области разработки full-stack решений для бизнеса.

 

2. Код Visual Studio (VS)

VS Code, созданный Microsoft в 2015 году, представляет собой бесплатный редактор кода с открытым исходным кодом, который можно использовать на платформах Windows, macOS и Linux. С момента его выпуска популярность VS Code взлетела до небес; в ежегодном опросе Stack Overflow за 2022 год 70% профессиональных веб-разработчиков сообщили, что они используют VS Code, что сделало бы его самым популярным инструментом среды frontend разработки в мире.

Такую популярность можно объяснить гибким, оптимизированным и многофункциональным характером VS Code. VS Code упрощает кодирование и помогает устранить потенциальные ошибки, предоставляя интеллектуальное завершение кода, подсветку синтаксиса и встроенную отладку. Веб-разработчикам также нравится тот факт, что они могут легко использовать VS Code с различными языками программирования и добавлять расширения, чтобы настроить приложение в соответствии со своими потребностями.

 

3. Sass

Sass, что расшифровывается как Синтаксически потрясающая таблица стилей, представляет собой каскадный препроцессор таблиц стилей (CSS). CSS — это один из трех основных языков интерфейсной разработки, используемый для структурирования макета сайта и элементов стиля на сайте, таких как цвет, шрифт и кнопки. Кодирование CSS имеет репутацию повторяющегося и трудоемкого процесса; SASS был разработан для решения этой проблемы путем упрощения процесса стилизации веб-сайта и сокращения повторений.

В настоящее время доступно множество препроцессоров CSS, но, как первый из когда-либо созданных, Sass считается пионером в этой области. Впервые выпущенный в 2006 году, Sass сохранил свою популярность благодаря функциям, которые он добавляет в CSS, включая переменные, микширование, импорт, наследование, вложенные правила и встроенные функции. По сей день Sass по-прежнему считается самым надежным, мощным и хорошо поддерживаемым CSS-препроцессором на рынке, что делает его незаменимым инструментом для интерфейсных веб-разработчиков.

 

4. React

React — это интерфейсная библиотека с открытым исходным кодом, созданная программистами Facebook для упрощения создания и управления элементами пользовательского интерфейса (UI). React был впервые выпущен в 2013 году и с тех пор неуклонно набирает популярность. Он даже был признан наиболее часто используемой библиотекой или фреймворком среди веб-разработчиков в 2021 году, заняв первое место после jQuery.

Популярность React в основном обусловлена его способностью сокращать время, необходимое для разработки и обновления функций пользовательского интерфейса, которые являются основными строительными блоками любого приложения. До создания React программистам приходилось создавать пользовательский интерфейс с нуля, используя JavaScript или библиотеки, специально не предназначенные для пользовательского интерфейса, что приводило к сложному кодированию, которое было сложно поддерживать. Чтобы упростить кодирование и повысить производительность сайта, React сегментирует страницы на модули или “компоненты”, что обеспечивает более упорядоченный поток данных между передней и задней частями.

 

5. Bootstrap

Bootstrap — это еще один инструмент пользовательского интерфейса, который обязательно должен быть у всех интерфейсных веб-разработчиков. Этот инструмент, созданный Twitter в 2011 году, представляет собой фреймворк на основе CSS с открытым исходным кодом и дополнительными шаблонами JavaScript, которые позволяют программистам быстро создавать и настраивать адаптивные веб-сайты.

В настоящее время Bootstrap используется более чем на 22% всех веб-сайтов и благодаря своей гибкости и простоте использования стал универсальным фреймворком во всей отрасли. Разработчики используют bootstrap для создания базовой структуры веб-сайта и установки определений стиля HTML вместо того, чтобы многократно программировать каждый элемент по отдельности. Наличие этой структуры помогает обеспечить единообразный внешний вид веб-сайта, который остается неизменным в различных браузерах.

 

6. Инструменты разработчика Chrome

Встроенные непосредственно в веб-браузер Google Chrome инструменты разработчика Chrome (или DevTools) позволяют программистам просматривать и редактировать HTML и CSS в режиме реального времени прямо на сайте, не переключаясь на стороннюю программу редактирования кода. Это позволяет разработчикам протестировать, как сайт выглядит в реальном времени, и внести изменения в браузере, прежде чем вносить какие-либо изменения. Дополнительные функции позволяют пользователям отлаживать JavaScript, диагностировать проблемы с производительностью, проверять отзывчивость веб-сайта, проверять файлы cookie и ресурсы, плюс SEO аудит.

Хотя во все современные веб-браузеры встроены инструменты разработки, Google Chrome является бесспорным лидером отрасли; на сегодняшний день это самый широко используемый веб-браузер во всем мире, занимающий более 60% мирового рынка. Повсеместное использование Chrome делает DevTools незаменимым для тех, кто работает в интерфейсной веб-разработке

 

7. Диспетчер пакетов узлов (npm)

Node Package Manager (npm) — менеджер пакетов для Node.js, асинхронная среда выполнения JavaScript. Как и все менеджеры пакетов, npm используется для автоматизации установки, настройки, обновления, обслуживания и удаления пакетов программного обеспечения.

Npm стал незаменимым инструментом для интерфейсных разработчиков, поскольку упрощает управление несколькими версиями кода и быстро разрешает конфликты зависимостей между различными пакетами кода. Еще одной уникальной особенностью npm является то, что он предлагает хранилище из более чем миллиона пакетов кода, что делает его крупнейшим реестром программного обеспечения в мире.

 

Почетное упоминание: Stack Overflow

Как онлайн-сообщество программистов номер один, Stack Overflow заслуживает упоминания как незаменимый инструмент для интерфейсных веб-разработчиков. Stack Overflow — это место, куда программисты обращаются, чтобы задавать вопросы, давать рекомендации, решать проблемы с кодированием и учиться друг у друга.

Этот важный обмен знаниями происходит с момента основания сайта в 2008 году. С тех пор Stack Overflow вырос до 16 миллионов пользователей, совершающих 11 миллионов посещений в день. В Stack Overflow ежедневно публикуется в среднем 5700 вопросов, на 70% из которых отвечают члены сообщества. Благодаря подробным и точным ответам, предоставленным знающими членами сообщества, Stack Overflow является обязательным инструментом для любого веб-разработчика.



2022-12-06T17:08:21
Программирование

7 Основных инструментов для Frontend веб-разработки сайтов в 2023 году

Каждому интерфейсному веб-разработчику необходим набор инструментов, помогающих ему выполнять свою работу максимально эффективно и точно. Но с таким широким набором инструментов, доступных в настоящее время, как вы можете узнать, какие инструменты действительно необходимы, а какие из них следует полностью исключить? Эта статья познакомит вас с лучшими инструментами для фронтальной веб-разработки в 2022 году, которые помогут вам отделить необходимое от ненужного. Для опытных специалистов в frontend разработке есть вакансии frontend разработчика, CreatikSoft – международная IT–компания с офисами в нескольких странах.

 

1. Git и GitHub

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

Git стал важным инструментом для веб-разработчиков, поскольку он позволяет программистам совместно работать над одним и тем же кодом, не отменяя изменений друг друга. Разработчикам также нравится, что это быстро, масштабируемо, с открытым исходным кодом, децентрализовано и доступно бесплатно. Именно эти функции сделали Git самой популярной системой контроля версий, используемой сегодня.

GitHub часто используется в паре с Git. GitHub — это облачный хостинг, используемый для хранения репозиториев кода. GitHub также предлагает функции управления проектами и организации для управления рабочим процессом и предоставления обратной связи, что еще больше упрощает общение и совместную работу членов команды над одним проектом.

Вакансии IT-компании по разработке ПО в CreatikSoft, компания-разработчик программного обеспечения с командой профессионалов из Российского научно-технического центра. Предоставление высококачественных и экономически эффективных услуг в области разработки full-stack решений для бизнеса.

 

2. Код Visual Studio (VS)

VS Code, созданный Microsoft в 2015 году, представляет собой бесплатный редактор кода с открытым исходным кодом, который можно использовать на платформах Windows, macOS и Linux. С момента его выпуска популярность VS Code взлетела до небес; в ежегодном опросе Stack Overflow за 2022 год 70% профессиональных веб-разработчиков сообщили, что они используют VS Code, что сделало бы его самым популярным инструментом среды frontend разработки в мире.

Такую популярность можно объяснить гибким, оптимизированным и многофункциональным характером VS Code. VS Code упрощает кодирование и помогает устранить потенциальные ошибки, предоставляя интеллектуальное завершение кода, подсветку синтаксиса и встроенную отладку. Веб-разработчикам также нравится тот факт, что они могут легко использовать VS Code с различными языками программирования и добавлять расширения, чтобы настроить приложение в соответствии со своими потребностями.

 

3. Sass

Sass, что расшифровывается как Синтаксически потрясающая таблица стилей, представляет собой каскадный препроцессор таблиц стилей (CSS). CSS — это один из трех основных языков интерфейсной разработки, используемый для структурирования макета сайта и элементов стиля на сайте, таких как цвет, шрифт и кнопки. Кодирование CSS имеет репутацию повторяющегося и трудоемкого процесса; SASS был разработан для решения этой проблемы путем упрощения процесса стилизации веб-сайта и сокращения повторений.

В настоящее время доступно множество препроцессоров CSS, но, как первый из когда-либо созданных, Sass считается пионером в этой области. Впервые выпущенный в 2006 году, Sass сохранил свою популярность благодаря функциям, которые он добавляет в CSS, включая переменные, микширование, импорт, наследование, вложенные правила и встроенные функции. По сей день Sass по-прежнему считается самым надежным, мощным и хорошо поддерживаемым CSS-препроцессором на рынке, что делает его незаменимым инструментом для интерфейсных веб-разработчиков.

 

4. React

React — это интерфейсная библиотека с открытым исходным кодом, созданная программистами Facebook для упрощения создания и управления элементами пользовательского интерфейса (UI). React был впервые выпущен в 2013 году и с тех пор неуклонно набирает популярность. Он даже был признан наиболее часто используемой библиотекой или фреймворком среди веб-разработчиков в 2021 году, заняв первое место после jQuery.

Популярность React в основном обусловлена его способностью сокращать время, необходимое для разработки и обновления функций пользовательского интерфейса, которые являются основными строительными блоками любого приложения. До создания React программистам приходилось создавать пользовательский интерфейс с нуля, используя JavaScript или библиотеки, специально не предназначенные для пользовательского интерфейса, что приводило к сложному кодированию, которое было сложно поддерживать. Чтобы упростить кодирование и повысить производительность сайта, React сегментирует страницы на модули или “компоненты”, что обеспечивает более упорядоченный поток данных между передней и задней частями.

 

5. Bootstrap

Bootstrap — это еще один инструмент пользовательского интерфейса, который обязательно должен быть у всех интерфейсных веб-разработчиков. Этот инструмент, созданный Twitter в 2011 году, представляет собой фреймворк на основе CSS с открытым исходным кодом и дополнительными шаблонами JavaScript, которые позволяют программистам быстро создавать и настраивать адаптивные веб-сайты.

В настоящее время Bootstrap используется более чем на 22% всех веб-сайтов и благодаря своей гибкости и простоте использования стал универсальным фреймворком во всей отрасли. Разработчики используют bootstrap для создания базовой структуры веб-сайта и установки определений стиля HTML вместо того, чтобы многократно программировать каждый элемент по отдельности. Наличие этой структуры помогает обеспечить единообразный внешний вид веб-сайта, который остается неизменным в различных браузерах.

 

6. Инструменты разработчика Chrome

Встроенные непосредственно в веб-браузер Google Chrome инструменты разработчика Chrome (или DevTools) позволяют программистам просматривать и редактировать HTML и CSS в режиме реального времени прямо на сайте, не переключаясь на стороннюю программу редактирования кода. Это позволяет разработчикам протестировать, как сайт выглядит в реальном времени, и внести изменения в браузере, прежде чем вносить какие-либо изменения. Дополнительные функции позволяют пользователям отлаживать JavaScript, диагностировать проблемы с производительностью, проверять отзывчивость веб-сайта, проверять файлы cookie и ресурсы, плюс SEO аудит.

Хотя во все современные веб-браузеры встроены инструменты разработки, Google Chrome является бесспорным лидером отрасли; на сегодняшний день это самый широко используемый веб-браузер во всем мире, занимающий более 60% мирового рынка. Повсеместное использование Chrome делает DevTools незаменимым для тех, кто работает в интерфейсной веб-разработке

 

7. Диспетчер пакетов узлов (npm)

Node Package Manager (npm) — менеджер пакетов для Node.js, асинхронная среда выполнения JavaScript. Как и все менеджеры пакетов, npm используется для автоматизации установки, настройки, обновления, обслуживания и удаления пакетов программного обеспечения.

Npm стал незаменимым инструментом для интерфейсных разработчиков, поскольку упрощает управление несколькими версиями кода и быстро разрешает конфликты зависимостей между различными пакетами кода. Еще одной уникальной особенностью npm является то, что он предлагает хранилище из более чем миллиона пакетов кода, что делает его крупнейшим реестром программного обеспечения в мире.

 

Почетное упоминание: Stack Overflow

Как онлайн-сообщество программистов номер один, Stack Overflow заслуживает упоминания как незаменимый инструмент для интерфейсных веб-разработчиков. Stack Overflow — это место, куда программисты обращаются, чтобы задавать вопросы, давать рекомендации, решать проблемы с кодированием и учиться друг у друга.

Этот важный обмен знаниями происходит с момента основания сайта в 2008 году. С тех пор Stack Overflow вырос до 16 миллионов пользователей, совершающих 11 миллионов посещений в день. В Stack Overflow ежедневно публикуется в среднем 5700 вопросов, на 70% из которых отвечают члены сообщества. Благодаря подробным и точным ответам, предоставленным знающими членами сообщества, Stack Overflow является обязательным инструментом для любого веб-разработчика.



2022-12-06T17:08:21
Программирование

GPing (Graphical Ping): классная утилита CLI для системных администраторов.

GPing (Graphical Ping): классная утилита CLI для системных администраторов.

GPing (Graphical Ping): классная утилита CLI для системных администраторов.

В предыдущем посте мы говорили о графическое приложение называть терминатор, который является надежный терминал идеально подходит для Опытные пользователи, как и многие другие существующие и рассмотренные здесь. Поэтому, чтобы обеспечить преемственность в этой области приложений или передовых инструментов для идеального использования IT-профессионалы в качестве Сисадмины и DevOps о GNU/Linux мы поговорим о «GPing».

Gping или графический Ping это полезный инструмент, идеально подходящий для использования в области администрирования серверов, поскольку он может генерировать подробный визуальный график при генерации пинга более чем одному хосту (компьютеру) одновременно в течение заданного периода времени.



Читать

Terminator: полезный эмулятор терминала для продвинутых пользователей.

 

Terminator: полезный эмулятор терминала для продвинутых пользователей.

Terminator: полезный эмулятор терминала для продвинутых пользователей.

Продолжая обновление содержания старых статей, сегодня настала очередь приложения «Терминатор». Это приложение, которое мы уже называли 10 лет назад с полным основанием, король терминалов.

Лично я начал использовать его около 10 лет назад, когда работал Сисадмин в организации, чьи серверная платформа он был на 100% основан на Linux. Поэтому, зная факты, я могу утверждать, что это отличное приложение, чтобы попробовать и использовать, если вы постоянно используете терминалы для различных действий.

Читать

docker-compose — hashicorp vault

Hashicop Vault будем ставить в docker-compose




ставим docker:




yum remove docker docker-engine docker.io
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager —add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl start docker
systemctl enable docker




ставим docker-compose




https://github.com/docker/compose/releases
на текущий момент самая последняя версия:
2,6,1





https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64




выкачиваем её:




curl -L «https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64» -o /usr/local/bin/docker-compose




chmod +x /usr/local/bin/docker-compose




всё готово.




теперь приступим к установке  Vault




cat docker-compose.yml




version: '3.8'



services:



  vault:

    build:

      context: ./vault

      dockerfile: Dockerfile

    ports:

      - 8200:8200

    volumes:

      - ./vault/config:/vault/config

      - ./vault/policies:/vault/policies

      - ./vault/data:/vault/data

      - ./vault/logs:/vault/logs

    environment:

      - VAULT_ADDR=http://127.0.0.1:8200

      - VAULT_API_ADDR=http://127.0.0.1:8200

    command: server -config=/vault/config/vault-config.json

    cap_add:

      - IPC_LOCK

    depends_on:

      - consul



  consul:

    build:

      context: ./consul

      dockerfile: Dockerfile

    ports:

      - 8500:8500

    command: agent -server -bind 0.0.0.0 -client 0.0.0.0 -bootstrap-expect 1 -config-file=/consul/config/config.json

    volumes:

      - ./consul/config/consul-config.json:/consul/config/config.json

      - ./consul/data:/consul/data



  consul-worker:

    build:

      context: ./consul

      dockerfile: Dockerfile

    command: agent -server -join consul -config-file=/consul/config/config.json

    volumes:

      - ./consul/config/consul-config.json:/consul/config/config.json

    depends_on:

      - consul





cat consul/Dockerfile




# base image

FROM alpine:3.14



# set consul version

ENV CONSUL_VERSION 1.10.2



# create a new directory

RUN mkdir /consul



# download dependencies

RUN apk --no-cache add 

      bash 

      ca-certificates 

      wget



# download and set up consul

RUN wget --quiet --output-document=/tmp/consul.zip https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip && 

    unzip /tmp/consul.zip -d /consul && 

    rm -f /tmp/consul.zip && 

    chmod +x /consul/consul



# update PATH

ENV PATH="PATH=$PATH:$PWD/consul"



# add the config file

COPY ./config/consul-config.json /consul/config/config.json



# expose ports

EXPOSE 8300 8400 8500 8600



# run consul

ENTRYPOINT ["consul"]





cat consul/config/consul-config.json




{

  "datacenter": "localhost",

  "data_dir": "/consul/data",

  "log_level": "DEBUG",

  "server": true,

  "ui": true,

  "ports": {

    "dns": 53

  }

}





mkdir consul/data/




cat vault/Dockerfile




# base image

FROM alpine:3.14



# set vault version

ENV VAULT_VERSION 1.11.2



# create a new directory

RUN mkdir /vault



# download dependencies

RUN apk --no-cache add 

      bash 

      ca-certificates 

      wget



# download and set up vault

RUN wget --quiet --output-document=/tmp/vault.zip https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip && 

    unzip /tmp/vault.zip -d /vault && 

    rm -f /tmp/vault.zip && 

    chmod +x /vault



# update PATH

ENV PATH="PATH=$PATH:$PWD/vault"



# add the config file

COPY ./config/vault-config.json /vault/config/vault-config.json



# expose port 8200

EXPOSE 8200



# run vault

ENTRYPOINT ["vault"]





cat vault/config/vault-config.json




{

  "backend": {

    "consul": {

      "address": "consul:8500",

      "path": "vault/"

    }

  },

  "listener": {

    "tcp":{

      "address": "0.0.0.0:8200",

      "tls_disable": 1

    }

  },

  "ui": true

}





mkdir vault/data/
mkdir vault/logs/




cat vault/policies/app-policy.json




{

  "path": {

    "kv/data/app/*": {

      "policy": "read"

    }

  }

}





запускаем:




docker-compose up -d




ждём пока соберётся.
потом заходим в Vault:




http://192.168.1.170:8200





ставим
Key shares = 5
Key threshold = 3
но вы можете установить любое другое значение




мы получаем 5 ключей.





внизу справа можно скачать json




{

  "keys": [

    "22b07e26d89c620dc68cab7a7e5046d8a807390fe55a477d091f9178bc8339af3c",

    "140b672e0b9fdfae320d80a023261be6a72c019fd85f19f58a29eb1fccd82f26f2",

    "6cec6d35d5f2250e4e007f1a8d88f252f725751d3383d1d0dff8aabc0e1738e16b",

    "17752ae8096c64efe213bc63eccb496a87c8525ad24c0597ecab386adbfc8c86b5",

    "e23fc4247807c314d1590dcb706e131218ae7fdf8b6d6959d208d9398c5ec2168e"

  ],

  "keys_base64": [

    "IrB+JticYg3GjKt6flBG2KgHOQ/lWkd9CR+ReLyDOa88",

    "FAtnLguf364yDYCgIyYb5qcsAZ/YXxn1iinrH8zYLyby",

    "bOxtNdXyJQ5OAH8ajYjyUvcldR0zg9HQ3/iqvA4XOOFr",

    "F3Uq6AlsZO/iE7xj7MtJaofIUlrSTAWX7Ks4atv8jIa1",

    "4j/EJHgHwxTRWQ3LcG4TEhiuf9+LbWlZ0gjZOYxewhaO"

  ],

  "root_token": "s.Rw5WixMGCf84xZD1nHhndj3K"

}




далее нужно ввести ключи по очереди:






далее выбираем рутовый токен который мы скачали вместе с ключами:





мы так же можем выбрать и другие методы:





но мы остановимся на токене




всё ок.
попадаем в панель:





проверим Consul




http://192.168.1.170:8500/





==========================================




добавим аутентификацию по логину и паролю:










ну всё готово. пользователь есть теперь зададим политику.





идём на офф сайт
https://www.vaultproject.io/docs/concepts/policies
или смотрим в default возможные варианты настройки




вставляем политику:




path "secret/*" {

  capabilities = ["create", "read", "update", "patch", "delete", "list"]

}





всё можно создавать секрет












Источник: https://sidmid.ru/docker-compose-hashicorp-vault/



2022-12-02T00:26:07
DevOps

Непрерывное развертывание с помощью GitLab и Kubernetes

Если у вас есть веб-приложение с соответствующим файлом Dockerfile, теперь вы можете перейти к следующему шагу и использовать GitLab для автоматического развертывания вашего приложения в кластере kubernetes. Вот как…




Для этого поста в блоге вам понадобится:




  • ваш исходный код и файл Dockerfile размещены в проекте GitLab



  • бегун GitLab с исполнителем docker-in-docker



  • доступ к кластеру kubernetes




Процесс на самом деле состоит из 2 этапов:




  1. создайте образ Docker и перейдите во встроенный реестр Docker в GitLab



  2. используйте kubectl apply для развертывания новой версии







1. Сборка




Если ваш Dockerfile готов, создание образа — это просто вопрос запуска docker build ...и docker push .... Однако есть еще несколько хитростей:







Итак, ваш .gitlab-ci.yml должен выглядеть так:




stages:
  - test
  - build
  - deploy

build:
  stage: build
  # this job requires docker-in-docker
  tags:
    - dind
  image: docker:19.03.12
  services:
    - docker:19.03.12-dind
  before_script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  script:
    - docker build --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA --tag $CI_REGISTRY_IMAGE:latest .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
    - docker push $CI_REGISTRY_IMAGE:latest




После завершения этапа сборки ваше изображение должно появиться в реестре контейнеров GitLab:







2. Развертывание




Чтобы выполнить развертывание, мы должны добавить задание развертывания, которое







Но сначала мы должны обеспечить, чтобы:







a. Доступ GitLab к kubernetes




Чтобы предоставить GitLab доступ к вашему кластеру kubernetes, используйте kubectl для создания учетной записи службы (SA):




kubectl create sa gitlab




В настоящее время этой учетной записи разрешен вход в систему, но у нее нет абсолютно никаких других прав. Это довольно бесполезно! Итак, мы должны определить роль, например, в файле с именем role-deployer.yaml:




kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: deployer
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["services", "deployments", "replicasets", "pods", "configmap"]
  verbs: ["*"]




В этом примере роль называется deployer и определяется в пространстве имен по умолчанию. Очевидно, что вы должны адаптироваться к своим настройкам.




To apply this configuration:




kubectl apply -f role-deployer.yaml




Now we have to bind this role to our gitlab account, using another file called rolebinding-gitlab-deployer.yaml:




kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: gitlab-deployer
  namespace: default
subjects:
- kind: User
  name: system:serviceaccount:default:gitlab
  apiGroup: ""
roleRef:
  kind: Role
  name: deployer
  apiGroup: ""




And once again we apply the configuration:




kubectl apply -f rolebinding-gitlab-deployer.yaml







Now we have to extract the token that kubernetes created for the gitlab account:




kubectl get sa gitlab -o yaml
kubectl get secret gitlab-token-??? -o yaml | grep token:







Наконец, в GitLab мы определяем 2 переменные вSettings > CI / CD / Variables:










б. Доступ Kubernetes к GitLab




Чтобы разрешить доступ из Kubernetes к реестру GitLab, перейдите Personal menu > Settings > Access Tokensи создайте токен личного доступа с областью apiдействия .







Then, back on kubernetes, use kubectl to create a PullSecret called gitlab-token:




kubectl create secret docker-registry gitlab-token 
  --docker-server=<gitlab.server:port>
  --docker-username=<gitlab-token-name> 
  --docker-password=<gitlab-token>




c. deploy job




We can add the deploy job to .gitlab-ci.yml:




deploy:
  stage: deploy
  image: cylab/kubectl
  before_script:
    # create the configuration (context) for our kubernetes cluster
    - kubectl config set-cluster deploy-cluster --server="$K8S_SERVER" --insecure-skip-tls-verify
    - kubectl config set-credentials gitlab --token=$(echo $K8S_TOKEN | base64 -d)
    - kubectl config set-context deploy-cluster --cluster=deploy-cluster --namespace=default --user=gitlab
    - kubectl config use-context deploy-cluster
  script:
    - envsubst < deploy.tmpl > deploy.yaml
    - kubectl apply -f deploy.yaml




Как вы можете видеть:







Вот пример deploy.tmpl, который вы, очевидно, должны настроить для своего приложения. Он содержит один контейнер и 4 реплики, он использует gitlab-token PullSecret и имеет службу NodePort для предоставления приложения:




apiVersion: v1
kind: Service
metadata:
  name: hello-svc
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30001
    protocol: TCP
  selector:
    app: hello-app

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-deploy
spec:
  replicas: 4
  selector:
    matchLabels:
      app: hello-app
  minReadySeconds: 10
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  template:
    metadata:
      labels:
        app: hello-app
    spec:
      containers:
      - name: hello-pod
        image: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: gitlab-token




Наконец-то




Если все пойдет хорошо, при следующем нажатии на ваш репозиторий GitLab:













Источник: https://cylab.be/blog/112/continuous-deployment-with-gitlab-and-kubernetes