Fn அடிப்படையில் எங்கள் சொந்த சர்வர்லெஸ் உருவாக்குதல்

Fn அடிப்படையில் எங்கள் சொந்த சர்வர்லெஸ் உருவாக்குதல்

சர்வர்லெஸ் கம்ப்யூட்டிங் கிளவுட் கம்ப்யூட்டிங்கில் மிகவும் முக்கியமான போக்குகளில் ஒன்றாகும். அடிப்படை இயக்கக் கொள்கை என்னவென்றால், உள்கட்டமைப்பு என்பது DevOps இன் கவலை அல்ல, ஆனால் சேவை வழங்குநரின் கவலை. வள அளவிடுதல் தானாகவே ஏற்றுவதற்கு சரிசெய்கிறது மற்றும் அதிக மாற்ற விகிதத்தைக் கொண்டுள்ளது.

மற்றொரு பொதுவான அம்சம் குறியீட்டைக் குறைக்கும் மற்றும் கவனம் செலுத்தும் போக்கு ஆகும், அதனால்தான் சர்வர்லெஸ் கம்ப்யூட்டிங் சில நேரங்களில் ஒரு சேவையாக செயல்பாடு (FaaS) என்று அழைக்கப்படுகிறது.

வரலாற்று ரீதியாக, AWS லாம்ப்டாவுடன் FaaS ஐ வழங்கிய முதல் கிளவுட் வழங்குநர் அமேசான், எனவே பெயர். பிற கிளவுட் சேவை வழங்குநர்களும் இதே போன்றவற்றை வழங்குகிறார்கள்:

  • Google வழங்கும் கிளவுட் செயல்பாடுகள்
  • மைக்ரோசாப்ட் வழங்கும் அசூர் செயல்பாடுகள்

இந்த நிறுவனங்கள் அனைத்தும் சர்வர்லெஸ் கம்ப்யூட்டிங், ஆட்டோ-ஸ்கேலிங் ஆகியவற்றை வழங்குகின்றன, மேலும் நீங்கள் உண்மையில் பயன்படுத்துவதற்கு மட்டுமே பணம் செலுத்துகின்றன, ஆனால் அவை வாடிக்கையாளர்களை தங்கள் தனியுரிம தயாரிப்புக்குள் அடைத்து விடுகின்றன. இருப்பினும், சர்வர்லெஸ் கம்ப்யூட்டிங்கிற்கு இலவச மற்றும் திறந்த மூல மாற்றுகள் உள்ளன. இது கவனிக்கத்தக்கது:

அவை அனைத்தும் மேகங்களிலிருந்து முற்றிலும் சுயாதீனமானவை, அதாவது அவை உங்கள் சொந்த, பொது அல்லது தனிப்பட்டவை உட்பட எந்த மேகத்திலும் நிறுவப்படலாம், நிச்சயமாக எக்ஸோஸ்கேலில்.

Fn திட்டம் எவ்வாறு செயல்படுகிறது

Fn முற்றிலும் டோக்கரை அடிப்படையாகக் கொண்டது, இரண்டு முக்கிய கூறுகளைக் கொண்டுள்ளது:

  • CLI நிரல் Fn உள்கட்டமைப்பின் அனைத்து அம்சங்களையும் நிர்வகிக்க வடிவமைக்கப்பட்டுள்ளது, மேலும் Fn சேவையகத்துடன் தொடர்பு கொள்கிறது,
  • Fn சேவையகம் ஒரு டோக்கர் கொள்கலனில் தொகுக்கப்பட்ட ஒரு வழக்கமான பயன்பாடு ஆகும்.

Fn இல் பயன்படுத்தப்பட்ட செயல்பாடுகள் தனித்தனி கொள்கலன்களிலும் செயல்படுத்தப்படுகின்றன, இது நிறைய நிரலாக்க மொழிகளை ஆதரிக்க உங்களை அனுமதிக்கிறது, எடுத்துக்காட்டாக... Clojure!

