<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Публичное облако на базе VMware с управлением через vCloud Director
Вход / Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

OpenFaaS Kubernetes

OpenFaaS — это платформа с открытым исходным кодом для запуска функций (FaaS) поверх Kubernetes. Она упрощает деплой небольших единиц кода, которые выполняются по запросу или событию.

В основе OpenFaaS лежит модель Function as a Service (FaaS), при которой вы пишете функцию и оборачиваете ее в Docker-образ. OpenFaaS отвечает за масштабирование, сетевые вызовы и управление жизненным циклом.

Для взаимодействия используется удобный веб-интерфейс и CLI-утилита faas-cli. Функции можно писать на популярных языках — Python, Node.js, Go и других — с помощью готовых шаблонов.

Полная документация по OpenFaaS Kubernetes доступна на официальном сайте дополнения.

Установка плагина

Для установки OpenFaaS Kubernetes откройте раздел «Дополнения» в панели управления кластером. Найдите «OpenFaaS Kubernetes» в списке и нажмите на него.

Scr 20250709 Mlfn

В открывшемся окне можно изменить параметры установки. Найдите секцию ingress и включите ее — установите enabled: true, а также укажите свой домен в параметре host. Это упростит доступ к дашборду и позволит использовать faas-cli.

Если вы включаете ingress, можно отключить exposeServices, который используется по умолчанию.

Scr 20250709 Mlof

После указания параметров нажмите кнопку «Установить» и дождитесь завершения установки.

Чтобы убедиться, что все работает, проверьте состояние подов в неймспейсе openfaas-fn:

kubectl get pods -n openfaas-fn

Пример вывода:

NAME                            READY   STATUS    RESTARTS      AGE
alertmanager-57767d864c-hdqdn   1/1     Running   0             19h
gateway-5f9c4b5754-ksr6x        2/2     Running   1 (19h ago)   19h
nats-6ddf479847-dxr2g           1/1     Running   0             19h
prometheus-6cbd946f66-wqdf8     1/1     Running   0             19h
queue-worker-57c7479989-bw282   1/1     Running   0             19h

Если все поды в статусе Running — установка прошла успешно.

Установка CLI

Для работы с OpenFaaS из консоли потребуется утилита faas-cli. С ее помощью можно создавать функции, собирать и отправлять образы, деплоить их в кластер, вызывать функции и просматривать их статус.

Утилита доступна для Linux, macOS и Windows. Для ее установки выполните следующие команды:

Linux

curl -sSL https://cli.openfaas.com | sh

MacOS

curl -sSL https://cli.openfaas.com | sh

Или через Homebrew:

brew install faas-cli

Windows (PowerShell)

$version = (Invoke-WebRequest "https://api.github.com/repos/openfaas/faas-cli/releases/latest" | ConvertFrom-Json)[0].tag_name
(New-Object System.Net.WebClient).DownloadFile("https://github.com/openfaas/faas-cli/releases/download/$version/faas-cli.exe", "faas-cli.exe")

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

faas-cli version

Пример использования

Рассмотрим пример использования OpenFaaS. Развернем плагин, привяжем домен для удобного доступа к дашборду и обращения к OpenFaaS через CLI, установим функцию из встроенного стора и создадим собственную функцию с деплоем через Docker Hub.

Предварительные требования:

  • Домен или поддомен, по которому будет доступен OpenFaaS;
  • установленное дополнение Nginx Ingress;
  • аккаунт в Docker Hub (для кастомных функций);
  • установленная утилита faas-cli;
  • установленный Docker.

Перейдите к установке плагина OpenFaaS в панели управления. В разделе «Конфигурация» найдите секцию ingress и включите ее, изменив enabled: false на enabled: true. Также задайте значение host, указав домен, по которому будет доступен дашборд. Запустите установку плагина.

Теперь необходимо создать балансировщик нагрузки. Создайте манифест loadbalancer.yaml:

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx-lb
  namespace: ingress-nginx
spec:
  selector:
    app.kubernetes.io/name: ingress-nginx
  type: LoadBalancer
  ports:
    - name: http
      port: 80
      targetPort: 80
      appProtocol: k8s.timeweb.cloud/proto-http
    - name: https
      port: 443
      targetPort: 443
      appProtocol: k8s.timeweb.cloud/proto-https

Примените манифест:

kubectl apply -f loadbalancer.yaml

После создания балансировщика, привяжите A-запись к домену. Если домен размещен на наших NS-серверах — просто выберите созданный балансировщик, при настройке А-записи домена. Если используется сторонний DNS, получите IP-адрес балансировщика и добавьте запись вручную:

kubectl get svc --all-namespaces --field-selector spec.type=LoadBalancer

IP будет в колонке EXTERNAL-IP.

Перейдите по домену, указанному при установке. Откроется окно базовой авторизации.

  • Логин: admin
  • Пароль: можно получить командой:
kubectl -n openfaas-fn get secret basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode

После входа откроется главный экран дашборда.

Scr 20250709 Nvkl

Перейдем к использованию функций. Установим функцию из встроенного стора OpenFaaS.

Сначала авторизуйтесь через CLI. Это позволит выполнять команды, связанные с управлением функциями:

faas-cli login \
  --gateway http://<домен> \
  --username admin \
  --password <пароль>

Где:

  • домен — адрес, указанный при установке OpenFaaS;
  • admin — имя пользователя по умолчанию;
  • пароль — пароль можно получить при выполнении команды:
kubectl -n openfaas-fn get secret basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode

Теперь установим функцию figlet, которая преобразует текст в ASCII-арт:

faas-cli store deploy figlet \
  --gateway http://<домен>

Убедитесь, что функция установилась:

faas-cli list \
  --gateway http://<домен>

В списке появится функция figlet со статусом Ready.

Вызовите функцию с передачей строки на вход:

echo "TimewebCloud" | faas-cli invoke figlet \
  --gateway http://<домен>

В ответ вы получите ASCII-арт с переданным текстом.

Scr 20250709 Oezl

Теперь рассмотрим деплой кастомной функции. Выберите шаблон:

faas-cli template store list

Создайте новую функцию на базе нужного шаблона, например python3-http:

faas-cli new hello-k8s --lang python3-http

Будут созданы:

  • hello-k8s/handler.py — код функции;
  • stack.yaml — манифест функции.

Перед сборкой отредактируйте файл stack.yaml, указав путь до образа в Docker Hub. Например:

functions:
  hello-k8s:
    lang: python3-http
    handler: ./hello-k8s
    image: dockerhubuser/hello-k8s:latest

В поле image укажите имя пользователя Docker Hub и название образа. Обратите внимание, что в OpenFaaS Community Edition разрешена работа только с публичными образами.

Соберите образ:

faas-cli build -f stack.yaml

После сборки образа опубликуйте его в Docker Hub:

faas-cli push -f stack.yaml

И наконец, задеплойте функцию в кластер:

faas-cli deploy -f stack.yaml \
  --gateway http://<домен>

После выполнения команды появится ссылка, по которой доступна функция. 

Scr 20250709 Ohdk

Перейдите по ссылке — вы увидите результат выполнения — сообщение «Hello from OpenFaaS!».

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев