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

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

    CoreOSは、Dockerコンテナ用に設計されたオペレーティングシステムです。 CoreOSには、Dockerがすぐにインストールされています。以前の記事「アマゾンウェブサービス(AWS)でのKubernetesの使用を開始する」で詳細に説明されているように、KubernetesはCloudFormationを使用してCoreOSにインストールできます。

    問題

    KubernetesはCoreOSにプリインストールされておらず、 kube-awsを使用してインストールできます。 ツールであり、ユーザー入力と構成が必要です。 CoreOSへのKubernetesのインストールは複雑なプロセスであり、図1に示す次の段階で構成されています。


    図1: CoreOSステージへのKubernetesのインストール

    解決策

    図2に示すように、Jenkinsパイプラインを使用してKubernetesのインストールを自動化できます。インストールのさまざまな段階を Jenkinsfileで構成できます。 そして、パイプラインが実行されると、 kube-aws ツールがダウンロードされ、 CloudFormation スタックが初期化され、Asset Directoryのコンテンツがレンダリングされ、ワー​​カーインスタンスの数などのクラスターパラメーターがカスタマイズされ、その後、クラスターが検証されて起動されます。


    図2: CoreOSにKubernetesをインストールするためのJenkinsパイプライン

    Jenkinsパイプラインを使用したKubernetesのインストールは、自動化の例です。 DevOpsデザインパターン。

    3つの記事のチュートリアルでは、Jenkinsパイプラインを使用してKubernetesのインストールプロセスを自動化します。この記事には次のセクションがあります:

    • 環境の設定
    • 前提条件のアーティファクトの作成
    • ジェンキンスノードの作成
    • 結論

    環境の設定

    CoreOSインスタンスにDockerイメージ「jenkins」を使用してJenkinsをインストールします。 Jenkinsパイプラインを使用してAmazonAMILinuxEC2インスタンスでKubernetesクラスターを起動します。まず、図3に示すように、2つのEC2インスタンスを起動します。1つはAmazon Linuxを実行し、もう1つはCoreOSを実行します。


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

    Amazon Linuxインスタンスを作成するときは、「Create a new key pair」を選択して新しいキーペア(「jenkins」など)を作成し、Jenkinsエージェントの設定に使用する秘密キー「jenkins.pem」をダウンロードします。 CoreOSを実行しているEC2インスタンスのパブリックIPアドレスを取得し、SSHでインスタンスにログインします。

    ssh -i "jenkins.pem"  [email protected]

    JenkinsのDockerイメージを実行してJenkinsを起動します。

    docker run -name jenkins -p 8080:8080 -p 50000:50000 jenkins

    Dockerイメージ「Jenkins」がダウンロードされます。ジェンキンスが始めます。生成されたパスワードをコピーします。 Jenkinsを実行しているEC2インスタンスのパブリックDNSを取得します。 URL :8080を使用する 、図4に示すように、Jenkinsダッシュボードにログインします。


    図4: Jenkins管理コンソール

    前提条件のアーティファクトの作成

    次に、自動化に対応していないKubernetesクラスターのアーティファクトをいくつか作成する必要があります。

    • EC2キーペア
    • KMSキー
    • Jenkinsディレクトリ/var/ jenkins
    • AmazonLinuxを実行しているAmazonEC2インスタンスへのSSHログイン
    ssh -i "jenkins.pem"  [email protected]

    Amazon EC2を使用しているため、AWSアカウントが必要です。 AWSセキュリティクレデンシャルのセットを作成する必要があります。これを使用して、CloudFormationスタックを起動するEC2インスタンスを設定します。新しいAWSセキュリティクレデンシャルを作成するには、ユーザーアカウントの[セキュリティクレデンシャル]をクリックし、[新しいアクセスキーの作成]をクリックします アクセスキーを作成します。 アクセスキーIDをコピーします とアクセスキー。 Amazon Linuxインスタンスで、次のコマンドを実行して、AWSクレデンシャルを使用してインスタンスを設定します。

    aws configure

    プロンプトが表示されたら、アクセスキーIDとアクセスキーを指定します。デフォルトのリージョン名を指定します( us-east-1 )と出力形式( json )、図5に示すように。


    図5: AWSクレデンシャル、リージョン、デフォルトの出力フォーマットを使用したJenkinsインスタンスの設定

    次に、EC2キーペアを作成します。次のコマンドを実行して、 kubernetes-coreosというキーペアを作成します kubernetes-coreos.pemとして保存します 。

    aws ec2 create-key-pair
       --key-name kubernetes-coreos
       --query 'KeyMaterial'
       --output text > kubernetes-coreos.pem
    

    モードを400として使用して、キーペアのアクセス許可を変更します。これにより、所有者が読み取るアクセス許可が設定されます。

    chmod 400 kubernetes-coreos.pem

    キーペアが作成され、アクセス許可が設定されます(図6を参照)。


    図6: Kubernetesのキーペアの作成

    図7に示すように、キーペアはAWSEC2コンソールにも表示されます。


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

    次に、クラスターTLSアセットの暗号化/復号化に使用され、Arn文字列で識別されるKMSキーを作成します。 awsを使用する リージョンus-east-1のKMSキーを作成するためのコマンドラインインターフェイス 。

    aws kms
       --region=us-east-1 create-key
       --description="kube-aws assets"
    

    図8に示すように、KMSキーが作成されます。 KeyMetadata.Arnをコピーします。 arn:aws:kms:us-east-1で始まる文字列 後でクラスターCloudFormationを初期化するために使用されます。


    図8: KMSキーの作成

    Jenkinsのディレクトリも作成する必要があります:

    sudo mkdir /var/Jenkins
    sudo chmod 777 /var/jenkins
    

    図9に示すように、ディレクトリが作成され、権限が設定されます。


    図9: Jenkinsのディレクトリを作成する

    Jenkinsノードの作成

    Jenkins Pipelineは、JenkinsPipelineプラグインを利用するJenkinsプロジェクトです。パイプラインは通常、一連のステップで構成され、各ステップがタスクを実行します。エージェントで使用可能なエグゼキュータは、Jenkinsプロジェクトを実行するために使用されます。 「エージェント」は、マスターノードからプロジェクトをオフロードするように構成されたマシンです。 「マスター」ノードは、Jenkinsがインストールされているマシンであり、パイプラインスクリプトの解析や、エグゼキュータでのJenkinsプロジェクトの実行など、ビルドシステムのすべてのタスクを処理します。 「エグゼキュータ」は、コードをコンパイルするための計算リソースであり、マスターノードまたはエージェントノードで構成できます。このセクションでは、エージェントノードを作成し、そのノードにエグゼキュータを設定します。 ジェンキンスの管理を選択します 図10に示すように、Jenkinsダッシュボードで。


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

    続いて、ノードの管理を選択します 、図11に示すように。


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

    「マスター」ノードが一覧表示されます。 新しいノードをクリックします 図12に示すように、エージェントノードを作成します。


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

    ノード名を指定します (ジェンキンス 、たとえば)、常設エージェントを選択します 図13に示すように、ラジオボタン。[OK]をクリックします。


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

    新しいエージェントノードを構成するには、エージェントを作成するホストDNSが必要です。図14に示すように、AmazonLinuxイメージを実行しているEC2インスタンスのAWSEC2コンソールからパブリックDNSをコピーします。


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

    新しいエージェント入力ユーザーインターフェースで、名前を指定します (ジェンキンス 、 例えば)。 エグゼキュータの数を指定します as1.リモートルートディレクトリを指定します / var / jenkinsとして 、以前に作成されました。 ラベルを指定します 「ジェンキンス」として、その重要性については次のセクションで説明します。 使用法 、デフォルト設定の「このノードをできるだけ使用する」を維持します。 起動方法の場合 、「SSH経由でUnixマシン上でスレーブエージェントを起動する」を選択します。 ホスト 、EC2コンソールからコピーされたパブリックDNSを指定します。 可用性 、[このエージェントを可能な限りオンラインに保つ]を選択します。 資格情報の場合 、追加をクリックします ドロップダウンして、Jenkins資格情報プロバイダーを選択します 、図15に示すように。


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

    資格情報の追加 ダイアログで、ドメインをグローバルクレデンシャルとして選択します および種類 グローバルとして 。 ユーザー名を指定します 「ec2-user」として、直接入力を選択します 。秘密鍵ファイルjenkins.pemの内容をコピーして貼り付けます キーで 図16に示すように、フィールド。


    図16: Jenkinsクレデンシャルの追加

    追加をクリックします 、図17に示すように。


    図17: Jenkinsクレデンシャルプロバイダー>追加

    ec2-userを選択します クレデンシャルのクレデンシャル 、図18に示すように、[保存]をクリックします 。


    図18: Jenkinsノードの構成

    図19に示すように、新しいエージェントが追加されます。最初は、エージェントがまだ開始されていないため、エージェントを使用できない場合があります。


    図19: JenkinsAgentが作成されました

    エージェントのリンクをクリックし、エージェントの再起動をクリックします 、必要に応じて、図20に示すように。


    図20: エージェントの再起動

    「エージェントは正常に接続され、オンラインです」という出力メッセージは、エージェントが起動されたことを示します(図21を参照)。


    図21: エージェントが正常に接続され、オンラインになっている

    図22に示すように、「jenkins」エージェントは実行中としてリストされているはずです。


    図22: 実行中のジェンキンスエージェント

    結論

    この記事では、Jenkinsを使用してKubernetesのインストールを自動化することの重要性を紹介しました。まず、CoreOSにJenkinsをインストールし、前提条件のアーティファクトを作成し、Jenkinsノードを作成しました。次の記事では、Jenkinsパイプライン用にJenkinsfileを構成し、Jenkinsパイプラインを作成します。そして、3番目の記事では、Jenkinsパイプラインを実行してKubernetesをインストールします。


    1. OracleMultitenant12cでC##プレフィックスなしでユーザーを作成する方法

    2. docker-composeを使用してpostgresqlデータベースにテーブルを作成する

    3. スレッドを使用してデータベース要求を行う

    4. Pythonカーソルを使用してストアドプロシージャから結果を返すことはできません