はじめに

みなさん、こんにちは。
Oracle Cloud Infrastructure 検証チームです。

今回はOracle Cloud Infrastructure の機能である
OCI Kubernetes Engine(OKE)
を利用して、テスト用のコンテナを作成し、Webアクセスできる所まで検証していきます。

引用元:GLASSWALL Documentation

まず初めに機能の紹介を行っていきます♪

OCI Kubernetes Engineとは?

OCI Kubernetes Engineとは、Oracle Cloud Infrastructure(OCI)で提供されているサービスであり、Kubernetesを利用してコンテナ化されたアプリケーションを、
クラウド上で簡単にデプロイ管理スケーリングさせるための
マネージド・サービスです。

今回の検証では、本サービスを利用してクラスタを構築します。

因みに、以前はOracle Container Engine for Kubernetes
と呼ばれておりましたが、2024年8月23日に、
OCI Kubernetes Engineとして名称変更が発表されています。
名称変更の発表についてはこちら(Oracle公式サイト)

Kubernatesとは?

Kubernetes(クーバネティス)とは多数のコンテナを自動で管理・運用するためのオープンソースのソフトウェアです。

他にも「クバネティス」または「クーベネティス」とも呼ばれてるいるようです。
….別に伝わればなんて呼んでもいいと思うんですけどね..(小声)

コンテナとは?

コンテナとは、アプリケーションを動かすために必要なもの(コード、ライブラリなど)を
ひとまとめにパッケージングした「箱」のようなものです。
コンテナ(箱)を使うと、異なる環境でも同じようにアプリケーションを動かせる機能になります。

Podとは?

Podとは、1つまたは複数のコンテナのグループのようなものです。
ストレージやネットワークの共有リソースを持ち、コンテナの実行方法に関する仕様を持っています。

ざっくりとしたな例ではありますが、OCI Kubernetes Engineでは、このようなイメージ図で構成することが可能です。

 

環境構築

簡単ですが、本検証では以下の構成図として構築していきます。

クイック作成

  1. OCIコンソールからメニュー(三本線)を開いて、
    開発サービス」→「Kubernetesクラスタ(OKE)
    コンテナとアーティファクト」→「Kubernetesクラスタ(OKE)」へ移動します。
  2. クラスタの作成」をクリックします。
  3. クイック作成」を指定します
    送信」をクリックします。
  4. 名前、コンパートメント、Kubernetesバージョンを指定します。
    • 名前:ここではデフォルトで「cluster1」を指定します。
    • コンパートメント:クラスタを作成するコンパートメントを指定します。
    • Kubernetesバージョン:最新状態「v1.33.1」として指定します。(※2025年8月時点)
  5. Kubernetes APIエンドポイント、ノードタイプ、Kubernetesワーカー・ノードを指定します。
    • Kubernetes APIエンドポイント:「パブリック・エンドポイント」を指定します。
    • ノードタイプ:「管理対象」を指定します。
    • Kubernetesワーカー・ノード :「パブリック・ワーカー」を指定します。
  6. シェイプとイメージを指定します。
    • ポッドシェイプ:デフォルトで「Pod.Standard.E4.Flex」を指定します。
    • OCPU:デフォルトで指定します。
    • イメージ:デフォルトで設定します。
    • ノード数:デフォルトで「3」を指定します。
    • 」をクリックしますと確認画面が表示されます。
  7. クラスタの作成を行います。
    • 基本的なクラスタの確認:「基本的なクラスタを作成」はデフォルトでチェックを外した状態にします。
    • 確認画面の記載内容に問題なければ「クラスタの作成」をクリックします。
  8. 全て「完了」になるのを確認し、「閉じる」をクリックします。
  9. クラスタの詳細画面に遷移されるので、作成中から「アクティブ」に表示されるまで待ちます。
  10. クラスタ詳細」→「リソース」→「作業リクエスト」へ移動し、
    操作タイプ」のステータスの状態がが「成功」と表示されるまで待ちます。
  11. 正常にKubernetesクラスタが作成されると、以下にて新規にリソース
    が作成されます。
    • 仮想クラウド・ネットワーク(VCN)
    • インターネット・ゲートウェイ(IG)
    • NATゲートウェイ(NAT)
    • サービス・ゲートウェイ(SGW)
    • Kubernetesワーカー・ノードおよびノード・プール

    一度にこんなにも作成されるんですね!

Cloud Shellへの接続

    1. クラスタ詳細」→「リソース」→「クイックスタート」へ移動します。
    2. クイック・スタート: サンプル・アプリケーションのデプロイ」が表示されます。
      ②バージョンの確認」と「③アプリケーションのデプロイ」のコマンドをコピーしてメモしたら
      「①自分のクラスタへのアクセス」の「クラスタへのアクセス」をクリックします。
    3. 「自分のクラスタへのアクセス」画面が表示されます。
      Cloud Shellアクセス」を指定し、「Cloud Shellの起動」をクリックします。
    4. プロンプトが表示されます。

