குபெர்னெட்ஸ் வளர்ச்சிக்கான ஸ்கேஃபோல்டின் மதிப்பாய்வு

குபெர்னெட்ஸ் வளர்ச்சிக்கான ஸ்கேஃபோல்டின் மதிப்பாய்வு

ஒன்றரை ஆண்டுகளுக்கு முன்பு, மார்ச் 5, 2018 அன்று, கூகுள் தனது CI/CDக்கான திறந்த மூல திட்டத்தின் முதல் ஆல்பா பதிப்பை வெளியிட்டது. ஸ்கேஃபோல்ட், டெவலப்பர்கள் நிர்வாகத்தை விட வளர்ச்சியில் கவனம் செலுத்தும் வகையில் "எளிய மற்றும் மீண்டும் மீண்டும் செய்யக்கூடிய குபெர்னெட்ஸ் வளர்ச்சியை" உருவாக்குவதே இதன் இலக்காக இருந்தது. ஸ்காஃபோல்ட் பற்றி சுவாரஸ்யமானது என்ன? அது மாறிவிடும், அதன் ஸ்லீவ் வரை சில நுணுக்கங்களைக் கொண்டுள்ளது, இது டெவலப்பருக்கும், மற்றும் செயல்பாட்டு பொறியாளருக்கும் கூட ஒரு சக்திவாய்ந்த கருவியாக மாற்றும். திட்டம் மற்றும் அதன் திறன்களைப் பற்றி அறிந்து கொள்வோம்.

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

கோட்பாடு. நோக்கம் மற்றும் திறன்கள்

எனவே, பொதுவாகச் சொன்னால், CI/CD சுழற்சியை தானியங்குபடுத்துவதில் உள்ள சிக்கலை ஸ்கேஃபோல்ட் தீர்க்கிறது (உருவாக்கம், புஷ், வரிசைப்படுத்துதல் நிலைகளில்), டெவலப்பர் உடனடி கருத்தை வழங்குகிறது, அதாவது. குபெர்னெட்ஸ் கிளஸ்டரில் இயங்கும் புதுப்பிக்கப்பட்ட பயன்பாட்டின் வடிவத்தில் - அடுத்தடுத்த குறியீடு மாற்றங்களின் முடிவை விரைவாகப் பெறும் திறன். மேலும் இது வெவ்வேறு சர்க்யூட்களில் (தேவ், ஸ்டேஜ், புரொடக்ஷன்...) வேலை செய்ய முடியும்.

ஸ்காஃபோல்டின் மூலக் குறியீடு Go இல் எழுதப்பட்டுள்ளது, வழங்கியது இலவச Apache உரிமத்தின் கீழ் 2.0 (GitHub).

முக்கிய செயல்பாடுகள் மற்றும் அம்சங்களைப் பார்ப்போம். முதலாவது பின்வருவனவற்றை உள்ளடக்கியது:

  • CI/CD பைப்லைன்களை உருவாக்குவதற்கான கருவிகளை Skaffold வழங்குகிறது.
  • பின்னணியில் மூலக் குறியீட்டில் ஏற்படும் மாற்றங்களைக் கண்காணிக்கவும், கன்டெய்னர் படங்களில் குறியீட்டை ஒருங்கிணைத்து, இந்தப் படங்களை டோக்கர் ரெஜிஸ்ட்ரியில் வெளியிட்டு, அவற்றை குபெர்னெட்டஸ் கிளஸ்டருக்குப் பயன்படுத்தவும்.
  • களஞ்சியத்தில் உள்ள கோப்புகளை கொள்கலனில் வேலை செய்யும் கோப்பகத்துடன் ஒத்திசைக்கிறது.
  • கொள்கலன்-கட்டமைப்பு-சோதனையைப் பயன்படுத்தி தானாகவே சோதிக்கிறது.
  • முன்னோக்கி துறைமுகங்கள்.
  • கொள்கலனில் இயங்கும் பயன்பாட்டின் பதிவுகளைப் படிக்கிறது.
  • Java, Node.js, Python, Go ஆகியவற்றில் எழுதப்பட்ட பயன்பாடுகளில் பிழைத்திருத்தம் செய்ய உதவுகிறது.

