-
タグ
タグ
- セキュリティ
- 人材開発・教育
- システム開発
- アプリ開発
- モバイルアプリ
- DX
- AI
- サイバー攻撃
- サイバー犯罪
- 標的型攻撃
- 脆弱性
- 働き方改革
- 企業市民活動
- 攻撃者グループ
- JSOC
- JSOC INSIGHT
- サイバー救急センター
- サイバー救急センターレポート
- LAC Security Insight
- セキュリティ診断レポート
- サイバー・グリッド・ジャパン
- CYBER GRID JOURNAL
- CYBER GRID VIEW
- ラックセキュリティアカデミー
- すごうで
- ランサムウェア
- ゼロトラスト
- ASM
- EDR
- SASE
- デジタルアイデンティティ
- インシデントレスポンス
- 情シス向け
- 対談
- CIS Controls
- Tech Crawling
- クラウド
- クラウドインテグレーション
- データベース
- アジャイル開発
- DevSecOps
- OWASP
- CTF
- FalconNest
- セキュリティ診断
- IoT
- EC
- サプライチェーンリスク
- スレットインテリジェンス
- テレワーク
- リモートデスクトップ
- アーキテクト
- プラス・セキュリティ人材
- 障がい者採用
- 官民学・業界連携
- カスタマーストーリー
- 白浜シンポジウム
- CODE BLUE
- 情報モラル
- クラブ活動
- 初心者向け
- 趣味
- カルチャー
- 子育て、生活
- 広報・マーケティング
- コーポレート
- ライター紹介
- IR
昨今急速にクラウドの普及が進み、その中でクラウドをより効果的に活用するために「クラウドネイティブ」という考え方が定義されました。kubernetesやOpenShift等、クラウドネイティブを実現する様々なソフトウェアやサービスが出てきましたが、クラウドネイティブを実現するにはそれらのサービスをクラウド上で組み合わせることが必要です。
クラウドのお陰でインフラの構築は格段に楽になりましたが、手軽な分サービスの数が大幅に増え、構築や管理にかかる負荷が増大しています。クラウドネイティブなシステムを実現するには、クラウドのシステムを自動化することで、少ない労力でより確実性の高いシステムの構築を目指していく必要があります。
そこで、Infrastructure as Code(IaC)によるインフラの構築・管理を行うTerraformは有効な解決策となります。TerraformによるRed Hat OpenShift on IBM Cloudの構築を行うことでクラウドネイティブの第一歩を踏み出して頂きたいと考えて今回の記事を執筆しました。
それでは本題に入る前に、まずIBM Cloudと、OpenShiftについて簡単にご説明します。
IBM Cloudとは
IBM Cloudとは、IBMが提供するパブリッククラウドで、長年エンタープライズ分野で培ってきたIBMの技術やIBM製品の多くをクラウド環境でも利用できることが特徴です。たとえば、IBMのAIとして有名なWatsonや、今回構築するOpenShiftも、AWSに先駆けてIBM CloudでRed Hat OpenShift on IBM Cloudとして提供されました。
OpenShiftとは
クラウドネイティブではコンテナ化が前提になっており、Dockerによってコンテナの普及が進みました。Dockerだけでは多数のコンテナの管理が困難という課題がありましたが、kubernetesの登場でコンテナ管理の仕組みも整ってきました。
kubernetesはクラウドネイティブの中でも特に重要なソフトウェアに位置づけられており、現在も非常に速いスピードで進化を遂げています。kubernetes自体は非常に優れた製品なのですが、進化のスピードに伴うサポート期間の短期化やスキル習熟の難易度の上昇によって、導入を検討したものの断念するといった企業も出てきました。OpenShiftはサポートの長期対応やOpenShift独自の機能による管理のしやすさ、セキュリティも強化したkubernetesのエンタープライズ版と言えます。OpenShiftを利用することでクラウドネイティブにも取り組みやすくなりました。
TerraformによるRed Hat OpenShift on IBM Cloudの構築
それでは、早速本題に移りたいと思います。今回構築するリソースの構成図は以下の通りです。なお、構築の流れを把握することが目的なのでリソースをシンプルなシングル構成にして、単一のリージョンやゾーンに配置しています。実運用で使用する場合は、リソースの冗長化や、配置するリージョンやゾーンを検討する必要があります。
※ 注意事項:本記事に掲載しているtfファイルは内容が古くなっている場合があります。実際に構築を行う際は公式リファレンスを参照して最新の情報を取得して下さい。
Docs overview | IBM-Cloud/ibm | Terraform Registry
providerの設定
IBM Cloudに対してTerraformを実行するためにproviderの設定を行います。providerの設定は利用するクラウドごとに行う必要があります。今回はOpenShiftを東京リージョンに仮想プライベート・クラウド(VPC)第2世代(Gen2)で作成するために以下のprovider.tfを作成しました。
provider.tf
terraform { required_providers { ibm = { source = "IBM Cloud/ibm" version = "~> 1.12.0" } } } variable "IBM Cloud_api_key" {} provider "ibm" { IBM Cloud_api_key = var.IBM Cloud_api_key generation = 2 region = "jp-tok" }
リソースグループ用tfファイルの作成
IBM Cloudでは、リソースグループを利用することでアクセス権限の制御ができます。最初からdefaultリソースグループが存在していますが、権限分離の観点からdefaultリソースは使用せず、新たにリソースグループを作成して、今回作成するリソースを割り当てます。
rg.tf
resource "ibm_resource_group" "rg-lic" { name = "rg-lic" }
VPC用tfファイルの作成
今回は仮想プライベート・クラウド(VPC)第2世代(Gen2)上にOpenShiftを構築するので、VPCリソースを作成します。また、ゾーンごとに1つのサブネットが必要になるため、サブネットを作成します。パブリックゲートウェイを作成することで、パブリックなインターネットにアクセスできます。OpenShiftの構築に必須ではありませんが、今後インターネット上からOpenShift用アプリケーションをダウンロードするためにパブリックゲートウェイを作成します。インターネットにアクセスすることは便利である反面、さまざまな脅威にさらされるので十分に注意をして設定を行ってください。
vpc.tf
resource "ibm_is_vpc" "vpc-lic" { name = "vpc-lic" resource_group = ibm_resource_group.rg-lic.id } resource "ibm_is_subnet" "sub-lic" { name = "sub-lic" resource_group = ibm_resource_group.rg-lic.id vpc = ibm_is_vpc.vpc-lic.id zone = "jp-tok-1" ipv4_cidr_block = "10.xx.0.0/24" public_gateway = ibm_is_public_gateway.pgw-lic.id } resource "ibm_is_public_gateway" "pgw-lic" { name = "pgw-lic" resource_group = ibm_resource_group.rg-lic.id vpc = ibm_is_vpc.vpc-lic.id zone = "jp-tok-1" }
ICOS用tfファイルの作成
OpenShiftはコンテナイメージの格納先として内部レジストリを利用できます。Red Hat OpenShift on IBM Cloudでは内部レジストリ用のリソースとしてIBM Cloud Object Storage(ICOS)のインスタンスが必要になります。そのためにICOSインスタンスを作成します。
icos.tf
resource "ibm_resource_instance" "icos-ins-openshift-lic" { name = "icos-ins-openshift-lic" resource_group_id = ibm_resource_group.rg-lic.id service = "cloud-object-storage" plan = "standard" location = "global" }
OpenShift用tfファイルの作成
OpenShiftに必要な前提リソースのtfファイルの準備ができましたので、実際のOpenShift用のtfファイルを作成していきます。OpenShiftバージョンは2021年5月22日時点で最新の"4.6.23"を指定します。今回は構築の検証が目的なのでワーカノードの種類(flavor)や数(worker_count)はできるだけ低価格なものを選択していきます。
openshift.tf
resource "ibm_container_vpc_cluster" "openshift-lic" { name = "openshift-lic" resource_group_id = ibm_resource_group.rg-lic.id vpc_id = ibm_is_vpc.vpc-lic.id kube_version = "4.6.23_openshift" flavor = "bx2.4x16" worker_count = "2" cos_instance_crn = ibm_resource_instance.icos-ins-openshift-lic.id zones { subnet_id = ibm_is_subnet.sub-lic.id name = ibm_is_subnet.sub-lic.zone } }
OpenShiftの構築
OpenShift構築に必要な全てのtfファイルが作成できたので、実際にTerraformでOpenShiftを構築していきます。まず初めにTerraformの初期化を行います。
terraform init
問題がなければ以下の様な表示が出力されます。
Initializing the backend... Initializing provider plugins... - Reusing previous version of IBM Cloud/ibm from the dependency lock file - Using previously-installed IBM Cloud/ibm v1.12.0 Terraform has been successfully initialized!
次に作成したtfファイルから構築されるリソースを確認(dry-run)します。
terraform plan
以下の様な表示が出力されます。tfファイルに問題がある場合、ここでエラーとなるのでtfファイルの見直しを行います。terraform planが成功した場合でも必ず出力結果が想定通りであるかを確認して下さい。不必要なリソースが作成されていると、セキュリティ上の問題や不必要な課金が発生するので、ここでの事前確認が重要となります。
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # ibm_container_vpc_cluster.openshift-lic will be created + resource "ibm_container_vpc_cluster" "openshift-lic" { + albs = (known after apply) 省略 Plan: 6 to add, 0 to change, 0 to destroy.
事前確認に問題がなければ、実際にTerraformでリソース作成を行います。
terraform apply
再度作成するリソースが表示されるので確認を行い、問題がなければ"Enter a value: "に"yes"を入力して、Enterキーを押して下さい。実際にリソース作成が進んでいきます。Terraformがtfファイルに従いリソースを作成します。後は待っているだけでOpenShiftの構築が完了します。
used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # ibm_container_vpc_cluster.openshift-lic will be created + resource "ibm_container_vpc_cluster" "openshift-lic" { + albs = (known after apply) 省略 Plan: 6 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes 省略 ibm_resource_group.rg-lic: Creating... ibm_resource_group.rg-lic: Creation complete after 4s [id=xxxxxxxxxxxx] ibm_is_vpc.vpc-lic: Creating... 省略 Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
全てのリソースが問題なく作成されると"Apply complete!"が表示されます。
OpenShiftの確認
構築したOpenShiftを確認してみたいと思います。IBM Cloudにブラウザでアクセスし、左上のナビゲーションメニュー → OpenShift → クラスター → 作成したクラスターを選択することでOpenShiftが確認できます。
右上の「OpenShift Web コンソール」ボタンをクリックしてみましょう。
OpenShiftのWebコンソールが表示されました。問題なくOpenShiftが構築できました。
OpenShiftの削除
問題なくOpenShiftの構築が確認できたので、最後にTerraformによるOpenShiftの削除を行います。
terraform destroy
lic: Refreshing state... [id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] ibm_is_vpc.vpc-lic: Refreshing state... [id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] 省略 Plan: 0 to add, 0 to change, 6 to destroy. Do you really want to destroy all resources? Terraform will destroy all your managed infrastructure, as shown above. There is no undo. Only 'yes' will be accepted to confirm. Enter a value: yes 省略 ibm_resource_group.rg-lic: Destruction complete after 3s Destroy complete! Resources: 6 destroyed.
OpenShift削除後の確認
IBM Cloudの画面から確認してみましょう。OpenShiftが削除されたことが確認できました。
最後に
今回は、TerraformによるRed Hat OpenShift on IBM Cloudの構築から削除までをご覧頂きました。今回行ったOpenShiftの構築はIBM Cloud上の画面からGUIでも実施できます。GUIで構築すればtfファイルの作成も必要なく、画面の指示に従って容易に作成が可能です。
なぜTerraformで作成を行うのだろうかと疑問に持たれる方もいるかもしれません。IaCやTerraformのメリットは、作成するリソースを正確に管理できる点があります。今回作成したリソースをIBM Cloud上で確認しようとすると、複数個所のリソースを画面遷移しながら確認する必要が出てきます。tfファイルがあれば全てのリソースを一括で確認できますし、tfファイルをそのまま同僚や上司に共有することでレビューすることも可能です。
また、Terraformは今回行ったリソースの削除時にも有効です。クラウドはリソースに応じて料金が発生します。不要になったリソースは必ず削除する必要があります。OpenShiftを削除した際に、同時に作成したVPCやICOSの削除を忘れた場合には、使っていないリソースに対しても料金が発生してしまいます。Terraformを使っていれば、作成した全てのリソース削除が正確かつ容易に行えます。
今回はIBM Cloudを利用してTerraformによるOpenShift構築をご紹介しましたが、ラックはクラウドの種類を問わずTerraformを利用したクラウド構築・管理を行っています。Terraformによるクラウド構築・管理を行いたいというご要望がありましたら、ぜひラックにお問い合わせください。
タグ
- セキュリティ
- 人材開発・教育
- システム開発
- アプリ開発
- モバイルアプリ
- DX
- AI
- サイバー攻撃
- サイバー犯罪
- 標的型攻撃
- 脆弱性
- 働き方改革
- 企業市民活動
- 攻撃者グループ
- JSOC
- もっと見る +
- JSOC INSIGHT
- サイバー救急センター
- サイバー救急センターレポート
- LAC Security Insight
- セキュリティ診断レポート
- サイバー・グリッド・ジャパン
- CYBER GRID JOURNAL
- CYBER GRID VIEW
- ラックセキュリティアカデミー
- すごうで
- ランサムウェア
- ゼロトラスト
- ASM
- EDR
- SASE
- デジタルアイデンティティ
- インシデントレスポンス
- 情シス向け
- 対談
- CIS Controls
- Tech Crawling
- クラウド
- クラウドインテグレーション
- データベース
- アジャイル開発
- DevSecOps
- OWASP
- CTF
- FalconNest
- セキュリティ診断
- IoT
- EC
- サプライチェーンリスク
- スレットインテリジェンス
- テレワーク
- リモートデスクトップ
- アーキテクト
- プラス・セキュリティ人材
- 障がい者採用
- 官民学・業界連携
- カスタマーストーリー
- 白浜シンポジウム
- CODE BLUE
- 情報モラル
- クラブ活動
- 初心者向け
- 趣味
- カルチャー
- 子育て、生活
- 広報・マーケティング
- コーポレート
- ライター紹介
- IR