செயல்பாட்டு வாதங்கள் நிலையான உள்ளீட்டிற்கு (STDIN) அனுப்பப்படும், முடிவுகள் நிலையான வெளியீட்டிற்கு (STDOUT) எழுதப்படும். வாதங்கள் அல்லது திரும்பும் மதிப்புகள் எளிமையான மதிப்புகள் (JSON ஆப்ஜெக்ட் போன்றவை) இல்லாவிட்டால், Fn ஆல் வழங்கப்பட்ட ஒரு சுருக்க அடுக்கைப் பயன்படுத்தி ஒரு செயல்பாட்டு மேம்பாட்டு கிட் (FDK) வடிவத்தில் அவற்றை மாற்றலாம்.

வசதிக்காக, பல்வேறு மொழிகள் மற்றும் அவற்றின் பதிப்புகள் (கோ, ஜாவாவின் வெவ்வேறு பதிப்புகள், பைதான் போன்றவை) விரிவான பட்டியலில் FaaS ஐப் பயன்படுத்துவதற்கு வசதியாக உள்ளமைக்கப்பட்ட வார்ப்புருக்கள் வழங்கப்படுகின்றன.

இந்த வரைபடத்தைப் பின்பற்றுவதன் மூலம் FaaS ஐ உருவாக்குவது எளிது:

  • Fn CLI ஐப் பயன்படுத்தி செயல்பாட்டை வரிசைப்படுத்துதல்: தேர்ந்தெடுக்கப்பட்ட டெம்ப்ளேட்டின் அடிப்படையில் Fn க்கான பயன்பாட்டு உள்ளமைவு கோப்பு உருவாக்கப்பட்டது.
  • மீண்டும் CLI Fn ஐப் பயன்படுத்தி எங்கள் சொந்த செயல்பாட்டை நாங்கள் வெளியிடுகிறோம்: கொள்கலன் படம் ஒரு குறிப்பிட்ட களஞ்சியத்தில் வைக்கப்படுகிறது, அதன் பிறகு இந்த படத்தின் இருப்பு மற்றும் இடம் குறித்து சேவையகத்திற்கு தெரிவிக்கப்படும்.

Fn அடிப்படையில் எங்கள் சொந்த சர்வர்லெஸ் உருவாக்குதல்
Fn க்கு செயல்பாடுகளை வழங்குவதற்கான கொள்கை

சேவையகமற்ற செயல்பாடுகளின் உள்ளூர் நிறுவல் மற்றும் சோதனை

உள்ளூர் கணினியில் Fn ஐ நிறுவத் தொடங்குவோம். முதலில், Fn ஆல் தேவைப்படும் டோக்கர் நிறுவப்பட்டது. நாம் Debian/Ubuntu இல் இருக்கிறோம் என்று வைத்துக்கொள்வோம்:

$ sudo apt-get update
$ sudo apt-get install docker.io

அல்லது உங்கள் கணினியின்படி தொகுப்பு மேலாளர்/டாக்கர் உருவாக்கத்தைப் பயன்படுத்தவும். நீங்கள் Fn CLI ஐ நிறுவுவதற்கு நேராக செல்லலாம். எடுத்துக்காட்டாக, சுருட்டைப் பயன்படுத்துதல்:

$ curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh

ஹோம்ப்ரூ நிறுவப்பட்ட OSX இல் நீங்கள் இருந்தால், நீங்கள் வேறு வழியில் செல்லலாம்:

$ brew install fn

==> Downloading https://homebrew.bintray.com/bottles/fn-0.5.8.high_sierra.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/b1/b1767fb00e2e69fd9da73427d0926b1d1d0003622f7ddc0dd3a899b2894781ff?__gda__=exp=1538038849~hmac=c702c9335e7785fcbacad1f29afa61244d02f2eebb
######################################################################## 100.0%
==> Pouring fn-0.5.8.high_sierra.bottle.tar.gz
  /usr/local/Cellar/fn/0.5.8: 5 files, 16.7MB