இப்போது அம்சங்களைப் பற்றி:

  • ஸ்காஃபோல்டில் க்ளஸ்டர்-சைட் கூறுகள் இல்லை. அதாவது, இந்த பயன்பாட்டைப் பயன்படுத்த குபெர்னெட்ஸை மேலும் கட்டமைக்க வேண்டிய அவசியமில்லை.
  • உங்கள் பயன்பாட்டிற்கான வெவ்வேறு பைப்லைன்கள். நீங்கள் உருவாக்கும்போது உள்ளூர் Minikube க்கு குறியீட்டை வெளியிட வேண்டுமா? இந்த நோக்கத்திற்காக உள்ளன சுயவிவரங்கள் மற்றும் பயனர் உள்ளமைவுகள், சூழல் மாறிகள் மற்றும் கொடிகள், இது ஒரு பயன்பாட்டிற்கான வெவ்வேறு பைப்லைன்களை விவரிக்க உங்களை அனுமதிக்கிறது.
  • CLI ஆனது. YAML இல் கன்சோல் பயன்பாடு மற்றும் உள்ளமைவுகள் மட்டுமே. இணையத்தில் நீங்கள் உருவாக்கும் முயற்சிகளுக்கான குறிப்புகளைக் காணலாம் சோதனை GUIஇருப்பினும், இந்த நேரத்தில் இது பெரும்பாலும் யாரோ ஒருவர் தேவை என்று அர்த்தம், ஆனால் உண்மையில் இல்லை.
  • மட்டுத்தன்மை. ஸ்காஃபோல்ட் ஒரு முழுமையான அறுவடை அல்ல, ஆனால் குறிப்பிட்ட பணிகளுக்கு தனிப்பட்ட தொகுதிகள் அல்லது ஏற்கனவே உள்ள தீர்வுகளைப் பயன்படுத்த முயற்சிக்கிறது.

பிந்தையவற்றின் விளக்கம்:

  • சட்டசபை கட்டத்தில் நீங்கள் பயன்படுத்தலாம்:
    • டோக்கர் உள்நாட்டில், கனிகோவைப் பயன்படுத்தி ஒரு கிளஸ்டரில் அல்லது கூகிள் கிளவுட் பில்டில்;
    • உள்நாட்டில் Bazel;
    • ஜிப் மேவன் மற்றும் ஜிப் கிரேடில் உள்நாட்டில் அல்லது கூகுள் கிளவுட் பில்டில்;
    • தனிப்பயன் உருவாக்க ஸ்கிரிப்டுகள் உள்நாட்டில் இயங்கும். நீங்கள் மற்றொரு (அதிக நெகிழ்வான/பழக்கமான/...) பில்ட் தீர்வை இயக்க வேண்டும் என்றால், அது ஸ்கிரிப்ட்டில் விவரிக்கப்பட்டுள்ளது, இதனால் ஸ்காஃபோல்ட் அதைத் தொடங்கும் (ஆவணத்தில் இருந்து உதாரணம்) ஸ்கிரிப்டைப் பயன்படுத்தி அழைக்கப்படும் எந்த சேகரிப்பாளரையும் பயன்படுத்த இது உங்களை அனுமதிக்கிறது;
  • சோதனை கட்டத்தில், ஏற்கனவே குறிப்பிட்டது கொள்கலன்-கட்டமைப்பு-சோதனை;
  • வரிசைப்படுத்துவதற்கு, பின்வருபவை வழங்கப்படுகின்றன:
    • குபெக்ட்ல்;
    • ஹெல்ம்;
    • தனிப்பயனாக்கலாம்.

இதற்கு நன்றி, ஸ்காஃபோல்ட் ஒரு தனித்துவமானது என்று அழைக்கப்படலாம் சிஐ/சிடியை உருவாக்குவதற்கான கட்டமைப்பு. இதைப் பயன்படுத்தும் போது ஒரு எடுத்துக்காட்டு பணிப்பாய்வு இங்கே உள்ளது (திட்ட ஆவணத்திலிருந்து):

