Рубрики
Без рубрики

Среда дистанционного развития с Pycharm, Okteto и Kubernetes

В прошлом мы говорили о том, как развиваться удаленно с ВС кода. Сегодня я собираюсь показать вам, как C … Помечено Python, Kubernetes, Docker, Minerervices.

В прошлом мы говорили о Как развиваться удаленно с VS-кодом Отказ Сегодня я собираюсь показать вам, как вы можете использовать ОКТЕТО Чтобы определить и развернуть полностью настроенную среду дистанционного управления для вашего приложения Python, как интегрировать его с помощью Jetbrains ‘Pycharm И как использовать его для создания собственного приложения облака.

Платформа разработчика Okteto Позволяет раскрутить всю среду разработки в Куберане одним щелчком мыши. Это может быть так же просто, как один контейнер или как комплекс, как нативное приложение на основе микровисса. Вы развертываете ваше приложение одним щелчком мыши, выберите компонент, на котором вы собираетесь развиваться, и вы готовы пойти в считанные секунды.

Keteto cli Это одновотное приложение с открытым исходным кодом, которое позволяет развертывать среды разработки (среди прочего) в любых кластере Kubernetes. Работает с Linux, MacOS и Windows. Мы будем использовать его для создания и запуска нашей среды разработки. Следуйте инструкциям ниже, чтобы установить его:

MacOS/Linux.

$ curl https://get.okteto.com -sSfL | sh

Окна

Download https://downloads.okteto.com/cli/okteto.exe and add it to your `$PATH`.

Okteto совместим с любыми кластером Kubernetes, локальным или удаленным. Чтобы этот пример просты, мы собираемся использовать Октето облако Развернуть среду разработки. Если вы предпочитаете использовать свои собственные кластер Kubernetes, вы можете пропустить этот шаг.

Беги Okteto Login В вашей локальной консоли для создания бесплатной учетной записи облака OKTETO, логин и скачать свой KubeConfig Отказ Мы будем нужны позже в посте.

$ okteto login
Authentication will continue in your default browser
You can also open a browser and navigate to the following address:
...
 ✓  Logged in as rberrelleza
 ✓  Updated context 'cloud_okteto_com' in '/Users/ramiro/.kube/config'
    Run 'okteto namespace' every time you need to activate your Okteto context again

Начните с открытия Pycharm и создавая новый проект для вашего приложения и среды разработки. Выберите шаблон «Pure Python» и назовите его Гостевая книга Отказ

На высоком уровне Среда удаленного развития Является ли контейнер Docker, который содержит все, что вам нужно для создания и разработки вашего приложения, например:

  • Один или несколько языковых runtimes (например, Python, Ruby, Node)
  • SDKS для вашего языкового времени выполнения (например, JDK, Python-dev)
  • Двоичные зависимости (например, openssl, git)
  • Инструменты для управления и установки зависимостей ( например PIP, Bundler, пряжа)
  • Инструменты для управления тестами и анализировать ваш код (например, Nosetest, Pylint)

Okteto ищет специальный файл под названием okteto.yml Определить среду разработки для приложения.

Создать файл с именем okteto.yml в Гостевая книга Проект и скопируйте следующий контент:

name: guestbook
image: okteto/python:3
forward:
  - 8080:8080
remote: 2222
command:
- bash

Этот файл говорит ОКТЕТО выполнить следующее:

  • Создать среду развития имени Привет-мир
  • Используйте Docker Image Okteto/Python
  • Запустите удаленный SSH-сервер на порту 2222 (подробнее об этом позже)
  • Передовой порт 8080 до удаленной среды
  • Запустите Bash Когда он запускается, поэтому мы получаем удаленный терминал.

Посмотрите на Ссылка на манифест Для изучения различных настроек конфигурации доступны.

Давайте разверним среду разработки. Во-первых, откройте локальный терминал непосредственно в Pycharm. Затем запустите Okteto Up команда на нем.

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

Okteto Up Команда автоматически выполнит следующие задачи:

  • Разверните среду разработки, как описано okteto.yml в оккуто облако (или ваши личные кластеры Куберовника).
  • Передовый порт 8080 к удаленной среде.
  • Запустите SSH-сервер в порту 2222.
  • Начать Сервис синхронизации файлов Чтобы сохранить ваши изменения в актуальном состоянии между вашей локальной файловой системой и вашим приложением PODS.
  • Запустите удаленную оболочку в вашей дистанционной среде разработки. Теперь вы можете построить, тестировать и запустить свое приложение, как если бы вы были на вашем локальном компьютере.

По умолчанию Pycharm будет использовать ваш локальный интерпретатор Python для вашего проекта. Вместо этого мы собираемся настроить его, чтобы напрямую использовать нашу дистанционную среду разработки в качестве цели. Таким образом, мы можем гарантировать, что у нас всегда есть правильная установка, независимая от того, что происходит в нашей местной машине. Для этого мы собираемся воспользоваться преимуществами Pycharm’s Удаленные интерпретаторы и okteto’s Удаленный SSH сервер Отказ

