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.