குபெர்னெட்ஸ் வளர்ச்சிக்கான ஸ்கேஃபோல்டின் மதிப்பாய்வு

ஸ்காஃபோல்டின் பணி பொதுவாக எப்படி இருக்கும்?

  1. மூல குறியீடு கோப்பகத்தில் ஏற்படும் மாற்றங்களை பயன்பாடு கண்காணிக்கிறது. கோப்புகளில் மாற்றங்கள் செய்யப்பட்டால், அவை குபெர்னெட்ஸ் கிளஸ்டரில் உள்ள பயன்பாட்டு பாட் உடன் ஒத்திசைக்கப்படும். முடிந்தால், படத்தை மீண்டும் இணைக்காமல். இல்லையெனில், ஒரு புதிய படம் கூடியது.
  2. அசெம்பிள் செய்யப்பட்ட படம், கொள்கலன்-கட்டமைப்பு-சோதனையைப் பயன்படுத்தி சரிபார்க்கப்பட்டு, குறியிடப்பட்டு, டோக்கர் ரெஜிஸ்ட்ரிக்கு அனுப்பப்படுகிறது.
  3. இதற்குப் பிறகு, படம் வரிசைப்படுத்தப்பட்டது - குபெர்னெட்ஸ் கிளஸ்டரில் பயன்படுத்தப்படுகிறது.
  4. கட்டளையைப் பயன்படுத்தி துவக்கம் தொடங்கப்பட்டிருந்தால் skaffold dev, பின்னர் நாங்கள் பயன்பாட்டிலிருந்து பதிவுகளைப் பெறத் தொடங்குகிறோம், மேலும் எல்லா செயல்களையும் மீண்டும் மீண்டும் செய்ய Skaffold காத்திருக்கிறது.

குபெர்னெட்ஸ் வளர்ச்சிக்கான ஸ்கேஃபோல்டின் மதிப்பாய்வு
ஸ்கேஃபோல்ட் செயல்பாட்டின் முக்கிய கட்டங்களின் விளக்கம்

பயிற்சி. ஸ்கேஃபோல்ட் முயற்சிக்கிறேன்

Skaffold இன் பயன்பாட்டை நிரூபிக்க, நான் ஒரு உதாரணத்தை எடுத்துக்கொள்கிறேன் GitHub திட்ட களஞ்சியம். மூலம், அங்கு பல்வேறு பிரத்தியேகங்களை கணக்கில் எடுத்துக் கொள்ளும் பல எடுத்துக்காட்டுகளை நீங்கள் காணலாம். நான் Minikube இல் உள்ள அனைத்து செயல்களையும் செய்வேன். நிறுவல் எளிமையானது மற்றும் சில நிமிடங்கள் ஆகும், தொடங்குவதற்கு உங்களுக்கு kubectl தேவைப்படும்.

Skaffold ஐ நிறுவவும்:

curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
chmod +x skaffold
sudo mv skaffold /usr/local/bin
skaffold version
v0.37.1

தேவையான எடுத்துக்காட்டுகளுடன் ஸ்காஃபோல்டின் களஞ்சியத்தை குளோன் செய்வோம்:

git clone https://github.com/GoogleContainerTools/skaffold
cd skaffold/examples/microservices

நான் இரண்டு காய்களுடன் ஒரு உதாரணத்தைத் தேர்ந்தெடுத்தேன், ஒவ்வொன்றும் ஒரு சிறிய Go பயன்பாட்டைக் கொண்டுள்ளது. ஒரு பயன்பாடு முன்பக்கம் (leeroy-web), இது கோரிக்கையை இரண்டாவது பயன்பாட்டிற்கு திருப்பி விடுகிறது - பின்தளத்தில் (leeroy-app). அது எப்படி இருக்கும் என்று பார்ப்போம்:

~/skaffold/examples/microservices # tree
.
├── leeroy-app
│   ├── app.go
│   ├── Dockerfile
│   └── kubernetes
│       └── deployment.yaml
├── leeroy-web
│   ├── Dockerfile
│   ├── kubernetes
│   │   └── deployment.yaml
│   └── web.go
├── README.adoc
└── skaffold.yaml
 
