1. はじめに
こんにちは!株式会社Definerの阪本です!
今回は、Oracle CloudにTerraformでk8sクラスターを作成する方法についてご紹介したいと思います。
今回は、Oracle CloudにTerraformでk8sクラスターを作成する方法についてご紹介したいと思います。
2. 目的・ユースケース
この記事では、TerraformでOracle上にk8sを構築するという目的に向けて、TerraformやKubernetesという技術を活用します。
ITの現場で、Oracle上でIaCを使って、マイクロサービスを構築したいときに、参考になる情報やプラクティスをまとめています。
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など、マルチクラウドに対応していることが挙げられます。
・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としました。
①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」について
7. お問合せ
本記事では、入門編として有益な情報を無料公開しています。ご相談やお問い合わせは「株式会社Definer」へ。
8. Definerに関して。
・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。