Статьи

Запускать функции Fn на K8s на Google Cloud Platform

В последнее время я много играл с функциями и проектом Fn. В конце концов, я дошел до того, что мне пришлось выйти за пределы игровой площадки на моем ноутбуке и отправиться в настоящий дикий мир. Идея запуска Fn на кластере K8s показалась мне очень привлекательной, и я решил сделать это где-то в прем или в облаке. Проведя некоторое исследование о том, как самостоятельно установить и настроить кластер K8s на голом железе, я пришел к выводу, что мне лень это делать. Итак, я пошел (полетел) в облако.

В этом посте я собираюсь показать, как запустить Fn в кластере Kubernetes, размещенном на облачной платформе Google. Почему гугл? Есть много других облачных провайдеров с услугами K8s.

Дело в том, что у Google действительно есть кластер Kubernetes в облаке, который доступен каждому. Они сразу предоставляют вам услугу, не прося подать заявку на доступ в режиме предварительного просмотра (иначе мы свяжемся с вами, как только найдем вас достаточно хорошим для этого), объяснив, зачем вам это нужно, проверив свое прошлое, кредитную историю и т. Д. Итак, гугл.

После того, как вы прошли все формальности и, наконец, получили доступ к Google Kubernetes Engine , перейдите на страницу Quickstarts и следуйте инструкциям по установке Google Cloud SDK.

Если на вашем компьютере не установлен kubectl, вы можете установить его с помощью gcloud:

1
gcloud components install kubectl

Следуйте инструкциям по быстрому запуску Kubernetes Engine, чтобы настроить gcloud и создать кластер K8s, используя следующие команды:

1
2
gcloud container clusters create fncluster
gcloud container clusters get-credentials fncluster

Проверьте результат с помощью kubectl :

1
kubectl cluster-info

Это даст вам список сервисов K8s в вашем кластере и их URL.

Итак, это наша отправная точка. У нас есть новый кластер K8s в облаке с одной стороны и проект Fn с другой. Давайте поженим их.

Нам нужно установить инструмент управления пакетами Kubernetes (графики). Нечто похожее на apt / yum / dnf / pkg в Linux. Инструмент Хелм . Так как я счастливый пользователь Mac, я просто сделал это:

1
brew install kubernetes-helm

Остальные варианты установки Helm доступны здесь .

Следующим шагом является установка Tiller в кластер K8s. Это серверная часть Helm:

1
2
3
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
helm init --service-account tiller --upgrade
1
helm repo update

Если у вас нет Fn, установленного локально, вам нужно установить его, чтобы у вас была Fn CLI на вашем компьютере (на Mac или Linux):

01
02
03
04
05
06
07
08
09
10
curl -LSs https:
//raw
.githubusercontent.com
/fnproject/cli/master/install
 
> setup.sh
 
chmod u+x setup.sh
 
sudo ./setup.sh

Установите Fn на кластере K8s с Helm (при условии, что у вас есть git клиент):

1
2
git clone git@github.com:fnproject/fn-helm.git && cd fn-helm
helm dep build fn
1
helm install --name fn-release fn

Подождите (пару минут), пока Google Kubernetes Engine не назначит внешний IP-адрес API-интерфейсу Fn в кластере. Проверьте это с помощью:

1
kubectl get svc --namespace default -w fn-release-fn-api

Настройте локальный клиент Fn с доступом к Fn, работающему в кластере K8s

1
export FN_API_URL=http://$(kubectl get svc --namespace default fn-release-fn-api -o jsonpath='{.status.loadBalancer.ingress[0].ip}'):80

В основном это сделано. Давайте проверим это:

1
2
fn apps create adfbuilderapp
  fn apps list

Теперь мы можем создавать приложения ADF с функцией Fn, как описано в моем предыдущем посте . Только на этот раз функция будет запущена и, следовательно, строительные работы будут выполняться где-то высоко в облаке.

Это оно!

Опубликовано на Java Code Geeks с разрешения Евгения Федоренко, партнера нашей программы JCG . См. Оригинальную статью здесь: Запуск функций Fn на K8s в Google Cloud Platform.

Мнения, высказанные участниками Java Code Geeks, являются их собственными.