16.04前書きcontainersを使用し始めている場合、ビルド、テスト、および展開を自動化する方法を知りたいと思うでしょう。Native]アプローチを採用することで、適切なインフラストラクチャAPIを活用して、アプリケーションを自動化してパッケージ化およびデプロイできます。自動化を行うための2つのビルディングブロックには、_containerイメージとコンテナーオーケストレーターが含まれます。[Kubernetes]がコンテナオーケストレーションのデフォルトの選択肢になりました。*シリーズの最初の記事では、次のことを行います。Docker、https://github.com/projectatomic/buildah[Buildah]、およびhttps://github.com/GoogleContainerTools/kaniko[Kaniko]を使用してコンテナイメージを構築します。TerraformでKubernetesクラスターを設定し、_Deployments_および_Services_を作成します。Resources_を使用してKubernetesクラスターの機能を拡張します。このチュートリアルの終わりまでに、Docker、Buildah、およびKanikoで構築されたコンテナーイメージと、展開、サービス、およびカスタムリソースを含むKubernetesクラスターが作成されます。CDツール、関連するトピックを取り上げます。メッシュ、およびGitOps。16.04での初期サーバー設定]チュートリアルに従ってください。Dockerはサーバーにインストールされています。16.04でDockerをインストールして使用する方法インストール手順。[これらの手順]を参照してください。DigitalOceanアカウントと個人アクセストークン。[これらの手順]を参照して、アクセストークンを取得してください。コンテナとDockerに精通している。[ウェビナーシリーズ:コンテナ入門]を参照してください。Kubernetesの概念に精通している。[Kubernetesの概要]を参照してください。ステップ1-DockerおよびBuildahを使用したコンテナーイメージの構築コンテナイメージは、コンテナの作成と実行に使用できる独自のアプリケーションコード、ランタイム、および依存関係を備えた自己完結型のエンティティです。さまざまなツールを使用してコンテナーイメージを作成できます。この手順では、DockerとBuildahの2つでコンテナーを構築します。Dockerfilesを使用したコンテナイメージの構築Dockerは、Dockerfileから指示を読み取ることにより、コンテナーイメージを自動的に構築します。Dockerfileは、コンテナーイメージのアセンブルに必要なコマンドを含むテキストファイルです。+`コマンドを使用して、Dockerfileで提供されるコマンドラインの指示を実行する自動ビルドを作成できます。context_を渡します。これには、環境を作成し、コンテナーイメージでアプリケーションを実行するために必要なファイルのセットが含まれます。通常、Dockerfileとビルドコンテキスト用のプロジェクトフォルダーを作成します。`++`というフォルダーを作成します。+`フォルダー内にDockerfileを作成します。Dockerfile次のコンテンツをファイルに追加します。["nginx"]このDockerfileは、Nginxを実行するイメージを構築する一連の命令で構成されています。+`パッケージがインストールされます。nginx`がデフォルトのコマンドになるように設定しました。次に、ビルドコンテキストとして現在のディレクトリ(。build`コマンドでコンテナイメージをビルドします。」オプションを渡すと、画像に「+」という名前が付けられます。.次の出力が表示されます。nginx:latestこれで画像が作成されました。次のコマンドを使用して、Dockerイメージを一覧表示できます。+`イメージを使用してコンテナを作成できるようになりました。Atomic]によって開発されたCLIツールです。OCIは、業界のベストプラクティスを標準化するために、コンテナランタイムとイメージの仕様を提供します。Buildahは、作業コンテナーまたはDockerfileからイメージを作成できます。+」などのイメージ操作を実行できます。この手順では、ソースからBuildahをコンパイルし、それを使用してコンテナーイメージを作成します。Buildahをインストールするには、パッケージやパッケージセキュリティなどを管理できるツールなど、必要な依存関係が必要になります。次のコマンドを実行して、これらのパッケージをインストールします。[Go]をインストールする必要もあります。version次の出力が表示され、インストールが成功したことが示されます。`ソースコードを取得できます。+`コンテナランタイムの実装であり、Buildahコンテナの実行に使用します。+`をインストールします。+`ファイルを作成して、コンテナレジストリを設定します。/etc/containers/registries.conf次のコンテンツをファイルに追加して、レジストリを指定します。+`設定ファイルは、レジストリまたはドメイン部分を含まないイメージ名を完成させるときにどのレジストリを参照するかを指定します。+`リポジトリを使用して、次のコマンドを実行してイメージをビルドします。このリポジトリには、関連するDockerfileも含まれています。+`という名前のイメージを作成します。イメージをリストするには、次のコマンドを使用します。images次の出力が表示されます。+`は、Dockerfileのベースイメージです。Hubにプッシュできます。これにより、将来使用するために保存できます。Hubアカウントにログインする必要があります。config.json」が取得されます。Hubにプッシュできます。+`とプッシュするイメージを引用して次のコマンドを実行できます。docker:///rsvpapp:buildah次のコマンドを使用して、結果のイメージをローカルDockerデーモンにプッシュすることもできます。docker-daemon:rsvpapp:buildah最後に、作成したDockerイメージを見てください。DockerとBuildahの2つの異なるツールを使用してコンテナーイメージを構築した経験があります。次に、Kubernetesでコンテナのクラスターをセットアップする方法について説明します。手順2-kubeadmとTerraformを使用してDigitalOceanでKubernetesクラスターを設定するDigitalOceanでKubernetesを設定するには、さまざまな方法があります。[kubeadm]でKubernetesを設定する方法の詳細については、https://www.digitalocean.comをご覧ください。18.04でKubeadmを使用してKubernetesクラスターを作成する方法]。このチュートリアルシリーズでは、アプリケーション開発へのクラウドネイティブアプローチの採用について説明しているため、クラスターのセットアップ時にこの方法論を適用します。具体的には、kubeadmとhttps://www.terraform.io/[Terraform]を使用してクラスターの作成を自動化します。これは、インフラストラクチャの作成と変更を簡素化するツールです。個人用アクセストークンを使用して、TerraformでDigitalOceanに接続し、3つのサーバーをプロビジョニングします。+`コマンドを実行して、1つのマスターノードと2つのワーカーを含む3ノードKubernetesクラスターを作成します。[SSHキー]のペアを作成します。VMへのパスワードなしのログインを許可します。rsa次の出力が表示されます。.ssh`ディレクトリに保存するか、別の宛先を入力します。次に、次のプロンプトが表示されます。+」を押して、ノードへのパスワードなしのログインを有効にします。キーペアが作成されたことを確認するメッセージが表示されます。|+----[SHA256]-----+次のコマンドを実行して公開鍵を取得します。これにより、端末に表示されます。[これらの指示]に従って、このキーをDigitalOceanアカウントに追加します。次に、Terraformをインストールします。versionTerraformのインストールを確認する出力が表示されます。+`ディレクトリを作成します。+`ディレクトリを作成すると、設定ファイルをこの場所にコピーできます。このセクションの後半でKubernetesセットアップスクリプトを実行したら、これを行います。+`ディレクトリで設定ファイルを探してクラスターにアクセスします。次に、このチュートリアルのサンプルプロジェクトリポジトリを複製します。これには、インフラストラクチャをセットアップするためのTerraformスクリプトが含まれています。https://github.com/do-community/k8s-cicd-webinars.gitTerraformスクリプトディレクトリに移動します。k8s-cicd-webinars/webinar1/2-kubernetes/1-Terraform/SSH公開キーのフィンガープリントを取得します。$2}'次のような出力が表示され、強調表示された部分がキーを表します。OutputMD5:キーはここに表示されているものとは異なることに注意してください。Terraformが使用できるように、指紋を環境変数に保存します。FINGERPRINT=次に、DOパーソナルアクセストークンをエクスポートします。+`プロジェクトディレクトリを見てください。script.shこのフォルダーには、TerraformでKubernetesクラスターをデプロイするために必要なスクリプトと構成ファイルが含まれています。+`スクリプトを実行して、Kubernetesクラスターのセットアップをトリガーします。+`を使用してクラスターノードを一覧表示します。+`状態になりました。Google]を探索できるようになりました。ステップ3-Kanikoを使用したコンテナイメージの構築このチュートリアルの前半で、DockerfilesとBuildahを使用してコンテナーイメージを構築しました。コンテナイメージをKubernetesで直接構築できるとしたらどうでしょうか。build`コマンドを実行する方法がありますが、これはネイティブのKubernetesツールではありません。イメージを構築するにはDockerデーモンに依存する必要があり、クラスター内のhttps://kubernetes.io/docs/concepts/workloads/pods/pod/[Pods]のいずれかで実行する必要があります。Kanikoというツールを使用すると、既存のKubernetesクラスターでDockerfileを使用してコンテナーイメージを構築できます。この手順では、Kanikoを使用してDockerfileでコンテナーイメージを構築します。Hubにプッシュします。Hubの資格情報をKanikoに渡す必要があります。config.json`ファイルを作成しました。_ConfigMap_オブジェクトを作成し、Kubernetesクラスター内に資格情報を保存しましょう。ConfigMapオブジェクトは、構成パラメーターを保存し、アプリケーションから分離するために使用されます。docker-config`というConfigMapを作成するには、次のコマンドを実行します。+`というPod定義ファイルを作成できます(ただし、どこにでも移動できます)。pod-kaniko.yml次のコンテンツをファイルに追加して、Podをデプロイするときに何が起こるかを指定します。{}この構成ファイルは、Podがデプロイされたときに何が起こるかを説明しています。container]はDockerfileを使用してGitリポジトリのクローンを作成します。`と呼ばれる共有ボリュームに入れます。Initコンテナは、アプリケーションコンテナの前に実行され、アプリケーションコンテナからの実行が望ましくないユーティリティやその他のタスクの実行に使用できます。Hubにプッシュします。+`ポッドをデプロイするには、次のコマンドを実行します。pod-kaniko.yml次の確認が表示されます。createdポッドのリストを取得します。pods次のリストが表示されます。+`を再度実行します。pods以下が表示されます。+`をもう一度実行します。+`ボリューム内に複製されたことを示しています。その後、Kanikoのビルドプロセスが実行され、最終的に終了しました。ポッドのログを確認します。kaniko次の出力が表示されます。Hubアカウントにプッシュしたことがわかります。これで、Dockerイメージをプルできます。/rsvpapp:kanikoこれでKubernetesクラスターが正常に構築され、クラスター内から新しいイメージが作成されました。_Deployments_および_Services_の説明に移りましょう。_Deployments_を使用すると、アプリケーションを実行できます。展開では、ポッドに必要な状態を指定して、ロールアウト全体の一貫性を確保します。`というhttps://www.nginx.com/[Nginx]デプロイメントファイルを作成します。