В последнее время я много играл с функциями и проектом 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, являются их собственными. |