Чтобы добавить удаленный интерпретатор, щелкните правой кнопкой мыши на панели состояния в правом нижнем углу экрана и нажмите « » Добавить интерпретатор ... Опция в меню.

Затем выберите SSH переводчик Опция слева и Существующая конфигурация сервера справа.

Нажмите на кнопку с тремя точками справа, чтобы запустить диалоговое окно конфигурации SSH и добавьте новую конфигурацию с теми же значениями, что и показано ниже, замена /Пользователи/Рамиро С пути к вашему $ Главная каталог.

Нажмите Тестовое соединение Кнопка, чтобы проверить, что все настроено правильно.

Когда вы запустите Okteto Up Первый раз OKTETO создаст для вас ключ SSH для вас и сохранить ее на дому $ Home/.okteto/id_rsa_okteto и $ home/.okteto/id_rsa_okteto.pub. Сервер SSH, запущенный в среде разработки, будет автоматически настроен на использование этих клавиш для аутентификации.

Как только конфигурация SSH будет завершена, нажмите на Следующий Кнопка, чтобы получить на окончательный экран конфигурации (Yay!).

Обновите путь к интерпретателю, чтобы соответствовать одному в вашей среде дистанционного управления ( /usr/local/bin/python ), установите сопоставление папок на /ОКТЕТО И отключите загрузку файлов, поскольку Okteto автоматически позаботится об этом для вас.

Нажмите на Готово кнопка, чтобы сохранить вашу конфигурацию.

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

Отныне ваш проект будет напрямую использовать интерпретатор в вашей дистанционной среде разработки вместо местного. Почему вы не открываете Pycharm’s Python Console и попробуйте это?

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

Приложение будет включать в себя:

  • Веб-сервер Flask, который обрабатывает дисплей и обновления в гостевой книге.
  • Экземпляр MongoDB для хранения сообщений.

Разверните свой экземпляр MongoDB

Одним из больших преимуществ использования среды дистанционного развития является то, что нам не нужно ничего не запускать локально. Поскольку в Kubernetes работает среда развития, он имеет доступ к чему-либо доступным там, таким как секреты, другие услуги, базы данных и т. Д.

Для MongoDB вы можете воспользоваться каталогом приложения Okteto Cloud’s и развернуть его одним щелчком мыши.

Чтобы сделать это, откройте свой браузер, перейдите в Октето облако нажмите на Развертывание Кнопка, выберите Монгодб Из списка приложений и нажмите на Развертывание кнопка.

Подождите несколько секунд для вашего экземпляра, чтобы закончить развертывание. Вы сможете увидеть статус непосредственно в приборной панели Okteto Cloud.

Если вы развернули свою среду разработки в своем собственном кластере, вы можете развернуть его использовать Официальный хелм графика Отказ

Развитие непосредственно на Куберане

Теперь, когда у нас есть наша среда разработки и наш экземпляр MongoDB, давайте создадим наше приложение.

Сначала создайте файл Python под названием app.py В вашем проекте. Это файл, который будет содержать код нашего сервера, поэтому давайте начнем с основ. Скопируйте код ниже в app.py :

from flask import Flask
from flask_pymongo import PyMongo


app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://okteto:okteto@mongodb:27017/okteto"
mongo = PyMongo(app)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

Вышеуказанный код выполнит следующее:

  • Импорт колбу и flask_pymongo Отказ
  • Настройте строку подключения Mongo и объект доступа к данным.
  • Начните веб-сервер.

Обратите внимание, что мы используем MongoDB: 27107 Как имя и порт экземпляра MongoDB вместо типичных localhost Отказ Это связано с тем, что наша среда развития работает в Kubernetes, так же как MongoDB, поэтому мы можем получить доступ к нему, используя его имя DNS. Также как мы сделаем в производстве 💫.

Как только вы сохраните файл, на первых двух строках появится ошибки. Это потому, что наша среда развития еще не установлена. Чтобы установить их, перейдите к консоли (тот, кто с okteto> Подскажите) и PIP Установить Требования, как вы сделаете локально:

rberrelleza:guestbook okteto> pip install flask flask_pymongo
...
Installing collected packages: MarkupSafe, Jinja2, itsdangerous, click, Werkzeug, flask, PyMongo, flask-pymongo
Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 PyMongo-3.10.1 Werkzeug-1.0.1 click-7.1.2 flask-1.1.2 flask-pymongo-2.3.0 itsdangerous-1.1.0

При установке зависимостей – хорошая практика, чтобы добавить их в ваш требования .txt Файл, так что отражает все ваши зависимости выполнения. Запустите Пип заморозить Команда в той же консоли:

