[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 インスタンスにアプリケーションをデプロイすることができます。
- Spinnakerの設定管理クライアントであるHalyardをローカルにインストールします。HalyardはDebian、Ubuntu、macOS、またはDocker上で動作します。
- Halyardを実行しているマシンにkubectlをインストールします。
- これらの手順を使用して、Halyardを使用してKubernetesプロバイダのコンテナエンジンを有効にします。
ドライバがKubernetes Clusterに接続するためには、サービスアカウントを作成してkubeconfigファイルに登録する必要があります。 - Spinnakerのランタイムメタデータは、Oracle Cloud Object Storeバケットに永続化されます。
Identity and Access Management (IAM) ユーザーのアカウントを作成し、Spinnaker で Oracle プロバイダーを有効にします。 - Object StorageにSpinnakerバケットを作成し、Halyardに登録し、ストレージタイプをoracleに設定します。
- 分散インストールの方法でOracle Container Engine for KubernetesにSpinnakerをインストールします。
先に登録したContainer Engine for Kubernetesプロバイダーのアカウント名を使用します。
hal config deploy edit --type distributed --account-name $K8S-ACCOUNT - Spinnakerをデプロイします。デプロイしたら、以下のコードを使ってSpinnakerに接続します。
hal deploy connect - ポートフォワードを設定したら、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では、そのプロセスの概要を説明しています。
- Spinnakerでアプリケーションを定義し、ターゲットクラスタのKubernetesプロバイダを指定します。
ターゲットクラスタは、Spinnakerを実行しているクラスタとは異なる場合があります。
Halyardの設定でクラスタごとに複数のKubernetesプロバイダを有効にすることができます。 - ロードバランサータイプのサービスYAMLを指定してロードバランサーを作成します。
- パイプラインを定義し、"Deploy (Manifest)" タイプのステージを追加して、アプリケーションを Container Engine for Kubernetes にデプロイします。
マニフェストは、インラインテキストまたはソースリポジトリからの成果物として定義することができます。
Kubernetes descriptorのアーティファクトを構成する方法については、このドキュメントを参照してください。 - サービス ロードバランサーのイングレス IP アドレスを介してアプリケーションにアクセスします。
Oracle Cloud Infrastructure Compute上にアプリケーションをデプロイ
Spinnaker Codelabでは、Oracle Cloud Infrastructure Computeインスタンスのグループでアプリケーションを実行するプロセスの概要を説明しています。
- Spinnakerでアプリケーションを定義し、プロバイダに「oracle」を指定します。
- Oracle Cloud Consoleからロードバランサーが使用するVCNを設定します。
- Spinnaker UIからロードバランサーを作成します。Oracle CloudドライバがOracle Cloud上でロードバランサーをプロビジョニングします。
LoadBalancer Create ダイアログには現在、良性のエラーが表示されていますが、これは無視できます。
これについては、この GitHub issue に記載されています。これは修正されており、Spinnaker の次のリリースで利用できるようになっています。
スタックに "test "のような値を指定し、"lb "のような詳細を指定しないと、ロードバランサーの作成に失敗します。 - Spinnaker でカスタム OS イメージを回転させ、それを Compute インスタンスにデプロイするためのパイプラインを定義します。
- ベースのOSイメージに特定のパッケージをインストールするベークステージを追加します。
Halyardでベークステージを設定する。Spinnakerのベイク機能はPackerをベースにしています。このデプロイメントでは、Packer用のOracle Cloud builderを使用しています。
独自のカスタムイメージを作成するか、オラクルがベースとして提供するイメージを使用することができます。Oracle が提供する各イメージには、それぞれ独自の OCID があります。
前の手順で作成したベイクドイメージを使用して、サーバーグループまたはコンピュートインスタンスのクラスタをプロビジョニングするデプロイステージを追加します。
サーバーは、先に定義したロードバランサーのバックエンドとして配線されている。 - 古いバージョンを実行しているサーバの前のセットを削除します。
まとめ
皆様からのフィードバックをお待ちしています。
Slackで接続するか、毎月のミーティングに参加して、Oracle Cloud SIGチームと交流してください。
コメント
コメントを投稿