W pierwszym z trzech artykułów na temat automatyzacji instalacji Kubernetes za pomocą Jenkins, „Korzystanie z Jenkins z Kubernetes AWS, część 1”, stworzyliśmy wstępnie wymagane artefakty i utworzyliśmy węzeł Jenkins. W tym dalszym artykule skonfigurujemy plik Jenkins dla potoku Jenkins i utworzymy potok Jenkins. Ten artykuł ma następujące sekcje:
- Konfigurowanie pliku Jenkins
- Tworzenie potoku Jenkinsa
- Wniosek
Tworzenie pliku Jenkins
Potok Jenkinsa jest skonfigurowany w pliku tekstowym o nazwie Jenkinsfile w składni Groovy. Plik Jenkinsa składa się z kroków . „Krok” to krok kompilacji, instrukcja dla Jenkinsa do wdrożenia. Obsługiwane są dwa rodzaje kroków:węzeł i scenę . „Węzeł” to krok najwyższego poziomu, który wybiera executor na agentach, na których uruchamiany jest kod. Węzeł to maszyna (master lub agent ), a etykieta w kroku węzła powinna odpowiadać etykiecie na komputerze, aby węzeł mógł wybrać komputer. Krok „węzeł” tworzy obszar roboczy , który jest katalogiem plików dla określonego zadania Jenkins do przetwarzania intensywnie korzystającego z zasobów. Krok „węzła” planuje również kroki zdefiniowane w nim w gnieździe executora, dodając je do kolejki kompilacji Jenkinsa. Gdy slot executora zwolni zaplanowane kroki z kolejki kompilacji.
Utwórz plik o nazwie Jenkinsfile (bez przyrostka). Plik bez przyrostka jest tworzony w systemie Windows za pomocą następującego polecenia z wiersza polecenia. Zanotuj "." Na końcu polecenia, które ma zostać dołączone.
>notepad Jenkinsfile.
W oknie dialogowym „Nie można znaleźć pliku Jenkins. plik. Czy chcesz utworzyć nowy plik?” kliknij Tak. Plik Jenkinsa plik zostanie utworzony. W pliku Jenkinsa , utwórz krok najwyższego poziomu o nazwie „węzeł”, w którym etykieta „jenkins” jest taka sama, jak wartość Labels skonfigurowana w agencie Jenkins.
node('jenkins') { }
W kroku węzła dodaj inne kroki zainstalować klaster Kubernetes. Dodaj etapy etapowe za instalację Kubernetes. Procedura instalacji Kubernetes jest dobrze udokumentowana i nie będzie ponownie omawiana. Dla porównania, „Pierwsze kroki z Kubernetes w Amazon Web Services (AWS)” szczegółowo omawia procedurę instalacji. Polecenia powłoki są uruchamiane z „sh”. Może zostać wyświetlony monit o wprowadzenie przez użytkownika zmiennych, takich jak liczba pracowników i typ instancji.
Początek kube-aws polecenie do zainicjowania stosu CloudFormation ma nazwę klastra zakodowaną na stałe jako „kubernetes-coreos-cluster” (dowolna nazwa). --zewnętrzna-nazwa-dns jest ustawiona na nazwę domeny, NOSQLSEARCH.COM , które byłyby różne dla różnych użytkowników. Para kluczy EC2 jest ustawiona za pomocą --key-name do kubernetes-coreos , który powstał wcześniej. Klucz KMS jest ustawiony na KeyMetadata.Arn ciąg wygenerowany wcześniej za pomocą aws kms polecenie w --kms-key opcja. Wygenerowany plik Jenkins jest wymieniony poniżej:
node('jenkins') { stage 'set env' sh "sudo yum install gnupg2" sh "gpg2 --keyserver pgp.mit.edu --recv-key FC8A365E" sh "gpg2 --fingerprint FC8A365E" sh "wget https://github.com/coreos/coreos-kubernetes/releases/ download/v0.7.1/kube-aws-linux-amd64.tar.gz" sh "wget https://github.com/coreos/coreos-kubernetes/releases/ download/v0.7.1/kube-aws-linux-amd64.tar.gz.sig" sh "gpg2 --verify kube-aws-linux-amd64.tar.gz.sig kube-aws-linux- amd64.tar.gz" sh "tar zxvf kube-aws-linux-amd64.tar.gz" sh "sudo mv linux-amd64/kube-aws /usr/local/bin" sh "export AWS_ACCESS_KEY_ID=AKIAJGFCP4HUFH4453FA" sh "export AWS_SECRET_ACCESS_KEY=7BaiUETep3zPYrhrzKYpBdwkwVV16 BTT+pt2/EXF" sh "aws ec2 create-volume --availability-zone us-east-1c --size 10 --volume-type gp2" stage 'kube-aws init' deleteDir() sh "mkdir coreos-cluster" sh "cd coreos-cluster" sh "kube-aws init --cluster-name=kubernetes-coreos-cluster --external-dns-name=NOSQLSEARCH.COM --region=us-east-1 --availability-zone=us-east-1c --key-name=kubernetes-coreos --kms-key-arn='arn:aws:kms:us-east-1:672593526685:key/ f380f8b3-e93d-4a37-b87f-9ad1dbe909be '" stage "kube-aws render" WORKER_COUNT = input message: 'Number of Nodes', parameters: [[$class: 'StringParameterDefinition', defaultValue: '3', description: '', name: 'WORKER_COUNT']] INSTANCE_TYPE = input message: 'Instance Type', parameters: [[$class: 'StringParameterDefinition', defaultValue: 't2.micro', description: '', name: 'INSTANCE_TYPE']] sh "kube-aws render" sh "sed -i '''s/#workerCount: 1/workerCount: '''$WORKER_COUNT'''/''' cluster.yaml" sh "sed -i '''s/#workerInstanceType: m3.medium/workerInstanceType: '''$INSTANCE_TYPE'''/''' cluster.yaml" sh "kube-aws validate" stage "Archive CFN" step([$class: 'ArtifactArchiver', artifacts: 'cluster.yaml, stack-template.json,credentials/*,userdata/*', fingerprint: true]) stage "Deploy Cluster" shouldDeploy = input message: 'Should Deploy Cluster?', parameters: [[$class: 'ChoiceParameterDefinition', choices: 'yesno', description: '', name: 'Deploy']] if(shouldDeploy == "yes") { echo "Deploying Kubernetes cluster" sh "kube-aws up" sh "kube-aws status" step([$class: 'ArtifactArchiver', artifacts: 'kubeconfig', fingerprint: true]) } }
Tworzenie potoku Jenkins
W panelu Jenkins kliknij utwórz nowe oferty pracy aby utworzyć potok Jenkinsa, jak pokazano na rysunku 1.
Rysunek 1: Wybierz „utwórz nowe miejsca pracy”, aby utworzyć zadanie Jenkins
W interfejsie użytkownika określ nazwę potoku (install-kubernetes ) na przykład i wybierz Potok , jak pokazano na rysunku 2. Kliknij OK.
Rysunek 2: Wybór potoku
Uruchomi się kreator konfiguracji potoku, jak pokazano na rysunku 3.
Rysunek 3: Kreator konfiguracji potoku Jenkins
Wybierz Potok patka. W Definicji wybierz Skrypt potoku jak pokazano na rysunku 4.
Rysunek 4: Zakładka Rurociąg
Skopiuj i wklej wymieniony wcześniej plik Jenkins. Kliknij Zapisz , jak pokazano na rysunku 5.
Rysunek 5: Konfiguracja skryptu potoku
Zostanie utworzony nowy potok Jenkins (patrz Rysunek 6).
Rysunek 6: Utworzono potok Jenkinsa
Początkowo potok nie działa, a Stan nie powinien wymieniać żadnej uruchomionej lub uruchomionej kompilacji, jak pokazano na rysunku 7.
Rysunek 7: Stan potoku Jenkinsa
Wniosek
W tym artykule skonfigurowaliśmy plik Jenkinsfile i użyliśmy pliku Jenkinsfile do utworzenia potoku Jenkins. W 3 i końcowym artykule na temat automatyzacji instalacji Kubernetes za pomocą Jenkins, uruchomimy potok Jenkins utworzony w tym artykule, aby zainstalować Kubernetes. Następnie przetestujemy zainstalowany klaster Kubernetes.