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」へ。

8. Definerに関して。

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