sql >> データベース >  >> RDS >> Database

Kubernetes AWSでのJenkinsの使用、パート3

    Jenkinsを使用したKubernetesのインストールの自動化に関する最初の記事「KubernetesAWSでのJenkinsの使用、パート1」では、CoreOSにJenkinsをインストールし、Kubernetesをインストールするための前提条件のアーティファクトを作成し、Jenkinsノードを作成しました。 2番目の記事「KubernetesAWSでのJenkinsの使用、パート2」では、Jenkinsfileを構成し、Jenkinsパイプラインを作成しました。この記事では、Jenkinsパイプラインを実行してKubernetesをインストールし、続いてKubernetesクラスターをテストします。この記事には次のセクションがあります:

    • Jenkinsパイプラインの実行
    • Kubernetesクラスターのテスト
    • 結論

    Jenkinsパイプラインの実行

    今すぐ作成をクリックします 図1に示すように、Jenkinsパイプラインを実行します。


    図1: Build Nowは、Jenkinsパイプラインを開始します

    Jenkinsパイプラインが開始され、進行状況バーにパイプラインの進行状況が表示されます。 ステージビュー 図2に示すように、パイプラインのさまざまなステージの値も表示されます。 Kube-aws Jenkinsfileでワーカー数のユーザー入力(およびインスタンスタイプのユーザー入力、後でプロンプトが表示される)を要求したため、ステージビューのレンダリングステージには「一時停止」リンクがあります。 「一時停止」リンクをクリックします。


    図2: パブリックIPアドレスの取得

    Jenkinsパイプラインのコンソール出力で、[要求された入力]をクリックします 図3に示すように、リンク。


    図3: ノード数の入力が要求されました

    ノードの数 図4に示すように、ダイアログが表示され、ノード数のユーザー入力を求められます。Jenkinsfileで構成されているデフォルト値も設定されています。 続行をクリックします 値を指定した後。


    図4: ノード数の指定

    パイプラインは実行を継続し、インスタンスタイプの別の入力要求で再び一時停止します。 入力が要求されましたをクリックします 、図5に示すように。


    図5: インスタンスタイプに対して要求された入力

    インスタンスタイプ ダイアログが表示されます(図6を参照)。デフォルト値を選択して(または別の値を指定して)、[続行]をクリックします。


    図6: インスタンスタイプの指定

    パイプラインは引き続き実行されます。 「クラスターのデプロイ」ステージでは、図7に示すように、別の入力要求リンクが表示されます。リンクをクリックします。


    図7: クラスターをデプロイする必要があるために要求された入力

    クラスターを展開する必要がありますか?ダイアログで、デフォルト値の「yes」を選択し、図8に示すように、「続行」をクリックします。


    図8: クラスターをデプロイする必要がありますか?

    パイプラインは引き続き実行されます。図9に示すコンソール出力のメッセージに示されているように、KubernetesクラスターのAWSリソースの作成には時間がかかる場合があります。


    図9: AWSリソースの作成

    パイプラインは完了するまで実行されます。 「SUCCESS」メッセージは、図10に示すように、パイプラインが正常に実行されたことを示します。


    図10: Jenkinsパイプラインの実行が正常に完了しました

    Jenkinsパイプラインのステージビューには、図11に示すように、完了したパイプラインのさまざまなステージが表示されます。ステージビューには、最後のビルド、最後の安定したビルド、最後の成功したビルド、および最後に完了したビルドのリンクが含まれます。


    図11: ステージビュー

    図12に示すように、[フルステージビュー]をクリックして、フルステージビューを個別に表示します。


    図12: フルステージビューの選択

    図13に示すように、フルステージビューが表示されます。


    図13: フルステージビュー

    ダッシュボードでは、図14に示すように、Jenkinsパイプラインの横にあるアイコンが緑色に変わり、正常に完了したことを示します。


    図14: Jenkinsパイプラインが正常に完了したとリストされているJenkinsダッシュボード

    コンソール出力を表示するには、図15に示すように、ビルドのコンソール出力を選択します。


    図15: ビルド履歴>コンソール出力

    コンソール出力が表示されます(図16を参照)。


    図16: コンソール出力

    より詳細なコンソール出力は、次のコードセグメントにリストされています。

    Started by user Deepak Vohra
    [Pipeline] node
    Running on jenkins in /var/jenkins/workspace/install-kubernetes
    [Pipeline] {
       [Pipeline] stage (set env)
       Using the 'stage' step without a block argument is deprecated
       Entering stage set env
       Proceeding
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + sudo yum install gnupg2
       Loaded plugins: priorities, update-motd, upgrade-helper
       Package gnupg2-2.0.28-1.30.amzn1.x86_64 already installed and
          latest version
       Nothing to do
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + gpg2 --keyserver pgp.mit.edu --recv-key FC8A365E
       gpg: directory '/home/ec2-user/.gnupg' created
       gpg: new configuration file '/home/ec2-user/.gnupg/gpg.conf'
            created
       ...
       ...
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + gpg2 --fingerprint FC8A365E
       pub   4096R/FC8A365E 2016-03-02 [expires: 2021-03-01]
             Key fingerprint = 18AD 5014 C99E F7E3 BA5F  6CE9 50BD
                               D3E0 FC8A 365E
       uid   [ unknown] CoreOS Application Signing Key
             <[email protected]>
       sub   2048R/3F1B2C87 2016-03-02 [expires: 2019-03-02]
       sub   2048R/BEDDBA18 2016-03-08 [expires: 2019-03-08]
       sub   2048R/7EF48FD3 2016-03-08 [expires: 2019-03-08]
    
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + wget https://github.com/coreos/coreos-kubernetes/releases/
          download/v0.7.1/kube-aws-linux-amd64.tar.gz
       --2016-11-29 21:22:04-- https://github.com/coreos/
          coreos-kubernetes/releases/download/v0.7.1/
          kube-aws-linux-amd64.tar.gz
       Resolving github.com (github.com)... 192.30.253.112,
          192.30.253.113
       Connecting to github.com (github.com)|192.30.253.112|:443...
          connected.
       HTTP request sent, awaiting response... 302 Found
       Location: https://github-cloud.s3.amazonaws.com/releases/
          41458519/309e294a-29b1-
       ...
       ...
       2016-11-29 21:22:05 (62.5 MB/s) - 'kube-aws-linux-amd64.tar.gz'
          saved [4655969/4655969]
    
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + wget https://github.com/coreos/coreos-kubernetes/releases/
       download/v0.7.1/kube-aws-linux-amd64.tar.gz.sig
       --2016-11-29 21:22:05--  https://github.com/coreos/
          coreos-kubernetes/releases/download/v0.7.1/kube-aws-linux-
          amd64.tar.gz.sig
       Resolving github.com (github.com)... 192.30.253.113,
          192.30.253.112
       Connecting to github.com (github.com)|192.30.253.113|:443...
          connected.
       HTTP request sent, awaiting response... 302 Found
       Location: https://github-cloud.s3.amazonaws.com/releases/
          41458519/0543b716-2bf4-
       ...
       ...
       Saving to: 'kube-aws-linux-amd64.tar.gz.sig'
    
       0K                          100% 9.21M=0s
    
       2016-11-29 21:22:05 (9.21 MB/s) -
          'kube-aws-linux-amd64.tar.gz.sig' saved [287/287]
    
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + gpg2 --verify kube-aws-linux-amd64.tar.gz.sig kube-aws-
       linux-amd64.tar.gz
       gpg: Signature made Mon 06 Jun 2016 09:32:47 PM UTC using RSA
            key ID BEDDBA18
       gpg: Good signature from "CoreOS Application Signing Key
            <[email protected]>" [unknown]
       gpg: WARNING: This key is not certified with a trusted
            signature!
       gpg: There is no indication that the signature belongs to the
            owner.
       Primary key fingerprint: 18AD 5014 C99E F7E3 BA5F  6CE9 50BD
                                D3E0 FC8A 365E
          Subkey fingerprint: 55DB DA91 BBE1 849E A27F  E733 A6F7
                              1EE5 BEDD BA18
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + tar zxvf kube-aws-linux-amd64.tar.gz
       linux-amd64/
       linux-amd64/kube-aws
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + sudo mv linux-amd64/kube-aws /usr/local/bin
       [Pipeline] sh
       [install-kubernetes] Running shell script
       ...
       ...
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + aws ec2 create-volume --availability-zone us-east-1c
       --size 10 --volume-type gp2
       {
          "AvailabilityZone": "us-east-1c",
          "Encrypted":        false,
          "VolumeType":       "gp2",
          "VolumeId":         "vol-b325332f",
          "State":            "creating",
          "Iops":             100,
          "SnapshotId":       "",
          "CreateTime":       "2016-11-29T21:22:07.949Z",
          "Size":             10
       }
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + aws ec2 create-key-pair --key-name kubernetes-coreos
       --query KeyMaterial --output text
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + chmod 400 kubernetes-coreos.pem
       [Pipeline] stage (Kube-aws init)
       Using the 'stage' step without a block argument is deprecated
       Entering stage Kube-aws init
       Proceeding
       [Pipeline] deleteDir
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + mkdir coreos-cluster
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + cd coreos-cluster
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + 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/
          c9748fda-2ac6-43ff-a267-d4edc5b21ad9
       Success! Created cluster.yaml
    
       Next steps:
       1. (Optional) Edit cluster.yaml to parameterize the cluster.
       2. Use the "kube-aws render" command to render the stack
          template.
       [Pipeline] stage (Kube-aws render)
       Using the 'stage' step without a block argument is deprecated
       Entering stage Kube-aws render
       Proceeding
       [Pipeline] input
       Input requested
       Approved by Deepak Vohra
       [Pipeline] input
       Input requested
       Approved by Deepak Vohra
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + kube-aws render
       Success! Stack rendered to stack-template.json.
    
       Next steps:
       1. (Optional) Validate your changes to cluster.yaml with
          "kube-aws validate"
       2. (Optional) Further customize the cluster by modifying
          stack-template.json or files in ./userdata.
       3. Start the cluster with "kube-aws up".
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + sed -i 's/#workerCount: 1/workerCount: 3/' cluster.yaml
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + sed -i 's/#workerInstanceType: m3.medium/
          workerInstanceType: t2.micro/' cluster.yaml
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + kube-aws validate
       Validating UserData...
       UserData is valid.
    
       Validating stack template...
       Validation Report: {
          Capabilities: ["CAPABILITY_IAM"],
          CapabilitiesReason: "The following resource(s) require
             capabilities: [AWS::IAM::Role]",
          Description: "kube-aws Kubernetes cluster
             kubernetes-coreos-cluster"
       }
       stack template is valid.
    
       Validation OK!
       [Pipeline] stage (Archive CFN)
       Using the 'stage' step without a block argument is deprecated
       Entering stage Archive CFN
       Proceeding
       [Pipeline] step
       Archiving artifacts
       Recording fingerprints
       [Pipeline] stage (Deploy Cluster)
       Using the 'stage' step without a block argument is deprecated
       Entering stage Deploy Cluster
       Proceeding
       [Pipeline] input
       Input requested
       Approved by Deepak Vohra
       [Pipeline] echo
       Deploying Kubernetes cluster
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + kube-aws up
       Creating AWS resources. This should take around 5 minutes.
       Success! Your AWS resources have been created:
       Cluster Name:    kubernetes-coreos-cluster
       Controller IP:   34.193.183.134
    
       The containers that power your cluster are now being downloaded.
    
       You should be able to access the Kubernetes API once the
          containers finish downloading.
       [Pipeline] sh
       [install-kubernetes] Running shell script
       + kube-aws status
       Cluster Name:    kubernetes-coreos-cluster
       Controller IP:   34.193.183.134
       [Pipeline] step
       Archiving artifacts
       Recording fingerprints
       [Pipeline] }
    [Pipeline]   // Node
    [Pipeline] End of Pipeline
    Finished: SUCCESS
    

    Kubernetesクラスターのテスト

    Kubernetesをインストールしたら、次にアプリケーションを実行してクラスターをテストします。まず、パブリックDNS名( nosqlsearch.com )でコントローラーIPを構成する必要があります。 ドメイン)。図17に示すように、コンソール出力からコントローラーIPをコピーします。


    図17: パブリックIPアドレスの取得

    図18に示すように、KubernetesControllerIpはEC2コンソールから取得することもできます。


    図18: KubernetesControllerIpの取得

    図19に示すように、ホスティングプロバイダーのnosqlsearch.comドメインのDNSゾーンファイルにA(ホスト)エントリを追加します。Aレコードの追加は、ホスティングプロバイダーごとに少し異なります。


    図19: パブリックIPアドレスの取得

    SSHマスターのIPを使用してKubernetesマスターにログインします。

    ssh -i "kubernetes-coreos.pem" [email protected]

    図20に示すように、CoreOSコマンドプロンプトが表示されます。


    図20: パブリックIPアドレスの取得

    kubectlをインストールします バイナリ:

    sudo wget https://storage.googleapis.com/kubernetes-release/
       release/v1.3.0/bin/linux/amd64/./kubectl
    sudo chmod +x ./kubectl
    

    ノードを一覧表示します:

    ./kubectl get nodes

    Kubernetesクラスタノードが一覧表示されます(図21を参照)。


    図21: パブリックIPアドレスの取得

    クラスターをテストするには、 nginxのデプロイを作成します 3つのレプリカで構成されています。

    kubectl  run nginx --image=nginx --replicas=3

    続いて、展開を一覧表示します。

    kubectl get deployments

    図22に示すように、「nginx」デプロイメントが一覧表示されます。


    図22: パブリックIPアドレスの取得

    クラスタ全体のポッドを一覧表示します:

    kubectl get pods -o wide

    タイプLoadBalancerのサービスを作成します nginxから 展開:

    kubectl expose deployment nginx --port=80 --type=LoadBalancer

    サービスを一覧表示します:

    kubectl get services

    図23に示すように、クラスター全体のポッドが一覧表示されます。「nginx」サービスが作成され、クラスターIPと外部IPを含めて一覧表示されます。


    図23: パブリックIPアドレスの取得

    nginxを呼び出す クラスタIPでのサービス。 nginx 図24に示すように、サービス出力のHTMLマークアップが表示されます。


    図24: パブリックIPアドレスの取得

    結論

    3つの記事で、Jenkinsプロジェクトを使用したKubernetesクラスターのインストールについて説明しました。クラスターをインストールするために、Jenkinsfileを使用してJenkinsパイプラインプロジェクトを作成しました。 JenkinsパイプラインはKubernetesのインストールを自動化し、同じJenkinsパイプラインを必要に応じて変更して再実行し、複数のKubernetesクラスターを作成できます。


    1. MariaDBで利用可能な照合を取得する3つの方法

    2. 初心者向けのSQLINSERT

    3. scope_identity()を使用してネストされた一括挿入を実行する最速の方法は?

    4. コマンドラインを使用してpostgresバックアップファイルを復元しますか?