புரோஹோஸ்டர் > Блог > நிர்வாகம் > OpenShift இல் நவீன பயன்பாடுகள், பகுதி 2: சங்கிலியால் கட்டப்பட்டவை
OpenShift இல் நவீன பயன்பாடுகள், பகுதி 2: சங்கிலியால் கட்டப்பட்டவை
அனைவருக்கும் வணக்கம்! Red Hat OpenShift இல் நவீன வலை பயன்பாடுகளை எவ்வாறு வரிசைப்படுத்துவது என்பதைக் காட்டும் எங்கள் தொடரின் இரண்டாவது இடுகை இதுவாகும்.
முந்தைய இடுகையில், OpenShift இயங்குதளத்தில் நவீன வலைப் பயன்பாடுகளை உருவாக்குவதற்கும் வரிசைப்படுத்துவதற்கும் வடிவமைக்கப்பட்ட புதிய S2I (மூலத்திலிருந்து படம்) பில்டர் படத்தின் திறன்களை நாங்கள் சற்று தொட்டுள்ளோம். ஒரு பயன்பாட்டை விரைவாக வரிசைப்படுத்துவது என்ற தலைப்பில் நாங்கள் ஆர்வமாக இருந்தோம், இன்று S2I படத்தை "தூய" பில்டர் படமாக பயன்படுத்துவது மற்றும் தொடர்புடைய OpenShift கூட்டங்களுடன் இணைப்பது எப்படி என்பதைப் பார்ப்போம்.
சுத்தமான பில்டர் படம்
நாம் பகுதி XNUMX இல் குறிப்பிட்டுள்ளபடி, பெரும்பாலான நவீன வலை பயன்பாடுகள் கட்டமைக்கப்பட்ட நிலை என்று அழைக்கப்படுகின்றன, இது பொதுவாக குறியீடு டிரான்ஸ்பிலேஷன், மல்டிபிள் ஃபைல் கன்கேடனேஷன் மற்றும் மினிஃபிகேஷன் போன்ற செயல்பாடுகளைச் செய்கிறது. இந்த செயல்பாடுகளின் விளைவாக பெறப்பட்ட கோப்புகள் - இது நிலையான HTML, JavaScript மற்றும் CSS - வெளியீடு கோப்புறையில் சேமிக்கப்படும். இந்தக் கோப்புறையின் இருப்பிடம் பொதுவாக எந்த உருவாக்கக் கருவிகள் பயன்படுத்தப்படுகிறது என்பதைப் பொறுத்தது, மேலும் இது ./build கோப்புறையாக இருக்கும்.
மூலத்திலிருந்து படம் (S2I)
இந்த இடுகையில் "S2I என்றால் என்ன, அதை எவ்வாறு பயன்படுத்துவது" என்ற தலைப்பை நாங்கள் தொடவில்லை (இதைப் பற்றி நீங்கள் மேலும் படிக்கலாம் இங்கே), ஆனால் ஒரு Web App Builder படம் என்ன செய்கிறது என்பதைப் புரிந்துகொள்ள இந்தச் செயல்பாட்டில் உள்ள இரண்டு படிகளைப் பற்றி தெளிவாக இருப்பது முக்கியம்.
சட்டசபை கட்டம்
அசெம்பிளி கட்டமானது, நீங்கள் டோக்கரை உருவாக்கி, புதிய டோக்கர் படத்துடன் முடிவடையும் போது என்ன நிகழும் என்பதைப் போன்றது. அதன்படி, OpenShift இயங்குதளத்தில் ஒரு கட்டமைப்பைத் தொடங்கும் போது இந்த நிலை ஏற்படுகிறது.
Web App Builder படத்தைப் பொறுத்தவரை, உங்கள் பயன்பாட்டின் சார்புகளை நிறுவுவதற்கும் கட்டமைப்பை இயக்குவதற்கும் இது பொறுப்பாகும். ஸ்கிரிப்டை அசெம்பிள். இயல்பாக, பில்டர் படம் npm ரன் பில்ட் கன்ஸ்ட்ரக்டைப் பயன்படுத்துகிறது, ஆனால் இதை NPM_BUILD சூழல் மாறி மூலம் மேலெழுதலாம்.
நாங்கள் முன்பு கூறியது போல், முடிக்கப்பட்ட, ஏற்கனவே கட்டமைக்கப்பட்ட பயன்பாட்டின் இருப்பிடம் நீங்கள் பயன்படுத்தும் கருவிகளைப் பொறுத்தது. எடுத்துக்காட்டாக, ரியாக்ட் விஷயத்தில் இது ./பில்ட் கோப்புறையாகவும், கோண பயன்பாடுகளுக்கு இது project_name/dist கோப்புறையாகவும் இருக்கும். மேலும், ஏற்கனவே முந்தைய இடுகையில் காட்டப்பட்டுள்ளபடி, முன்னிருப்பாக உருவாக்கப்படும் வெளியீட்டு கோப்பகத்தின் இருப்பிடத்தை, OUTPUT_DIR சூழல் மாறி மூலம் மேலெழுதலாம். சரி, வெளியீட்டு கோப்புறையின் இருப்பிடம் கட்டமைப்பிலிருந்து கட்டமைப்பிற்கு வேறுபடுவதால், நீங்கள் உருவாக்கப்பட்ட வெளியீட்டை படத்தில் உள்ள நிலையான கோப்புறைக்கு, அதாவது /opt/apt-root/outputக்கு நகலெடுக்கலாம். இந்த கட்டுரையின் மற்ற பகுதிகளைப் புரிந்துகொள்வதற்கு இது முக்கியமானது, ஆனால் இப்போதைக்கு அடுத்த கட்டத்தை விரைவாகப் பார்ப்போம் - ரன் கட்டம்.
ரன் கட்டம்
அசெம்பிளி கட்டத்தின் போது உருவாக்கப்பட்ட புதிய படத்தில் டோக்கர் ரன் அழைப்பு செய்யப்படும்போது இந்த நிலை ஏற்படுகிறது. OpenShift இயங்குதளத்தில் பயன்படுத்தும்போது இதுவே நடக்கும். இயல்புநிலை ஸ்கிரிப்டை இயக்கவும் பயன்கள் சேவை தொகுதி மேலே உள்ள நிலையான வெளியீட்டு கோப்பகத்தில் உள்ள நிலையான உள்ளடக்கத்தை வழங்க.
பயன்பாடுகளை விரைவாக வரிசைப்படுத்த இந்த முறை நல்லது, ஆனால் நிலையான உள்ளடக்கத்தை இந்த வழியில் வழங்க பொதுவாக பரிந்துரைக்கப்படவில்லை. உண்மையில், நாங்கள் நிலையான உள்ளடக்கத்தை மட்டுமே வழங்குகிறோம் என்பதால், எங்கள் படத்தில் Node.js நிறுவப்பட வேண்டிய அவசியமில்லை - ஒரு வலை சேவையகம் போதுமானது.
வேறு வார்த்தைகளில் கூறுவதானால், அசெம்பிள் செய்யும் போது நமக்கு ஒன்று தேவை, செயல்படுத்தும் போது மற்றொன்று தேவை. இந்த சூழ்நிலையில், சங்கிலியால் கட்டப்பட்ட கட்டிடங்கள் கைக்கு வருகின்றன.
"இரண்டு அசெம்பிளிகளை ஒன்றாக இணைக்கலாம், ஒன்று தொகுக்கப்பட்ட உட்பொருளை உருவாக்குகிறது, மற்றொன்று அந்த உட்பொருளை இயக்கப் பயன்படும் ஒரு தனிப் படத்தில் ஹோஸ்ட் செய்கிறது."
வேறு வார்த்தைகளில் கூறுவதானால், எங்கள் உருவாக்கத்தை இயக்க Web App Builder படத்தைப் பயன்படுத்தலாம், பின்னர் வலை சேவையகப் படத்தைப் பயன்படுத்தலாம், அதே NGINX, எங்கள் உள்ளடக்கத்தை வழங்க.
எனவே, Web App Builder படத்தை "தூய" பில்டராகப் பயன்படுத்தலாம், அதே நேரத்தில் ஒரு சிறிய இயக்க நேரப் படத்தையும் வைத்திருக்கலாம்.
இப்போது இதை ஒரு குறிப்பிட்ட உதாரணத்துடன் பார்க்கலாம்.
பயிற்சிக்கு நாங்கள் பயன்படுத்துவோம் எளிய எதிர்வினை பயன்பாடு, create-react-app கட்டளை வரி கருவியைப் பயன்படுத்தி உருவாக்கப்பட்டது.
இந்த கோப்பை இன்னும் விரிவாகப் பார்ப்போம், மேலும் அளவுருக்கள் பிரிவில் தொடங்கவும்.
parameters:
- name: SOURCE_REPOSITORY_URL
description: The source URL for the application
displayName: Source URL
required: true
- name: SOURCE_REPOSITORY_REF
description: The branch name for the application
displayName: Source Branch
value: master
required: true
- name: SOURCE_REPOSITORY_DIR
description: The location within the source repo of the application
displayName: Source Directory
value: .
required: true
- name: OUTPUT_DIR
description: The location of the compiled static files from your web apps builder
displayName: Output Directory
value: build
required: false
இங்கே எல்லாம் மிகவும் தெளிவாக உள்ளது, ஆனால் OUTPUT_DIR அளவுருவில் கவனம் செலுத்துவது மதிப்பு. எங்கள் எடுத்துக்காட்டில் உள்ள ரியாக்ட் பயன்பாட்டிற்கு, கவலைப்பட ஒன்றுமில்லை, ஏனெனில் ரியாக்ட் இயல்புநிலை மதிப்பை வெளியீட்டு கோப்புறையாகப் பயன்படுத்துகிறது, ஆனால் கோணம் அல்லது வேறு ஏதாவது விஷயத்தில், இந்த அளவுரு தேவைக்கேற்ப மாற்றப்பட வேண்டும்.
மூன்றாவது மற்றும் நான்காவது படங்களைப் பாருங்கள். அவை இரண்டும் டோக்கர் படங்கள் என வரையறுக்கப்பட்டுள்ளன, மேலும் அவை எங்கிருந்து வருகின்றன என்பதை நீங்கள் தெளிவாகக் காணலாம்.
மூன்றாவது படம் web-app-builder மற்றும் இது nodeshift/ubi8-s2i-web-app இல் இருந்து 10.x குறியிடப்பட்டது. டோக்கர் மையம்.
நான்காவது NGINX படம் (பதிப்பு 1.12) சமீபத்திய குறிச்சொல்லுடன் உள்ளது டோக்கர் மையம்.
இப்போது முதல் இரண்டு படங்களைப் பார்ப்போம். அவை இரண்டும் தொடக்கத்தில் காலியாக உள்ளன மற்றும் உருவாக்க கட்டத்தில் மட்டுமே உருவாக்கப்படுகின்றன. முதல் படம், react-web-app-builder, web-app-builder-runtime படத்தையும் எங்கள் மூலக் குறியீட்டையும் இணைக்கும் ஒரு அசெம்பிளி படியின் விளைவாக இருக்கும். அதனால்தான் இந்தப் படத்தின் பெயரில் “-பில்டர்” என்று சேர்த்துள்ளோம்.
இரண்டாவது படம் - react-web-app-runtime - nginx-image-runtime மற்றும் react-web-app-builder படத்திலிருந்து சில கோப்புகளை இணைப்பதன் விளைவாக இருக்கும். இந்தப் படம் பயன்படுத்தப்படும்போதும் பயன்படுத்தப்படும் மற்றும் எங்கள் பயன்பாட்டின் இணைய சேவையகம் மற்றும் நிலையான HTML, JavaScript, CSS ஆகியவற்றை மட்டுமே கொண்டிருக்கும்.
குழப்பமான? இப்போது உருவாக்க உள்ளமைவுகளைப் பார்ப்போம், அது கொஞ்சம் தெளிவாகிவிடும்.
எங்கள் டெம்ப்ளேட்டில் இரண்டு உருவாக்க கட்டமைப்புகள் உள்ளன. இங்கே முதல் ஒன்று, இது மிகவும் நிலையானது:
நீங்கள் பார்க்க முடியும் என, லேபிள் 1 உடன் உள்ள வரியானது, இந்த உருவாக்கத்தின் முடிவு, இமேஜ்ஸ்ட்ரீம்ஸ் பிரிவில் நாம் சற்று முன்பு பார்த்த அதே ரியாக்ட்-வெப்-ஆப்-பில்டர் படத்தில் வைக்கப்படும் என்று கூறுகிறது.
குறியீட்டை எங்கிருந்து பெறுவது என்று 2 என பெயரிடப்பட்ட வரி உங்களுக்குக் கூறுகிறது. எங்கள் விஷயத்தில், இது ஒரு git களஞ்சியமாகும், மேலும் இருப்பிடம், ref மற்றும் சூழல் கோப்புறை ஆகியவை நாம் ஏற்கனவே மேலே பார்த்த அளவுருக்களால் தீர்மானிக்கப்படுகின்றன.
3 என பெயரிடப்பட்ட கோடு ஏற்கனவே அளவுருக்கள் பிரிவில் பார்த்தது. இது OUTPUT_DIR சூழல் மாறியைச் சேர்க்கிறது, இது எங்களின் எடுத்துக்காட்டில் பில்ட் ஆகும்.
இமேஜ்ஸ்ட்ரீம் பிரிவில் நாம் ஏற்கனவே பார்த்த web-app-builder-runtime படத்தைப் பயன்படுத்த 4 என்று பெயரிடப்பட்ட வரி கூறுகிறது.
S5I படம் அதை ஆதரிக்கும் பட்சத்தில், Web App Builder படத்தை ஆதரிக்கும் பட்சத்தில், 2 இன்க்ரிமெண்டல் பில்ட்டைப் பயன்படுத்த விரும்புகிறோம் என்று XNUMX லேபிளிடப்பட்ட வரி கூறுகிறது. முதல் துவக்கத்தில், சட்டசபை நிலை முடிந்ததும், படம் node_modules கோப்புறையை ஒரு காப்பகக் கோப்பில் சேமிக்கும். பின்னர், அடுத்தடுத்த ரன்களில், உருவாக்க நேரத்தை குறைக்க படம் இந்த கோப்புறையை அன்சிப் செய்யும்.
இறுதியாக, 6 என்று பெயரிடப்பட்ட வரியானது, கைமுறையான தலையீடு இல்லாமல், ஏதாவது மாறும்போது தானாகவே கட்டமைக்க சில தூண்டுதல்களாகும்.
ஒட்டுமொத்தமாக இது ஒரு அழகான நிலையான கட்டமைப்பாகும்.
இப்போது இரண்டாவது கட்டமைப்பின் கட்டமைப்பைப் பார்ப்போம். இது முதல் ஒன்றைப் போலவே உள்ளது, ஆனால் ஒரு முக்கியமான வேறுபாடு உள்ளது.
எனவே இரண்டாவது உருவாக்க உள்ளமைவு எதிர்வினை-வலை-பயன்பாட்டு-இயக்க நேரமாகும், மேலும் இது மிகவும் நிலையானதாகத் தொடங்குகிறது.
1 என்று லேபிளிடப்பட்ட வரி ஒன்றும் புதிதல்ல - இது பில்ட் ரிசல்ட் ரியாக்ட்-வெப்-ஆப்-ரன்டைம் படத்தில் வைக்கப்பட்டுள்ளது என்று கூறுகிறது.
2 என பெயரிடப்பட்ட வரி, முந்தைய கட்டமைப்பைப் போலவே, மூலக் குறியீட்டை எங்கிருந்து பெறுவது என்பதைக் குறிக்கிறது. ஆனால் இங்கே படத்திலிருந்து எடுக்கப்பட்டது என்று சொல்கிறோம் என்பதைக் கவனியுங்கள். மேலும், நாங்கள் உருவாக்கிய படத்திலிருந்து - react-web-app-builder இலிருந்து (3 என்று பெயரிடப்பட்ட வரியில் குறிப்பிடப்பட்டுள்ளது). நாம் பயன்படுத்த விரும்பும் கோப்புகள் படத்தின் உள்ளே உள்ளன மற்றும் அவற்றின் இருப்பிடம் 4 என பெயரிடப்பட்ட வரியில் அமைக்கப்பட்டுள்ளது, எங்கள் விஷயத்தில் இது /opt/app-root/output/ ஆகும். நீங்கள் நினைவில் வைத்திருந்தால், எங்கள் பயன்பாட்டை உருவாக்கும் முடிவுகளின் அடிப்படையில் உருவாக்கப்பட்ட கோப்புகள் இங்குதான் சேமிக்கப்படும்.
லேபிள் 5 உடன் குறிக்கப்பட்ட இலக்கு கோப்புறையானது தற்போதைய கோப்பகமாகும் (இவை அனைத்தும், ஓபன்ஷிஃப்ட் எனப்படும் சில மாயாஜால விஷயங்களுக்குள் இயங்கும், உங்கள் உள்ளூர் கணினியில் அல்ல).
மூலோபாயப் பிரிவு - 6 என்று பெயரிடப்பட்ட வரி - முதல் உருவாக்க உள்ளமைவைப் போலவே உள்ளது. இம்முறை மட்டும் இமேஜ்ஸ்ட்ரீம் பிரிவில் ஏற்கனவே பார்த்த nginx-image-runtime ஐப் பயன்படுத்தப் போகிறோம்.
இறுதியாக, 7 என பெயரிடப்பட்ட வரியானது, ரியாக்ட்-வெப்-ஆப்-பில்டர் படத்தை மாற்றும் ஒவ்வொரு முறையும் இந்த கட்டமைப்பை செயல்படுத்தும் தூண்டுதல்களின் ஒரு பகுதியாகும்.
இல்லையெனில், இந்த டெம்ப்ளேட்டில் அழகான நிலையான வரிசைப்படுத்தல் உள்ளமைவு மற்றும் சேவைகள் மற்றும் வழிகள் தொடர்பான விஷயங்கள் உள்ளன, ஆனால் நாங்கள் அதிக விவரங்களுக்கு செல்ல மாட்டோம். வரிசைப்படுத்தப்படும் படம் ரியாக்ட்-வெப்-ஆப்-இயக்க நேரப் படம் என்பதை நினைவில் கொள்ளவும்.
விண்ணப்ப வரிசைப்படுத்தல்
எனவே இப்போது டெம்ப்ளேட்டைப் பார்த்தோம், ஒரு பயன்பாட்டை வரிசைப்படுத்த அதை எவ்வாறு பயன்படுத்துவது என்று பார்ப்போம்.
எங்கள் டெம்ப்ளேட்டை வரிசைப்படுத்த oc எனப்படும் OpenShift கிளையன்ட் கருவியைப் பயன்படுத்தலாம்:
OUTPUT_DIR மாறியைத் தவிர, இங்குள்ள பேட்டர்ன் ஒன்றுதான்.
துணை 2
இந்த கட்டுரையில் நாங்கள் NGINX ஐ ஒரு வலை சேவையகமாகப் பயன்படுத்தினோம், ஆனால் அதை அப்பாச்சி மூலம் மாற்றுவது மிகவும் எளிதானது, கோப்பில் உள்ள டெம்ப்ளேட்டை மாற்றவும். NGINX படம் மீது அப்பாச்சி படம்.
முடிவுக்கு
இந்தத் தொடரின் முதல் பகுதியில், OpenShift இயங்குதளத்தில் நவீன வலைப் பயன்பாடுகளை எவ்வாறு விரைவாக வரிசைப்படுத்துவது என்பதைக் காண்பித்தோம். இன்று நாம் ஒரு Web App படம் என்ன செய்கிறது மற்றும் அதை NGINX போன்ற தூய இணைய சேவையகத்துடன் இணைப்பதன் மூலம் செயின்டு பில்ட்களைப் பயன்படுத்தி அதிக உற்பத்திக்கு தயாராக இருக்கும் பயன்பாட்டு உருவாக்கத்தை எவ்வாறு உருவாக்கலாம் என்பதைப் பார்த்தோம். இந்தத் தொடரின் அடுத்த மற்றும் இறுதிக் கட்டுரையில், OpenShift இல் உங்கள் பயன்பாட்டிற்கான மேம்பாட்டு சேவையகத்தை எவ்வாறு இயக்குவது மற்றும் உள்ளூர் மற்றும் தொலை கோப்புகளை ஒத்திசைப்பதை உறுதிசெய்வது எப்படி என்பதைக் காண்பிப்போம்.
பகுதி 2: தற்போதுள்ள HTTP சர்வர் படத்துடன் புதிய S2I படத்தைப் பயன்படுத்துவது எப்படி, NGINX போன்றது, தொடர்புடைய OpenShift அசெம்பிளிகளைப் பயன்படுத்தி உற்பத்தி வரிசைப்படுத்தல்;
பகுதி 3: OpenShift இயங்குதளத்தில் உங்கள் பயன்பாட்டிற்கான மேம்பாட்டு சேவையகத்தை எவ்வாறு இயக்குவது மற்றும் அதை உள்ளூர் கோப்பு முறைமையுடன் ஒத்திசைப்பது எப்படி.