4 directories, 8 files

leeroy-app மற்றும் leeroy-web ஆகியவை கோ குறியீடு மற்றும் உள்நாட்டில் இந்தக் குறியீட்டை உருவாக்குவதற்கான எளிய Dockerfiles ஆகியவற்றைக் கொண்டுள்ளன:

~/skaffold/examples/microservices # cat leeroy-app/Dockerfile
FROM golang:1.12.9-alpine3.10 as builder
COPY app.go .
RUN go build -o /app .
 
FROM alpine:3.10
CMD ["./app"]
COPY --from=builder /app .

நான் பயன்பாட்டுக் குறியீட்டைக் கொடுக்க மாட்டேன் - அதைத் தெரிந்து கொண்டால் போதும் leeroy-web கோரிக்கைகளை ஏற்றுக்கொள்கிறது மற்றும் அவற்றை ப்ராக்ஸி செய்கிறது leeroy-app. எனவே கோப்புகளில் Deployment.yaml ஒரு சேவை மட்டுமே உள்ளது app (உள் பாதைக்கு). பாட் போர்ட் web பயன்பாட்டிற்கான விரைவான அணுகலுக்கு நாங்கள் அதை எங்களுக்கு அனுப்புவோம்.

அது போல் என்ன skaffold.yaml:

~/skaffold/examples/microservices # cat skaffold.yaml
apiVersion: skaffold/v1beta13
kind: Config
build:
  artifacts:
    - image: leeroy-web
      context: ./leeroy-web/
    - image: leeroy-app
      context: ./leeroy-app/
