DEVELOPER BLOG

開発者ブログ

HOME > 開発者ブログ > Oracle CloudにTerraformでk8sクラスターを作成してみる - PrismScaler

Oracle CloudにTerraformでk8sクラスターを作成してみる - PrismScaler

1. はじめに

こんにちは!株式会社Definerのライターチームです!
今回は、Oracle CloudにTerraformでk8sクラスターを作成する方法について気になりますよね。
実際の画面や、資源を見ながら詳しく解説していきましょう。

2. 目的・ユースケース

この記事では、TerraformでOracle上にk8sを構築するという目的に向けて、TerraformやKubernetesという技術を活用します。
ITの現場で、Oracle上でIaCを使って、マイクロサービスを構築したいときに、参考になる情報やプラクティスをまとめています。

3. 前提

まずは前提として、以下用語のおさらいをします。
 
・k8sとは
k8sとは、Kubernetesの略称であり、コンテナのスケーリングや運用を管理するオープンソースのコンテナオーケストレーションツールです。元々は、Googleが開発したものです。
k8sによって、コンテナのデプロイプロセスの自動化や、dockerコンテナのホストのクラスタ化、コンテナのスケーリング・冗長化などを、よしなに実現可能となります。
 
・Oracle Cloudとは
オラクル社が提供しているパブリッククラウドのサービスです。IaaSからPaaS、SaaSまで、一通りのクラウドサービスをカバーしています。
また、クラウド環境をお客様のデータセンター内に設置するCloud@Customerというサービスも存在します。
loud@Customerを活用することで、お客様のネットワーク内にクラウド環境を構築することもできます。
 
・Container Engine for Kubernetesとは
オラクルクラウドが提供するk8sを使ったコンテナオーケストレーションのサービスです。
 
・Terraformとは
Terraformとは、HashiCorp社が提供するInfrastructure as Code(IaC)サービスです。
IaCとは、インフラの構築をコード化して管理する手法です。
Terraformは、GO言語で書かれているAWS SDKを使用しています。
Terraformの特徴として、AWS、Azure、GCPなど、マルチクラウドに対応していることが挙げられます。

4. TerraformでKubernetesクラスタを構築する

それでは早速、Oracle CloudにTerraformでKubernetesクラスタを構築していきます。
 
①Terraformファイルの準備
k8sを指定する以下のコードを使用します。
ファイル名はmain.tfとしました。
 
resource "oci_containerengine_cluster" "oke-cluster" {
    compartment_id = ${compartment id}
    kubernetes_version = "v1.21.5"
    name = "test-k8s-cluster"
    vcn_id = ${vcn id}
    options {
        kubernetes_network_config {
            pods_cidr = "172.XX.0.0/16"
            services_cidr = "172.XX.0.0/16"
        }
        service_lb_subnet_ids = ${subnet id}
    }  
}                
 
②ノードプールファイルの作成
続いて、k8sのサイズなどを指定するTerraformファイルを用意します。
以下の2行目「cluster_id = oci_containerengine_cluster.oke-cluster.id」で、先ほどのk8sクラスターと紐付けをしています。

③Terraformの実行
「Terraform init」コマンドで初期化し、「terraform plan」「terraform apply」でリソースを作成します

oracle cloud上にk8sが作成されていることが確認できました
resource "oci_containerengine_node_pool" "oke-node-pool" {
    cluster_id = oci_containerengine_cluster.oke-cluster.id
    compartment_id = ${compartment id}
    kubernetes_version = "v1.21.5"
    name = "pooltest"
    node_config_details{
        placement_configs{
            availability_domain = ${availabillty domain}
            subnet_id = ${subnet id}
        } 
        size = 1
    }
    node_shape = "VM.Standard2.1"
    node_source_details {
         image_id = "${image id}"
         source_type = "image"
    }
}                  

5. 引用・参考記事

6. 独自ソリューション「PrismScaler」について

PrismScalerは、開発・運用を要さずにたった3ステップで、AWSやAzure、GCPなどのマルチクラウド基盤構築を実現するWebサービスです。
エンジニアの大変な作業を肩代わり
・自動構築
・自動監視
・構成可視化
クラウド基盤に関わる作業を以上のように効率化します。
SRE/DevOpsエンジニアが行う大変な作業を肩代わりします。
高品質な汎用クラウド基盤の実現
・クラウド基盤構築/クラウド移行
・クラウドの保守運用・コスト最適化
など幅広い利用シーンを想定しています。IaaSやPaaSを適切に組み合わせた数百を超える高品質な汎用クラウド基盤を容易に実現できます。
興味を持たれた方には、無料で資料を提供しております。
お気軽にご相談ください。

7. お問合せ

株式会社Definerでは、
・ITの上流から下流まで一気通貫のワンストップソリューションをご提供。
・AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミット。
・少ないエンジニアで事業が成長する仕組みづくりの実現。
・エンジニアが喜ぶ、採用しやすい環境づくりの実現。
・高速なアジャイル開発環境の実現。
・自社プロダクトとしてPrismScalerを展開。
上記事業内容を進行しております。
※「開発者ブログ」では、エンジニアの入門編として有益な情報を無料公開しています。
ご相談やお問い合わせは「株式会社Definer」へ。

8. Definerに関して。

・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。