CLI ஐப் பயன்படுத்தி எங்கள் செயல்பாட்டை ஆரம்பத்தில் பயன்படுத்த இப்போது தயாராக உள்ளோம். எளிமைக்காக, நோட் போன்ற உள்ளமைக்கப்பட்ட வெளியீட்டு சூழலைப் பயன்படுத்துவோம்:

$ fn init --runtime node --trigger http hellonode

Creating function at: /hellonode
Function boilerplate generated.
func.yaml created.

ஒரு புதிய அடைவு உருவாக்கப்படும் hellonode சில அடிப்படை கட்டமைப்பு கோப்புகளுடன் எங்கள் Fn செயல்பாட்டை மேலும் மேம்படுத்த. புதிதாக உருவாக்கப்பட்ட கோப்பகத்தின் உள்ளே, நீங்கள் தேர்ந்தெடுத்த மொழி அல்லது இயக்க நேரத்தின் தரநிலைகளைப் பின்பற்றி உங்கள் பயன்பாட்டை உருவாக்கலாம்:

# Каталог с node выглядит так:

   hellonode
   ├── func.js
   ├── func.yaml
   └── package.json

# Свежеустановленное окружение Java11 такое:

   hellojava11
   ├── func.yaml
   ├── pom.xml
   └── src
       ├── main
       │   └── java
       │       └── com
       │           └── example
       │               └── fn
       │                   └── HelloFunction.java
       └── test
           └── java
               └── com
                   └── example
                       └── fn
                           └── HelloFunctionTest.java

Fn ஆரம்ப திட்ட கட்டமைப்பை உருவாக்குகிறது, ஒரு கோப்பை உருவாக்குகிறது func.yaml, Fn க்கு தேவையான அமைப்புகளைக் கொண்டுள்ளது மற்றும் நீங்கள் தேர்ந்தெடுத்த மொழியில் குறியீட்டிற்கான டெம்ப்ளேட்டை அமைக்கிறது.

நோட் இயக்க நேரத்தின் விஷயத்தில், இதன் பொருள்:

$ cat hellonode/func.js

const fdk=require('@fnproject/fdk');

fdk.handle(function(input){
  let name = 'World';
  if (input.name) {
    name = input.name;
  }
  return {'message': 'Hello ' + name}
})

இப்போது எல்லாம் எவ்வாறு செயல்படுகிறது என்பதைப் பார்க்க, எங்கள் செயல்பாட்டை உள்ளூரில் விரைவாகச் சோதிப்போம்.

முதலில், நாங்கள் Fn சேவையகத்தைத் தொடங்குவோம். ஏற்கனவே குறிப்பிட்டுள்ளபடி, Fn சேவையகம் ஒரு டோக்கர் கொள்கலன், எனவே, தொடக்கத்திற்குப் பிறகு, அது சென்று டோக்கர் பதிவேட்டில் இருந்து படத்தை எடுக்கும்.

$ fn start -d                    # запускаем локальный сервер в фоне

Unable to find image 'fnproject/fnserver:latest' locally
latest: Pulling from fnproject/fnserver
ff3a5c916c92: Pull complete
1a649ea86bca: Pull complete
ce35f4d5f86a: Pull complete

...

Status: Downloaded newer image for fnproject/fnserver:latest
668ce9ac0ed8d7cd59da49228bda62464e01bff2c0c60079542d24ac6070f8e5

எங்கள் செயல்பாட்டை இயக்க, அது "உருட்டப்பட வேண்டும்". இது தேவைப்படுகிறது имя приложения: Fn இல், அனைத்து பயன்பாடுகளும் தொடர்புடைய செயல்பாடுகளுக்கான பெயர்வெளிகளாக குறிப்பிடப்பட வேண்டும்.

Fn CLI கோப்பைத் தேடும் func.yaml தற்போதைய கோப்பகத்தில் செயல்பாட்டை உள்ளமைக்க பயன்படுத்தப்படும். எனவே முதலில் நீங்கள் எங்கள் கோப்பகத்திற்கு செல்ல வேண்டும் hellonode.