deploy:
  kubectl:
    manifests:
      - ./leeroy-web/kubernetes/*
      - ./leeroy-app/kubernetes/*
portForward:
  - resourceType: deployment
    resourceName: leeroy-web
    port: 8080
    localPort: 9000

மேலே குறிப்பிட்டுள்ள அனைத்து நிலைகளும் இங்கே விவரிக்கப்பட்டுள்ளன. இந்த கட்டமைப்பிற்கு கூடுதலாக, உலகளாவிய அமைப்புகளுடன் ஒரு கோப்பும் உள்ளது - ~/.skaffold/config. இது கைமுறையாக அல்லது CLI வழியாக திருத்தப்படலாம் - எடுத்துக்காட்டாக, இது போன்றது:

skaffold config set --global local-cluster true

இந்த கட்டளை உலகளாவிய மாறியை அமைக்கும் local-cluster அர்த்தத்தில் true, அதன் பிறகு Skaffold படங்களை ரிமோட் ரெஜிஸ்ட்ரிக்கு தள்ள முயற்சிக்காது. நீங்கள் உள்நாட்டில் உருவாக்கினால், உள்நாட்டில் படங்களை உருவாக்க இந்த கட்டளையைப் பயன்படுத்தலாம்.

மீண்டும் skaffold.yaml:

  • மேடையில் build நீங்கள் படத்தை உள்ளூரில் சேகரித்து சேமிக்க வேண்டும் என்று நாங்கள் குறிப்பிடுகிறோம். உருவாக்கம் முதல் முறையாக இயங்கிய பிறகு, பின்வருவனவற்றைக் காண்போம்:
    // т.к. Minikube создает кластер в отдельной виртуальной машине,
    // придется проникнуть внутрь, чтобы найти образы
    # minikube ssh
    $ docker images
    REPOSITORY                                TAG                                                                IMAGE ID            CREATED             SIZE 
    leeroy-app                                7d55a50803590b2ff62e47e6f240723451f3ef6f8c89aeb83b34e661aa287d2e   7d55a5080359        4 hours ago         13MB 
    leeroy-app                                v0.37.1-171-g0270a0c-dirty                                         7d55a5080359        4 hours ago         13MB
    leeroy-web                                5063bfb29d984db1ff70661f17d6efcc5537f2bbe6aa6907004ad1ab38879681   5063bfb29d98        5 hours ago         13.1MB
    leeroy-web                                v0.37.1-171-g0270a0c-dirty                                         5063bfb29d98        5 hours ago         13.1MB

    நீங்கள் பார்க்க முடியும் என, ஸ்காஃபோல்ட் படங்களை தானே குறியிட்டார். மூலம், பல குறியிடல் கொள்கைகள் ஆதரிக்கப்படுகின்றன.

  • மேலும் கட்டமைப்பில் இது குறிக்கப்படுகிறது context: ./leeroy-app/, அதாவது படம் சேகரிக்கப்படும் சூழல் குறிப்பிடப்பட்டுள்ளது.
  • வரிசைப்படுத்தல் கட்டத்தில், தேவையான வெளிப்பாடுகளுக்கு kubectl மற்றும் முகமூடியைப் பயன்படுத்துவோம் என்று தீர்மானிக்கப்படுகிறது.
  • PortForward: நாம் வழக்கமாக எப்படி போர்ட்களை முன்னோக்கிப் பயன்படுத்துகிறோம் என்பதைப் போலவே kubectl port-forward, இந்த கட்டளையை அழைப்பதற்கான வழிமுறைகளை Skaffold க்கு வழங்குகிறோம். இந்த வழக்கில், லோக்கல் போர்ட் 9000 8080 என்ற பெயருடன் வரிசைப்படுத்தலில் அனுப்பப்பட்டது. leeroy-web.

தொடங்குவதற்கான நேரம் இது skaffold dev: குழு தொடர்ந்து "பின்னூட்ட வளையத்தை" உருவாக்கும், அதாவது. இது எல்லாவற்றையும் சேகரித்து, அதை கிளஸ்டருக்கு அனுப்புவது மட்டுமல்லாமல், தற்போது காய்களின் நிலையைப் பற்றியும், மாற்றங்களைக் கண்காணித்து, காய்களின் நிலையைப் புதுப்பிக்கும்.

வெளியீட்டு முடிவு இதோ skaffold dev --port-forward மீண்டும் இணைக்கும் போது:

குபெர்னெட்ஸ் வளர்ச்சிக்கான ஸ்கேஃபோல்டின் மதிப்பாய்வு

முதலில், கேச் பயன்படுத்தப்படுவதை நீங்கள் பார்க்கலாம். அடுத்து, பயன்பாடு கூடியது, வரிசைப்படுத்தப்பட்டு, துறைமுகங்கள் அனுப்பப்படுகின்றன. குறிப்பிடப்பட்டதிலிருந்து --port-forward, ஸ்காஃபோல்ட் துறைமுகத்தை அனுப்பினார் web, அவர் கேட்டது போல், ஆனால் இங்கே app அவர் தனது சொந்த விருப்பப்படி எறிந்தார் (அருகிலுள்ள இலவச ஒன்றைத் தேர்ந்தெடுத்தார்). இதற்குப் பிறகு, விண்ணப்பங்களிலிருந்து முதல் பதிவுகளைப் பெறுகிறோம்.

அது செயல்படுகிறதா என்று பார்ப்போமா?

~/skaffold/examples/microservices # kubectl get po
NAME                          READY   STATUS    RESTARTS   AGE
leeroy-app-6998dfcc95-2nxvf   1/1     Running   0          103s
leeroy-web-69f7d47c9d-5ff77   1/1     Running   0          103s
~/skaffold/examples/microservices # curl localhost:9000
leeroooooy app!!!

கோப்பை மாற்றுகிறது leeroy-app/app.go - சில வினாடிகள் கடந்து... மற்றும்:

~/skaffold/examples/microservices # kubectl get po
NAME                          READY   STATUS    RESTARTS   AGE
leeroy-app-ffd79d986-l6nwp    1/1     Running   0          11s
leeroy-web-69f7d47c9d-5ff77   1/1     Running   0          4m59s
~/skaffold/examples/microservices # curl localhost:9000
leeroooooy Habr!!!

அதே நேரத்தில், ஸ்காஃபோல்ட் ஒரு புள்ளியைத் தவிர, கன்சோலில் முன்பு போலவே அதே விஷயத்தைக் காட்டியது: அது மட்டுமே வெளிப்பட்டது leeroy-app, மற்றும் ஒரே நேரத்தில் அல்ல.

மேலும் பயிற்சி

ஒரு புதிய திட்டத்தை உருவாக்கும் போது, ​​Skaffold க்கான configs கட்டளையைப் பயன்படுத்தி பூட்ஸ்ட்ராப் செய்யப்படலாம் என்பதும் குறிப்பிடத்தக்கது. init, இது மிகவும் வசதியானது. கூடுதலாக, நீங்கள் பல கட்டமைப்புகளை எழுதலாம்: இயல்புநிலை கட்டமைப்பில் மேம்பாட்டை மேற்கொள்ளவும், பின்னர் கட்டளையுடன் மேடைக்கு செல்லவும். run (அதே செயல்முறை dev, மாற்றங்களைக் கண்காணிக்காது), வேறு கட்டமைப்பைப் பயன்படுத்துதல்.

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

ஸ்காஃபோல்டுக்கான ஒரு சாத்தியமான பயன்பாடு ரிமோட் கிளஸ்டரில் மேம்பாட்டை நடத்துவதாகும். எல்லோரும் Minikube ஐ தங்கள் சொந்த வன்பொருளில் இயக்குவதற்கு வசதியாக இல்லை, பின்னர் பயன்பாட்டை உருட்டி அது போதுமான அளவு செயல்படும் என்று எதிர்பார்க்கிறார்கள்... இந்த விஷயத்தில், Skaffold சிக்கலை சரியாக தீர்க்கிறது, எடுத்துக்காட்டாக, Reddit இன்ஜினியர்களால் உறுதிப்படுத்த முடியும். ஏற்கனவே விவாதிக்கப்பட்டது எழுதினார் எங்கள் வலைப்பதிவில்.

மற்றும் உள்ளே இந்த வெளியீடு Weaveworks இலிருந்து நீங்கள் உற்பத்திக்கான பைப்லைனை உருவாக்குவதற்கான உதாரணத்தைக் காணலாம்.

முடிவுக்கு

ஸ்காஃபோல்ட் என்பது பைப்லைன்களை உருவாக்குவதற்கான ஒரு வசதியான கருவியாகும், இது குபெர்னெட்டஸுக்கு பயன்பாடுகளை வெளியிடுவதை உள்ளடக்கியது மற்றும் முதன்மையாக மேம்பாட்டுத் தேவைகளில் கவனம் செலுத்துகிறது. டெவலப்பரின் அடிப்படை தேவைகளை கணக்கில் எடுத்துக் கொள்ளும் "குறுகிய" பைப்லைனை உருவாக்குவது மிகவும் எளிதானது, ஆனால் விரும்பினால், நீங்கள் பெரிய செயல்முறைகளை ஒழுங்கமைக்கலாம். CI/CD செயல்முறைகளில் Skaffold ஐப் பயன்படுத்துவதற்கான தெளிவான எடுத்துக்காட்டுகளில் ஒன்றாகும் கொடுக்கப்பட்டது போன்ற சோதனை திட்டம் குபெர்னெட்ஸ், ஜிஆர்பிசி, இஸ்டியோ மற்றும் ஓபன் சென்சஸ் டிரேசிங் ஆகியவற்றின் திறன்களைப் பயன்படுத்தி 10 மைக்ரோ சர்வீஸ்கள்.

Skaffold ஏற்கனவே GitHub இல் கிட்டத்தட்ட 8000+ நட்சத்திரங்களைக் கொண்டுள்ளது, இது Google ஆல் உருவாக்கப்பட்டது மற்றும் அதன் ஒரு பகுதியாகும் GoogleContainerTools - பொதுவாக, இந்த நேரத்தில் திட்டம் மகிழ்ச்சியுடன் வளரும் என்று நம்புவதற்கு எல்லா காரணங்களும் உள்ளன.

சோசலிஸ்ட் கட்சி

எங்கள் வலைப்பதிவிலும் படிக்கவும்:

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

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