[OCI]Oracle Cloud Infrastructure上でのアプリケーションデプロイのためのSpinnaker (2020/10/27)

Oracle Cloud Infrastructure上でのアプリケーションデプロイのためのSpinnaker (2020/10/27)

https://blogs.oracle.com/cloud-infrastructure/spinnaker-for-application-deployment-on-oracle-cloud-infrastructure
投稿者:Sandeep Shrivastava | Consulting Member of Technical Staff
Spinnakerは、オープンソース、マルチクラウド、クラウドネイティブの継続的デリバリー・プラットフォームです。
完全にサポートされており、Oracle Cloud Infrastructure(OCI)と統合されています。
OCIとSpinnakerを統合することで、顧客は継続的インテグレーション-継続的デリバリ(CICD)のベストプラクティスに従って、
自動化された方法でOCI上にアプリケーションを繰り返しデプロイすることができます。
顧客はSpinnakerを使用して、Oracle Cloud Infrastructure Container Engine for Kubernetesクラスタ
およびComputeインスタンス上で実行されているアプリケーションをデプロイすることができます。

最近、私たちはSpinnaker on OCIをサポートするためのspecial interest group(SIG)を結成しました。
このSIGは、開発者コミュニティと協力して、プラットフォームへのアプリケーションの自動デプロイを可能にし、Oracle Cloudドライバを改善するために活動しています。

Oracle CloudドライバとSpinnakerを使用すると、リリース・パイプラインを定義して、Oracle Cloud上にアプリケーションを自動でデプロイすることができます。
デプロイを自動化することで、アプリケーションの再現性が向上し、より迅速なデリバリーが可能になります。

Container Engine for KubernetesにSpinnakerをデプロイ


SpinnakerはKubernetes上で動作し、Container Engine for Kubernetes上にデプロイすることができます。
その後、Spinnaker を設定して自動リリースパイプラインを定義し、
OCI 上の任意の他のターゲット Kubernetes クラスタまたは Compute インスタンスにアプリケーションをデプロイすることができます。


  1. Spinnakerの設定管理クライアントであるHalyardをローカルにインストールします。HalyardはDebian、Ubuntu、macOS、またはDocker上で動作します。
  2. Halyardを実行しているマシンにkubectlをインストールします。
  3. これらの手順を使用して、Halyardを使用してKubernetesプロバイダのコンテナエンジンを有効にします。
    ドライバがKubernetes Clusterに接続するためには、サービスアカウントを作成してkubeconfigファイルに登録する必要があります。
  4. Spinnakerのランタイムメタデータは、Oracle Cloud Object Storeバケットに永続化されます。
    Identity and Access Management (IAM) ユーザーのアカウントを作成し、Spinnaker で Oracle プロバイダーを有効にします。
  5. Object StorageにSpinnakerバケットを作成し、Halyardに登録し、ストレージタイプをoracleに設定します。
  6. 分散インストールの方法でOracle Container Engine for KubernetesにSpinnakerをインストールします。
    先に登録したContainer Engine for Kubernetesプロバイダーのアカウント名を使用します。

    hal config deploy edit --type distributed --account-name $K8S-ACCOUNT

  7. Spinnakerをデプロイします。デプロイしたら、以下のコードを使ってSpinnakerに接続します。

    hal deploy connect

  8. ポートフォワードを設定したら、http://localhost:9000 から Spinnaker UI にアクセスします。

Oracle Cloud Container Engine for Kubernetes上にアプリケーションをデプロイ


KubernetesアプリケーションをContainer Engine for Kubernetes上で実行するには、Dockerイメージとしてパッケージ化し、レジストリに公開する必要があります。
OCIはDocker Registryサービスもホストしているので、CIツールを構成して、テスト済みで検証済みのイメージをOracle Cloud Registryに公開し、
Spinnakerを使用してアプリケーションをContainer Engine for Kubernetesにデプロイすることができます。

Spinnaker Codelabでは、そのプロセスの概要を説明しています。

  1. Spinnakerでアプリケーションを定義し、ターゲットクラスタのKubernetesプロバイダを指定します。
    ターゲットクラスタは、Spinnakerを実行しているクラスタとは異なる場合があります。
    Halyardの設定でクラスタごとに複数のKubernetesプロバイダを有効にすることができます。
  2. ロードバランサータイプのサービスYAMLを指定してロードバランサーを作成します。
  3. パイプラインを定義し、"Deploy (Manifest)" タイプのステージを追加して、アプリケーションを Container Engine for Kubernetes にデプロイします。
    マニフェストは、インラインテキストまたはソースリポジトリからの成果物として定義することができます。
    Kubernetes descriptorのアーティファクトを構成する方法については、このドキュメントを参照してください。
  4. サービス ロードバランサーのイングレス IP アドレスを介してアプリケーションにアクセスします。

Oracle Cloud Infrastructure Compute上にアプリケーションをデプロイ


Spinnaker Codelabでは、Oracle Cloud Infrastructure Computeインスタンスのグループでアプリケーションを実行するプロセスの概要を説明しています。

  1. Spinnakerでアプリケーションを定義し、プロバイダに「oracle」を指定します。
  2. Oracle Cloud Consoleからロードバランサーが使用するVCNを設定します。
  3. Spinnaker UIからロードバランサーを作成します。Oracle CloudドライバがOracle Cloud上でロードバランサーをプロビジョニングします。
    LoadBalancer Create ダイアログには現在、良性のエラーが表示されていますが、これは無視できます。
    これについては、この GitHub issue に記載されています。これは修正されており、Spinnaker の次のリリースで利用できるようになっています。
    スタックに "test "のような値を指定し、"lb "のような詳細を指定しないと、ロードバランサーの作成に失敗します。
  4. Spinnaker でカスタム OS イメージを回転させ、それを Compute インスタンスにデプロイするためのパイプラインを定義します。
  5. ベースのOSイメージに特定のパッケージをインストールするベークステージを追加します。
    Halyardでベークステージを設定する。Spinnakerのベイク機能はPackerをベースにしています。このデプロイメントでは、Packer用のOracle Cloud builderを使用しています。
    独自のカスタムイメージを作成するか、オラクルがベースとして提供するイメージを使用することができます。Oracle が提供する各イメージには、それぞれ独自の OCID があります。
    前の手順で作成したベイクドイメージを使用して、サーバーグループまたはコンピュートインスタンスのクラスタをプロビジョニングするデプロイステージを追加します。
    サーバーは、先に定義したロードバランサーのバックエンドとして配線されている。
  6. 古いバージョンを実行しているサーバの前のセットを削除します。

まとめ


皆様からのフィードバックをお待ちしています。

Slackで接続するか、毎月のミーティングに参加して、Oracle Cloud SIGチームと交流してください。

コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle Cloud Infrastructure Secure Desktopsを発表: デスクトップ仮想化のためのOracleのクラウドネイティブ・サービス (2023/06/28)

新しいOracle Container Engine for Kubernetesの機能強化により、大規模なKubernetesがさらに簡単になりました (2023/03/20)