Jenkinsを使用したKubernetesインストールの自動化に関する3つの記事の最初の記事、「Kubernetes AWSでのJenkinsの使用、パート1」では、前提条件のアーティファクトを作成し、Jenkinsノードを作成しました。この続きの記事では、Jenkinsパイプライン用にJenkinsfileを構成し、Jenkinsパイプラインを作成します。この記事には次のセクションがあります:
- Jenkinsfileの構成
- Jenkinsパイプラインの作成
- 結論
Jenkinsfileの作成
Jenkinsパイプラインは、 Jenkinsfileというテキストファイルで構成されます。 Groovy構文で。 Jenkinsfile ステップで構成されます 。 「ステップ」はビルドステップであり、Jenkinsが実装するための指示です。 2種類のステップがサポートされています:ノード およびステージ 。 「ノード」は、コードを実行するエージェントのエグゼキュータを選択する最上位のステップです。ノードはマシンです(マスター またはエージェント )およびノードステップ内のラベルは、ノードがマシンを選択するためのマシン上のラベルと一致する必要があります。 「ノード」ステップは、ワークスペースを作成します 、これはファイルディレクトリであり、リソースを大量に消費する処理のための特定のJenkinsジョブ用です。 「ノード」ステップは、Jenkinsビルドキューに追加することにより、エグゼキュータスロットで定義されたステップもスケジュールします。エグゼキュータスロットがスケジュールされたステップを解放すると、ビルドキューから実行されます。
Jenkinsfileというファイルを作成します (接尾辞なし)。接尾辞のないファイルは、コマンドプロンプトから次のコマンドを使用してWindowsで作成されます。 「。」に注意してください含まれるコマンドの最後。
>notepad Jenkinsfile.
ダイアログで「Jenkinsfileが見つかりません。ファイル。新しいファイルを作成しますか?」 [はい]をクリックします。 Jenkinsfile ファイルが作成されます。 Jenkinsfile内 、「ノード」と呼ばれるトップレベルのステップを作成します。このステップでは、「jenkins」ラベルは、Jenkinsエージェントで構成されたLabels値と同じです。
node('jenkins') { }
ノードステップ内に、他のステップを追加します Kubernetesクラスターをインストールします。 ステージステップを追加します Kubernetesをインストールするため。 Kubernetesをインストールする手順は十分に文書化されており、再度説明することはありません。参考までに、「アマゾンウェブサービス(AWS)でのKubernetes入門」では、インストール手順について詳しく説明しています。シェルコマンドは「sh」で実行されます。ワーカーの数やインスタンスタイプなどの変数に対するユーザー入力が求められる場合があります。
kube-aws init CloudFormationスタックを初期化するコマンドには、「kubernetes-coreos-cluster」(任意の名前)としてハードコードされたクラスター名があります。 -external-dns-name ドメイン名NOSQLSEARCH.COMに設定されています 、これはユーザーごとに異なります。 EC2キーペアは-key-nameで設定されます kubernetes-coreosへ 、以前に作成されました。 KMSキーはKeyMetadata.Arnに設定されます aws kmsで以前に生成された文字列 -kms-keyのコマンド オプション。生成されたJenkinsfile 以下にリストされています:
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]) } }
Jenkinsパイプラインの作成
Jenkinsダッシュボードで、[新しいジョブを作成する]をクリックします 図1に示すように、Jenkinsパイプラインを作成します。
図1: 「新しいジョブの作成」を選択して、Jenkinsジョブを作成します
ユーザーインターフェースで、パイプライン名を指定します( install-kubernetes )、たとえば、パイプラインを選択します 、図2に示すように、[OK]をクリックします。
図2: パイプラインの選択
図3に示すように、パイプライン構成ウィザードが開始されます。
図3: Jenkinsパイプライン構成ウィザード
パイプラインを選択します タブ。 定義 フィールドで、パイプラインスクリプトを選択します 図4に示すように、オプション。
図4: パイプラインタブ
前述のJenkinsファイルをコピーして貼り付けます。 保存をクリックします 、図5に示すように。
図5: パイプラインスクリプトの構成
新しいJenkinsパイプラインが作成されます(図6を参照)。
図6: Jenkinsパイプラインが作成されました
最初は、パイプラインは実行されておらず、ステータス 図7に示すように、開始または実行されているビルドをリストしないでください。
図7: Jenkinsパイプラインステータス
結論
この記事では、Jenkinsfileを構成し、Jenkinsfileを使用してJenkinsパイプラインを作成しました。 Jenkinsを使用したKubernetesのインストールの自動化に関する3つの最後の記事では、この記事で作成したJenkinsパイプラインを実行してKubernetesをインストールします。続いて、インストールされているKubernetesクラスターをテストします。