rberrelleza:guestbook okteto> pip freeze > requirements.txt

Если вы подождете пару секунд, вы увидите, что требования .txt Файл появляется в вашем проекте автоматически. Это магия синхронизации файлов Okteto. Любое изменение файлов в среде дистанционного управления или локально будет автоматически синхронизирована на другой стороне.

Беги Python App.py В консоли для запуска сервера:

rberrelleza:guestbook okteto> python app.py 
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 160-502-646

Ваше приложение работает и работает, непосредственно в вашей среде удаленной разработки. Чтобы получить доступ к нему, откройте браузер и перейдите в http://localhost: 8080 Отказ (Вот почему мы включили правило пересылки для портов 8080 в okteto.yml Манифест).

Что круто, это то, что ваше приложение также работает на режиме отладки. Это означает, что колба автоматически перезагрузит ваше приложение каждый раз, когда код меняется. Давайте попробуем это, заканчивая код нашего приложения.

Обновление app.py следующее:

from flask import Flask, jsonify, request
from flask_pymongo import PyMongo

app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://okteto:okteto@mongodb:27017/okteto"
mongo = PyMongo(app)


@app.route("/", methods=["GET"])
def get_messages():
    messages = []
    for m in mongo.db.messages.find():
        messages.append({"message": m["message"], "user": m["user"]})
    return jsonify(messages=messages)


@app.route("/", methods=["POST"])
def post_message():
    content = request.json
    mongo.db.messages.insert_one({"message": content["message"], "user": content["user"]})
    return '', 204


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080, debug=True)

С этим изменением приложение будет:

  • Принять Пост Запрос на / Отказ Это прочитает сообщение и Пользователь Из контента запроса и вставьте их в базу данных MongoDB.
  • Принять Получить Запрос на / Отказ Это получит все доступные сообщения от MongoDB и вернуть их как JSON множество.

Как только вы сохраняете файлы, ОКТЕТО обнаружит изменения и синхронизируйте их в вашу среду удаленного развития. Затем колба автоматически перезагружает их.

Попробуйте приложение, позвонив новые конечные точки. Откройте вторую консоль в Pycharm и опубликуйте несколько сообщений:

➜  guestbook $ curl -XPOST -H "content-type: application/json"  http://localhost:8080 -d '{"message": "hello", "user":"ramiro"}'
➜  guestbook $ curl -XPOST -H "content-type: application/json"  http://localhost:8080 -d '{"message": "how are you?", "user":"cindy"}'
➜  guestbook $ curl -XPOST -H "content-type: application/json"  http://localhost:8080 -d '{"message": "developing directly in my cluster!", "user":"ramiro"}'

А затем получить их:

➜  guestbook $ curl http://localhost:8080
{
  "messages": [
    {
      "message": "hello", 
      "user": "ramiro"
    }, 
    {
      "message": "how are you?", 
      "user": "cindy"
    }, 
    {
      "message": "developing directly in my cluster!", 
      "user": "ramiro"
    }
  ]
}

На данный момент наше приложение является полной функцией, и мы уже проверили, чтобы закончить полностью встроенную среду дистанционного развития. Все, что осталось, это упаковать его, отправить PR и отправить его!

В этом посте мы узнали о концепции среды дистанционного развития, почему они важны, и как вы можете использовать Okteto и Pycharm, чтобы использовать их, чтобы построить собственное приложение облака быстрее, чем когда-либо.

Но этот пост только покрывает поверхность. Использование среды дистанционного развития дает вам много дополнительных преимуществ, таких как:

  • Устраняет необходимость в локальной конфигурации.
  • Делает его простым, чтобы поделиться конфигурацией с остальной частью вашей команды.
  • Вам не нужно бегать докера или кубернаны локально.
  • Вы не зависите от состояния вашей рабочей станции.
  • Вы можете легко поделиться своей средой разработки своей командой.
  • Это дает вам самую быструю петлю обратной связи.
  • Вы используете свои любимые IDE, отладчики и т. Д…
  • Вы можете воспользоваться дополнительными сборками и горячими резами.
  • Вы развиваетесь на окружающей среде как можно подобное для производства.
  • Вы не зависите от CI/CD для проверки всех ваших изменений.

Если эта проблема звучит вам знакомым, вы должны проверить, что мы построили в Okteto. Посмотри на наш Начало работы Руководство и начать развиваться со скоростью облака.

Наша миссия в Okteto является упрощение разработки облачных местных приложений. Сделай этот резонанс с тобой? У вас есть идеи, комментарии или отзывы? Присоединяйтесь к нам в #okteto Канал в сообществе Kubernetes Slass и поделитесь своими мыслями с сообществом!

Оригинал: “https://dev.to/okteto/remote-development-environments-with-pycharm-okteto-and-kubernetes-494a”