$ cd hellonode
$ fn deploy --app fnexo --local  # выкатываем функцию локально, имя приложения - fnexo.
                                 # параметр local не заливает образ в удаленный реестр,
                                 # запуская его напрямую

Deploying hellonode to app: fnexo
Bumped to version 0.0.2
Building image nfrankel/hellonode:0.0.3 .
Updating function hellonode using image nfrankel/hellonode:0.0.3...
Successfully created app:  fnexo
Successfully created function: hellonode with nfrankel/hellonode:0.0.3
Successfully created trigger: hellonode-trigger

கட்டளை வெளியீட்டில் இருந்து நீங்கள் பார்க்க முடியும், எங்கள் செயல்பாட்டைக் கொண்ட ஒரு புதிய டோக்கர் கொள்கலன் படம் உருவாக்கப்பட்டது. செயல்பாடு அழைக்கப்படுவதற்கு தயாராக உள்ளது, அதைச் செய்ய எங்களுக்கு இரண்டு வழிகள் உள்ளன:

  • Fn கட்டளையைப் பயன்படுத்தி invoke
  • மூலம் நேரடியாக அழைக்கிறது http

அழைப்பு invoke Fn வழியாக இது சோதனைகளுக்காக HTTP வழியாக வேலையைப் பின்பற்றுகிறது, இது விரைவான சோதனைக்கு வசதியானது:

$ fn invoke fnexo hellonode      # вызываем функцию hellonode приложения fnexo

{"message":"Hello World"}

ஒரு செயல்பாட்டை நேரடியாக அழைக்க, நீங்கள் முழு URL ஐ அறிந்து கொள்ள வேண்டும்:

$ curl http://localhost:8080/t/fnexo/hellonode-trigger

{"message":"Hello World"}

