[Donationsのために書く]の一部として寄付を受け取りましたプログラム。前書きSpin​​nakerは、強力でカスタマイズ可能なパイプラインシステムを使用した、高速で安全かつ再現可能な展開のためのオープンソースのリソース管理および継続的配信アプリケーションです。Kubernetes]を含む多くのプラットフォームへのアプリケーションの自動展開が可能です。blackなど)を使用するようにSpinnakerを構成できます。JenkinsやTravisCIなどの他のDevOpsツールと統合でき、GitHubリポジトリとDockerレジストリを監視するように構成できます。[Halyard]によって管理されています。これは、Spinnakerをさまざまなプラットフォームに構成および展開するために特別に構築されたツールです。storage]が必要です。Spacesのように、このタスクのさまざまなプラットフォームをサポートしています。Kubernetesにデプロイします。TLS証明書を使用して保護します。+`アプリをKubernetesクラスターにデプロイします。Organizationsを介して認証と承認を導入します。最終的に、Kubernetesクラスターに安全で動作するSpinnaker展開ができます。[公式の指示]に従って、ローカルマシンにインストールされたHalyard。16.04以降のUbuntuバージョンでHalyardを使用することはサポートされていないことに注意してください。Docker]を使用できます。Kubernetesクラスター。クラスターには、少なくとも8GBのRAMとSpinnakerで使用可能な4つのCPUコアが必要です(より重い使用の場合はさらに多く必要です)。+`の設定方法については、クラスターを作成するときに表示される[クラスターに接続]ステップの下に表示されます。Quickstart]を参照してください。Controllerおよびcert-manager。Ingressをセットアップする方法]。[DigitalOceanスペースとAPIを作成する方法]を参照してください。Aレコードを持つドメイン名。[DNSレコードの作成方法]を参照してAレコードを作成してください。このチュートリアルでは、Aレコードを「」、「」、「++」と呼びます。GitHubアカウント。GitHub組織に追加され、管理者権限と一般公開されています。アカウントは、組織内のチームのメンバーでもある必要があります。これは、ステップ5を完了するために必要です。手順1-HalyardでKubernetesアカウントを追加するこのセクションでは、Halyardを介してKubernetesアカウントをSpinnakerに追加します。アカウントは、Spinnakerの用語では、クラウドプロバイダーへのアクセスに使用する名前付きの資格情報です。+」イングレスを作成しました。このチュートリアルではこれらは必要ないので、削除できます。次のコマンドを実行して、イングレスを削除することから始めます。echo_ingress.yaml次に、2つのテストサービスを削除します。+`パラメーターが渡されたときに削除するファイルを受け入れます。次に、ローカルマシンから、ワークスペースとして機能するフォルダーを作成します。~/spinnaker-k8s次のコマンドを実行して、ワークスペースに移動します。~/spinnaker-k8sHalyardはSpinnakerの展開先をまだ知りません。次のコマンドでKubernetesプロバイダーを有効にします。enable次の出力が表示されます。kubernetesHalyardは、Kubernetesプロバイダーを有効にするために行ったすべての手順を記録し、アカウントがまだ定義されていないことを警告しました。_サービスアカウント_を作成します。サービスアカウントは、単一の名前空間にスコープされるアカウントの一種です。これはソフトウェアによって使用され、クラスター内のさまざまなタスクを実行できます。Control)は、Kubernetesクラスター内のリソースへのアクセスを規制する方法です。重要な構成がクラスターで不注意に変更されないように、アカウントのアクションの範囲を制限します。+」権限を付与して、クラスター全体を制御できるようにします。[RBACに関するKubernetesの公式ドキュメント]を参照してください。+`名前空間を作成します。spinnaker出力は以下のようになります。`++`という名前のサービスアカウントを作成します。+`名前空間にサービスアカウントを作成することを指定しました。出力は次のようになります。--serviceaccount=spinnaker:次の出力が表示されます。createdHalyardはローカルのkubectlを使用してクラスターにアクセスします。Spinnakerを展開する前に、新しく作成したサービスアカウントを使用するように設定する必要があります。Kubernetesアカウントは、ユーザー名とトークンを使用して認証します。サービスアカウントが作成されると、Kubernetesは新しいシークレットを作成し、アカウントトークンを設定します。「+」のトークンを取得するには、最初にシークレットの名前を取得する必要があります。+`という名前のコンソール変数に取得できます。」から「+」に関する情報を取得し、JSONパスを渡すことで、含まれる最初のシークレットの名前を取得します。+`という名前の変数に取得します。TOKEN`で利用可能になりました。次に、kubectlでサービスアカウントの認証情報を設定する必要があります。$TOKEN次の出力が表示されます。set.次に、次のコマンドを実行して、現在のコンテキストのユーザーを新しく作成された「++」に設定する必要があります。spinnaker-token-user現在のユーザーを「」に設定すると、kubectlは「」を使用するように設定されますが、Halyardはそれについて何も知りません。次を実行して、Kubernetesプロバイダーにアカウントを追加します。v2出力は次のようになります。spinnaker-account`という名前のKubernetesアカウントをHalyardに追加し、サービスアカウントとしてマークします。一般に、Spinnakerは、分散インストールまたはローカルインストールの2つの方法で展開できます。_Distributed_インストールは、このチュートリアルで完了しているもので、クラウドに展開しています。_Local_インストールは、Spinnakerがダウンロードされ、Halyardが実行されているマシンにインストールされることを意味します。+」としてマークする必要があります。+`を有効にする必要があります。次のコマンドを実行して、それらを有効にできます。+`を有効にして、Spinnakerが作成するオブジェクトに関するより多くのメタデータを保存できるようにしました。Halyardを介してSpinnakerにKubernetesアカウントを追加しました。Kubernetesプロバイダーを有効にし、RBACロールを構成し、現在のkubectl構成をSpinnakerに追加して、プロバイダーにアカウントを追加しました。次に、バックエンドストレージをセットアップします。手順2-スペースを基になるストレージとして構成するこのセクションでは、スペースをSpinnakerデプロイメントの基礎となるストレージとして構成します。SpinnakerはSpaceを使用して、その構成とパイプライン関連のデータを保存します。HalyardでS3ストレージを構成するには、次のコマンドを実行します。“をSpaceのエンドポイントに置き換えてください。+」で、「」はスペースの領域です。“をスペースの名前に置き換えることができます。+`フラグは、指定された設定をすぐに検証しないようHalyardに指示します。このコマンドを実行すると、Halyardはシークレットアクセスキーを要求します。入力して続行すると、次の出力が表示されます。+`ストレージを設定したので、次のコマンドを実行して、デプロイメントがこれをストレージとして使用することを確認します。s3出力は次のようになります。storage.Spinnakerのインスタンスが使用する基礎となるストレージとしてSpaceを設定しました。Controllerを使用してドメインで公開します。Ingressを使用してドメインのUIおよびAPIコンポーネントを公開します。ドメインURLを構成します。1つはSpinnakerのユーザーインターフェイス用で、もう1つはAPIコンポーネント用です。次に、目的のバージョンのSpinnakerを選択し、Halyardを使用して展開します。最後に、イングレスを作成し、Nginxコントローラーとして構成します。URLの構成値を編集し、目的のドメインに設定する必要があります。APIエンドポイントを目的のドメインに設定するには、次のコマンドを実行します。https://出力は以下のようになります。Success...SpinnakerにアクセスするドメインにUIエンドポイントを設定するには、次を実行します。https://出力は以下のようになります。settings.「」と「」をドメインに置き換えることを忘れないでください。Controllerの前提条件で作成したロードバランサーを指しているドメインです。SpinnakerのKubernetesアカウントを作成して保護し、Spaceを基盤となるストレージとして設定し、UIとAPIエンドポイントをドメインに設定しました。これで、使用可能なSpinnakerバージョンをリストできます。list出力には、使用可能なバージョンのリストが表示されます。1.17)インストールするバージョンを選択するには、次のコマンドを実行します。--version何らかのリグレッションが発生しない限り、常に最新バージョンを選択することをお勧めします。次の出力が表示されます。apply`.これで、Spinnakerの展開を完全に構成できました。applyこのコマンドが完了するまでに数分かかる場合があります。最終的な出力は次のようになります。Success...Halyardは、Spinnakerの各マイクロサービスの展開ステータスを表示しています。舞台裏では、kubectlを呼び出してインストールします。Kubernetesは、すべてのコンテナを起動するのに、特に初めての場合、平均で10分ほどかかります。次のコマンドを実行して、進行状況を監視できます。-wSpinnakerをKubernetesクラスターにデプロイしましたが、クラスターを超えてアクセスすることはできません。入力設定を「++」という名前のファイルに保存します。テキストエディターを使用して作成します。nano次の行を追加します。9000「」をAPIドメインに、「」をUIドメインに置き換えてください。`と呼ばれるイングレスを定義します。+`クラスター発行者が前提条件チュートリアルで定義されたTLS証明書を生成することを指定します。次に、TLSがUIおよびAPIドメインを保護することを指定します。サービス(SpinnakerのUIコンテナ)に誘導することでルーティングを設定します。ファイルを保存して閉じます。次を実行して、KubernetesにIngressを作成します。-f次の出力が表示されます。EncryptがTLS証明書をプロビジョニングするまで数分待ってから、ブラウザでUIドメイン「++」に移動します。Spinnakerのユーザーインターフェースが表示されます。[Spin​​nakerのホームページ]Spinnakerをクラスターに展開し、ドメインでUIおよびAPIコンポーネントを公開し、動作するかどうかをテストしました。+」アプリをデプロイします。手順4-アプリケーションの作成とパイプラインの実行このセクションでは、ドメインのSpinnakerへのアクセスを使用して、アプリケーションを作成します。+」アプリをデプロイします。これはhttps://hub.docker.com/r/paulbouwer/hello-kubernetes/[paulbouwer/hello-kubernetes]にあります。後でアプリにアクセスします。SpinnakerのUIを公開したドメインに移動します。右上隅の*アクション*を押し、*アプリケーションの作成*を選択します。*フォームが表示されます。+」と入力し、メールアドレスを入力して、*作成*を押します。ページが読み込まれたら、トップメニューの最初のタブをクリックして*パイプライン*に移動します。パイプラインがまだ定義されていないことがわかります。[Spin​​nakerで定義されたパイプラインはありません][新しいパイプラインの設定]を押すと、新しいフォームが開きます。+」を入力し、*作成*を押します。次のページで、ステージの追加*ボタンをクリックします。Deploy(Manifest)を選択します。これは、指定したKubernetesマニフェストの展開に使用されます。World」と入力します。*の下のテキストボックスに次の行を入力します。8080ロードバランサーを指すドメインで、「++」を忘れずに置き換えてください。+」を公開するIngressを定義します。画面の右下にある[変更を保存]を押します。右側で、作成したパイプラインを選択し、*手動実行の開始*リンクを押します。確認を求められたら、[実行]を押します。このパイプラインは完了するまでに少し時間がかかります。正常に終了すると、進行状況バーが完了します。[パイプラインを正常に実行しました]これで、構成で定義したドメインに移動できます。+」アプリが表示されます。World」アプリをデプロイし、アクセスしました。Organizations認証を有効にしてSpinnakerを保護します。Organizations認証を有効にします。OAuth認証を有効にすると、SpinnakerユーザーはGitHub経由でログインするように強制されるため、匿名アクセスが防止されます。Organizationsを介した承認は、組織内のユーザーのみにアクセスを制限します。GitHub組織にはhttps://help.github.com/en/articles/about-teams[Teams](メンバーのグループ名)を含めることができます。これを使用して、Spinnakerのリソースへのアクセスをさらに制限できます。OAuth認証を機能させるには、最初に承認コールバックURLを設定する必要があります。これは、承認後にユーザーがリダイレクトされる場所です。login」で終わるAPIドメインです。Spinnakerや他のサービスが推測するのを防ぐために、これを手動で指定する必要があります。これを構成するには、次のコマンドを実行します。https:///login次の出力が表示されます。method.GitHubでOAuth認証を設定するには、組織のOAuthアプリケーションを作成する必要があります。OAuthアプリ*を選択します。その後、右側の[新しいOAuthアプリ]ボタンをクリックします。*新しいOAuthアプリケーションの登録*フォームが表示されます。[GitHubでの新しいOAuthアプリの作成]名前として「+」を入力します。次に、*アプリケーションの登録*を押します。新しいOAuthアプリの設定ページにリダイレクトされます。*および*クライアントシークレット*の値に注意してください。次のコマンドで必要になります。OAuthアプリを作成したら、次のコマンドを実行して、OAuthアプリを使用するようSpinnakerを構成できます。“をGitHub設定ページに表示されている値に置き換えてください。出力は次のようになります。method.OAuthアプリを使用するようにSpinnakerを構成しました。enable出力は以下のようになります。OAuth認証を構成して有効にしました。これで、ユーザーはSpinnakerにアクセスするためにGitHub経由でのログインを強制されます。現時点では、GitHubアカウントを持っているすべてのユーザーがログインできますが、これは望みのものではありません。これを克服するには、目的の組織のメンバーへのアクセスを制限するようにSpinnakerを構成します。Halyardにはこれを設定するコマンドがまだないため、ローカルの設定ファイルを使用してこれを半手動で設定する必要があります。デプロイ中、Halyardはローカル構成ファイルを使用して、生成された構成をオーバーライドします。+`の下でカスタム設定を探します。`という名前のファイルはHalyardによって取得され、特定のサービスの設定をオーバーライドするために使用されます。+」と呼ばれ、Spinnaker全体のAPIゲートウェイとして機能します。+`という名前のファイルを作成します。~/.hal/default/profiles/gate-local.yml次の行を追加します。organization:`++`をGitHub組織の名前に置き換えます。ファイルを保存して閉じます。この少しの構成では、GitHub組織のメンバーのみがSpinnakerにアクセスできます。Teamsと統合します。これにより、アプリケーションなど、Spinnakerで作成されたリソースにアクセスするチームを指定できます。これを実現するには、組織の管理者アカウント用のGitHubパーソナルアクセストークンが必要です。ボタンを押してください。スコープを確認してください。*を押して、表示されたらそれを書き留めます。表示することはできません。Teamsの役割の承認を構成するには、次のコマンドを実行します。https://api.github.com生成した個人アクセストークンで「」を置き換え、「」を組織の名前で置き換えてください。出力は次のようになります。method.GitHubグループの設定を更新しました。次のコマンドを実行して、認証プロバイダーをGitHubに設定します。github出力は以下のようになります。roles.これらの設定を更新したら、次を実行して有効にします。enable次の出力が表示されます。authorizationすべての変更が完了したら、実行中のSpinnakerデプロイメントに変更を適用できます。これを行うには、次のコマンドを実行します。apply終了したら、Kubernetesが変更を伝播するのを待ちます。これにはかなり時間がかかる場合があります。次のコマンドを実行して進行状況を確認できます。UIドメインに移動します。GitHubにリダイレクトされ、まだログインしていない場合はログインするよう求められます。ログインしたアカウントが組織のメンバーである場合、Spinnakerにリダイレクトされてログインし直します。しないと、次のようなメッセージでアクセスが拒否されます。Teams統合の効果は、Spinnakerがそれらを_roles_に変換することです。これらのhttps://www.spinnaker.io/setup/security/authorization/#role-providers[roles]をSpinnakerで使用して、特定のチームのメンバーのアクセスに追加の制限を組み込むことができます。別のアプリケーションを追加しようとすると、そのアプリケーションのアクセス許可(読み取り専用レベルまたは読み取りと書き込みレベル)を組み合わせたアクセス許可も指定できるようになります。GitHubの認証と承認を設定しました。組織のメンバーへのアクセスを制限するようにSpinnakerを構成し、役割と権限について学習し、Spinnakerと統合する際のGitHubチームの場所を検討しました。Kubernetesクラスターに正常に構成およびデプロイしました。クラウドリソースを中央の場所からより簡単に管理および使用できるようになりました。トリガーを使用して、パイプラインを自動的に開始できます。新しいDockerイメージがレジストリに追加されたとき。[公式ドキュメント]をご覧ください。クラスターにプライベートDockerレジストリをデプロイしてイメージを保持する場合は、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-private-docker-registry-on-にアクセスしてください。Kubernetesで使用する方法]。