クラスタ構築

  1. クラスタのkubeconfigにVCNネイティブのパブリック・エンドポイントからアクセスさせる必要があります。
    ②クラスタのkubeconfigにVCNネイティブのパブリック・エンドポイントから~」から始まる項目でメモしたコマンドを貼り付けてコマンドを実行します。
  2. 新規にKubeconfigファイルが作成されているのを確認したら成功です。
  3. ②バージョンの確認」でメモしたコマンドを実行し、バージョンを確認します。
    $ kubectl version
    

  4. ノードが3つ作成されているのを確認します。
    $ kubectl get nodes

テスト用コンテナの作成

    1. ③アプリケーションのデプロイ」でメモしたコマンドを実行し、サンプルのhello worldアプリケーションを新規に作成します。
      $ kubectl create -f https://k8s.io/examples/application/deployment.yaml

    2. 以下のコマンドを実行しますと、新規にロードバランサー作成されます。
      service/nginx-service exposed」というメッセージが表示され、外部に公開するようになります。
      $ kubectl expose deployment nginx-deployment --type=LoadBalancer --port=80 --target-port=80 --name=nginx-service

    3. Apacheサービス(nginx)の詳細情報を表示させます。
      EXTERNAL-IPにIPアドレスが表示されてますので、ブラウザを開いてIPアドレスを入力します。
      ※EXTERNAL-IPが表示されない場合は数十秒待った後にコマンドを実行します。
      $ kubectl get service nginx-service

    4. ブラウザを起動して、「External-IP」に記載されているIPアドレスを入力してEnterを実行します。
      ようこそ画面が表示されます。
    5. Cloud Shellに戻り、Podが正常に稼働されているのを確認します。
      $ kubectl get pods

    6. Pod名を利用してlog情報を確認することができます。
      $ kubectl logs <Pod名>

    7. 以下のコマンドを実行して、HTML形式で記載されている内容を貼り付けます。
      $ vi /home/<ユーザ名>/index.html

      ※<ユーザ名>は自身のユーザディレクトリをご指定ください。

      <!DOCTYPE html>
      <html>
      <head>
      <title>My First K8s App!</title>
      <meta charset="UTF-8">
      </head>
      <body>
      <h1>こんにちは、DBひとりでできるもんの検証チームです!</h1>
      <p>OCI Kubernetes Engineを使っています。</p>
      </body>
      </html>
    8. 新規に作成したindex.htmlファイルディレクトリへ移動し、ConfigMap(コンテナ外から設定情報を渡すための、付箋のようなもの)を作成します。
      $ kubectl create configmap nginx-index-html --from-file=index.html

    9. 以下のコマンドを実行し、正常に作成されたかを確認します。
      $ kubectl get configmap nginx-index-html

    10. index.htmlと同じ場所で以下コマンドを実行し、新規に設定ファイルを作成します。
      $ vi /home/<ユーザ名>/nginx-deployment.yaml
    11. 内容は以下のように記載します。
      ※記載時にはインデント(段落)にくれぐれもご注意ください
    12. 以下のコマンドを実行して設定ファイルを適用します。
      kubectl applyの初回実行時のみ警告メッセージ(Warning)が表示されますが、メッセージ内容には問題はなく、設定ファイルは正常に適用されます。
      $ kubectl apply -f nginx-deployment.yaml

    13. ブラウザへ戻り、先程表示されてたようこそ画面を再度更新すると、このように検証用サイトを作成することができます。

さいごに

今回検証としてクラスターをクイック作成してますが、有償のリソースが含まれてますので、
長時間利用されない場合は、作成された諸々のリソースをしっかり削除しておきましょう!

クイック作成したクラスタの設定のみを削除しても、以下のようなリソースは残留されていますので不要な場合は削除してください。

  • 仮想クラウドネットワーク
  • コンピュートインスタンス
  • ブートボリューム
  • ロードバランサー(作成した場合)

当社ではOracleデータベースOracle Cloudサービスを多数展開しております。
何かお困りのことがありましたら、お気軽にお問い合わせください。

投稿者プロフィール

技術チーム
技術チーム
DBひとりでできるもんを盛り上げるべく、技術チームが立ち上がり早8年。ひとりでできるもんと言いつつ、技術者が読んでプッとなるような、極めてピンポイントでマニアックな技術ネタを執筆しています!
最新技術情報や資格情報をチェックしたいアナタ!毎日遊びに来てください。きっとお役に立てます。