Fn சேவையகம் போர்ட் 8080 இல் அதன் செயல்பாடுகளை வெளிப்படுத்துகிறது மற்றும் செயல்பாட்டு URL அமைப்புடன் பொருந்துகிறது t/app/function, ஆனால் முழுமையாக இல்லை. HTTP மூலம், ஒரு செயல்பாடு நேரடியாக அழைக்கப்படுவதில்லை, ஆனால் தூண்டுதல் என்று அழைக்கப்படுவதன் மூலம், அதன் பெயரின் படி, செயல்பாட்டு அழைப்பை "தொடங்குகிறது". தூண்டுதல்கள் வரையறுக்கப்பட்டுள்ளன `func.yml திட்டம்:

schema_version: 20180708
name: hellonode
version: 0.0.3
runtime: node
entrypoint: node func.js
format: json
triggers:
- name: hellonode-trigger
  type: http
  source: /hellonode-trigger    # URL триггера

செயல்பாட்டின் பெயருடன் பொருந்துமாறு தூண்டுதல் பெயரை மாற்றலாம், இது எல்லாவற்றையும் எளிதாக்கும்:

triggers:
- name: hellonode-trigger
  type: http
  source: /hellonode    # совпадает с именем функции

பின்னர் செயல்பாடு விநியோகத்தை மீண்டும் இயக்கி, புதிய தூண்டுதலிலிருந்து அழைக்கிறோம்:

$ fn deploy --app fnexo hellonode --local
$ curl http://localhost:8080/t/fnexo/hellonode

{"message":"Hello World"}

எல்லாம் வேலை செய்கிறது! முழு அளவிலான சோதனைகளுக்குச் சென்று எங்கள் FaaS ஐ சர்வரில் வெளியிடுவதற்கான நேரம் இது!

உங்கள் சொந்த உள்கட்டமைப்பில் சேவையகமற்ற செயல்பாட்டு சேவைகளை நிறுவுதல்

Exoscale CLI ஐப் பயன்படுத்தி ஒரு மெய்நிகர் இயந்திரத்தை விரைவாக நிறுவுவோம். நீங்கள் இன்னும் அமைக்கவில்லை என்றால், நீங்கள் பயன்படுத்தலாம் எங்கள் விரைவான தொடக்க வழிகாட்டி. இது ஒரு சிறந்த கருவியாகும், இது உங்கள் உற்பத்தித்திறனை மேலும் அதிகரிக்கும். பாதுகாப்புக் குழுவில் போர்ட் 8080 ஐத் திறக்க நீங்கள் ஒரு விதியை உள்ளமைக்க வேண்டும் என்பதை மறந்துவிடாதீர்கள்! பின்வரும் கட்டளைகள் ஒரு சுத்தமான மெய்நிகர் இயந்திரத்தை துவக்கும், எங்கள் செயல்பாடுகளை ஹோஸ்ட் செய்ய தயாராக உள்ளது:

$ exo firewall create fn-securitygroup
$ exo firewall add fn-securitygroup ssh --my-ip
$ exo firewall add fn-securitygroup -p tcp -P 8080-8080 -c 0.0.0.0/0
$ exo vm create fn-server -s fn-securitygroup

பின்னர் நீங்கள் மெய்நிகர் கணினியில் ssh செய்து தொலைநிலை Fn சேவையகத்தை நிறுவலாம்:

$ exo ssh fn-server

The authenticity of host '185.19.30.175 (185.19.30.175)' can't be established.
ECDSA key fingerprint is SHA256:uaCKRYeX4cvim+Gr8StdPvIQ7eQgPuOKdnj5WI3gI9Q.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '185.19.30.175' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-20-generic x86_64)

லோக்கல் மெஷினில் ஏற்கனவே செய்ததைப் போலவே டோக்கர் மற்றும் எஃப்என் சர்வரை நிறுவவும், சர்வரைத் தொடங்கவும்:

$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo systemctl start docker
$ curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh
$ sudo fn start

...

    ______
   / ____/___
  / /_  / __ 
 / __/ / / / /
/_/   /_/ /_/
    v0.3.643

Fn செயல்பாடுகளைப் பெற தயாராக உள்ளது! தொலைநிலை சேவையகத்திற்கு செயல்பாடுகளை இலக்காக மாற்ற, நாங்கள் கட்டளையைப் பயன்படுத்துவோம் deploy உள்ளூர் கணினியில் இருந்து கொடியைத் தவிர்க்கவும் --local.

கூடுதலாக, Fn சேவையகம் மற்றும் டோக்கர் பதிவேட்டின் இருப்பிடத்தை நீங்கள் குறிப்பிட வேண்டும். இந்த விருப்பங்களை சூழல் மாறிகள் மூலம் அமைக்கலாம் FN_API_URL и FN_REGISTRY முறையே, ஆனால் வரிசைப்படுத்துவதற்கான கட்டமைப்புகளை உருவாக்குதல் மற்றும் நிர்வாகத்தை எளிதாக நிர்வகிக்க மிகவும் வசதியான வழியையும் வழங்குகிறது.

Fn அடிப்படையில், வரிசைப்படுத்தலுக்கான கட்டமைப்பு அழைக்கப்படுகிறது context. பின்வரும் கட்டளை சூழலை உருவாக்கும்:

$ fn create context exoscale --provider default --api-url http://185.19.30.175:8080 --registry nfrankel

இது போன்ற கிடைக்கும் சூழல்களை நீங்கள் பார்க்கலாம்:

$ fn list contexts

CURRENT NAME      PROVIDER      API URL                      REGISTRY
    default       default       http://localhost:8080/
    exoscale      default       http://185.19.30.175:8080    nfrankel

மேலும் இப்படி உருவாக்கப்பட்ட சூழலுக்கு மாறவும்:

 $ fn use context exoscale

 Now using context: exoscale

இங்கிருந்து, Fn அம்சம் டெலிவரி தேர்ந்தெடுக்கப்பட்ட DockerHub கணக்கைப் பயன்படுத்தி டோக்கர் படங்களைப் பதிவிறக்கும் (என் விஷயத்தில் - nfrankel), பின்னர் ரிமோட் சர்வருக்கு அறிவிக்கவும் (இந்த எடுத்துக்காட்டில் - http://185.19.30.175:8080) உங்கள் செயல்பாட்டைக் கொண்ட சமீபத்திய படத்தின் இருப்பிடம் மற்றும் பதிப்பு பற்றி.

$ fn deploy --app fnexo .   # выполняется на локальной машине из каталога hellonode

Deploying function at: /.
Deploying hellonode to app: fnexo
Bumped to version 0.0.5
Building image nfrankel/hellonode:0.0.5 .

இறுதியாக:

$ curl http://185.19.30.175:8080/t/fnexo/hellonode

{"message":"Hello World"}

Fn அடிப்படையில் எங்கள் சொந்த சர்வர்லெஸ் உருவாக்குதல்
Fn-அடிப்படையிலான சர்வர்லெஸ் கம்ப்யூட்டிங்கில் செயல்பாட்டு வாழ்க்கைச் சுழற்சி

உங்கள் சொந்த திறனில் சர்வர்லெஸ் கம்ப்யூட்டிங்கின் நன்மைகள்

சர்வர்லெஸ் கம்ப்யூட்டிங் என்பது மிகவும் சிக்கலான பயன்பாடுகள் அல்லது மைக்ரோ சர்வீஸ்களுடன் தொடர்பு கொள்ளும் பயன்பாட்டின் சுயாதீனமான பகுதிகளை விரைவாக செயல்படுத்துவதற்கான ஒரு வசதியான தீர்வாகும்.

இது பெரும்பாலும் தேர்ந்தெடுக்கப்பட்ட விற்பனையாளருடன் பூட்டப்படுவதற்கான மறைக்கப்பட்ட செலவு காரணமாகும், இது குறிப்பிட்ட பயன்பாட்டு வழக்கு மற்றும் அளவைப் பொறுத்து, எதிர்காலத்தில் அதிக செலவுகள் மற்றும் குறைக்கப்பட்ட நெகிழ்வுத்தன்மைக்கு வழிவகுக்கும்.

மல்டி-கிளவுட் மற்றும் ஹைப்ரிட் கிளவுட் கட்டமைப்புகளும் இந்த விஷயத்தில் பாதிக்கப்படுகின்றன, ஏனெனில் நீங்கள் சர்வர்லெஸ் கம்ப்யூட்டிங்கைப் பயன்படுத்த விரும்பும் சூழ்நிலையில் உங்களை எளிதாகக் காணலாம், ஆனால் கார்ப்பரேட் கொள்கைகள் காரணமாக அது சாத்தியமில்லாமல் இருக்கலாம்.

Fn பயன்படுத்த மிகவும் எளிதானது மற்றும் சிறிய மேல்நிலையுடன் கிட்டத்தட்ட அதே FaaS இடைமுகத்தை வழங்க முடியும். இது எந்த விற்பனையாளரின் லாக்-இனையும் நீக்குகிறது மற்றும் உள்நாட்டில் அல்லது நீங்கள் விரும்பும் எந்த வசதியான கிளவுட் தீர்வு வழங்குநரிலும் நிறுவப்படலாம். நிரலாக்க மொழியைத் தேர்ந்தெடுப்பதிலும் சுதந்திரம் உள்ளது.

இந்தக் கட்டுரை Fn இன் அடிப்படைகளை மட்டுமே உள்ளடக்கியது, ஆனால் உங்கள் சொந்த இயக்க நேரத்தை உருவாக்குவது மிகவும் எளிதானது, மேலும் ஒட்டுமொத்த கட்டமைப்பையும் Fn லோட் பேலன்சரைப் பயன்படுத்தி அல்லது பாதுகாப்பிற்காக ப்ராக்ஸிக்குப் பின்னால் Fn வைப்பதன் மூலம் பரவலாகப் பயன்படுத்த முடியும்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்