OCIでOKEインスタンスを設定

Oracle Cloud Infrastructure Container Engine for Kubernetesは、クラウド上にコンテナ化されたアプリケーションをデプロイできるフルマネージド、スケーラブル、高可用性なサービスです。開発チームがクラウドネイティブアプリケーションを確実に構築、デプロイ、管理したい場合は、Oracle Container Engine for Kubernetes (OKEと略します)を使用します。ユーザがアプリケーションに必要なコンピュートリソースを指定すると、Oracle Container Engine for Kubernetesが既存のOCIのテナント上に必要なリソースをプロビジョニングします。

はじめに

このチュートリアルでは、有効なOracle Cloud Infrastructure(OCIと略します)のアカウントが必要です。

Oracle Container Engine for Kubernetes (OKE) を構築するために以下の手順を完了させる必要があります。

  • ネットワークの作成(VCN、サブネット、セキュリティリストなど)
  • クラスタの作成
  • ノードプールの作成

このチュートリアルでは、必要なリソースを自動的に作成するクイック作成機能を利用して非常に簡単に3つのKubernetesノードを作成する手順をご紹介します。 高可用性を保証するために、全てのノードはそれぞれ異なる可用性ドメイン(Availability Domains)上にプロビジョニングされます。

OKEに関する詳細および手動でのクラスタ構築については、以下をご確認ください。

注意事項: コンパートメントについて

Oracle Cloudにはコンパートメントという考え方があります。
コンパートメントは、クラウド・リソース(インスタンス、仮想クラウド・ネットワーク、ブロック・ボリュームなど)を分類整理する論理的な区画で、この単位でアクセス制御を行うことができます。また、OCIコンソール上に表示されるリソースのフィルタとしても機能します。
今回は、ルートコンパートメントと呼ばれるすべてのリソースを保持するコンパートメントを利用するので、特に意識する必要がありません。

注意事項: ポリシーについて

Oracle Cloudでは、各ユーザーから各サービスへのアクセスおよび各サービスから他サービスへアクセスを「ポリシー」を利用して制御します。ポリシーは、各リソースに誰がアクセスできるかを指定することができます。

OCIコンソールの表示

Oracle Cloud Infrastructureへのサインインを行います。Oracle Cloud Sign inのリンクからサインインしてください。 ご自身の端末でハンズオンを実施する場合は、登録手順の中で受信したメール内のクラウドサービスにアクセスするリンクを利用してサインインを行うこともできます。
アカウント登録時に登録したクラウドアカウント名を入力し、NEXTをクリックしてください。

alt text

アカウント登録時に登録した電子メールアドレスとパスワードを入力してください。
サイン・インをクリックします。

alt text

サインインが完了すると、以下のようにOCIコンソール画面が表示されます。

alt text

OCIコンソール画面が表示されます。

ポリシーの作成

ポリシーの作成を行います。
ポリシーは、コンピュートをはじめとしたテナント内のリソース作成を許可する役割があります。この手順で作成するポリシーは、ユーザのテナント内のグループがOKEのAPIを利用して何を実行できるかを制御できます。

さらに、あるグループがOKEにおける無関係なリソースにアクセスするのを規制したい場合についてもポリシーの追加によって実現することができます。

OCIコンソール画面左上のハンバーガーメニューを開き、アイデンティティポリシーをクリックします。

alt text

左側にある"ルート"コンパートメントを選択すると、表示されているコンパートメントのポリシー一覧が確認できます。もし、"ルート"コンパートメント以外のコンパートメントに対してポリシーを追加したい場合は、左下のコンパートメントリストの中から適切なコンパートメントを選択します。ポリシーの作成をクリックします。

alt text

以下のように入力します。

  • 名前:ポリシー名を指定します。テナント内の全てのポリシーでユニークでなければなりません。後からの変更はできません。今回のハンズオンでは、Policy_for_OKEと入力してください。
  • 説明:ポリシーの分かりやすい説明を入力します。今回のハンズオンでは、allow service OKE to manage all-resources in tenancyと入力してください。
  • ポリシーのバージョニング:ポリシーを最新の状態に保持を選択します。これは、将来的なサービスの動詞やリソースの定義に関する変更に合わせてポリシーが最新の状態に保たれることを保証します。
  • ポリシー・ステートメント:ポリシーのステートメントを入力します。allow service OKE to manage all-resources in tenancyと入力してください。
  • タグ:何も入力しないでください。

作成をクリックします。

alt text

OKE (Oracle Container Engine for Kubernetes)クラスタの作成

OKEクラスタの作成を行います。
今回はクイック作成機能を使用してOKEクラスタを作成します。
クイック作成機能は、必須となるネットワークとクラスタの作成をデフォルトの設定で構築することができる機能です。このアプローチは新規でクラスタを作成するための最速の方法です。全ての設定がデフォルトで問題なければ、数回のクリックだけで新規でクラスタを作成できます。クラスタが利用するネットワーク、ノードプールおよび2つのワーカーノードが自動的に作成されます。

OCIコンソール画面左上のハンバーガーメニューを開き、開発者サービス=>コンテナ・クラスタ(OKE)をクリックします。

alt text

クラスタ一覧のページで、クラスタの作成をクリックします。

alt text

以下の設定を行います。

  • 名前:クラスタの名前を入力します。例えば、デフォルトではcluster1という名前になります。今回のハンズオンではそのままにします。
  • KUBERNETESバージョン:マスターノードおよびワーカーノードのKubernetesのバージョンを指定します。最新バージョンを選択してください。
  • デフォルトの設定で、ネットワークおよび新規のクラスタを作成するためにクイック作成を選択してください。
  • 仮想クラウドネットワーク:クラスタの作成画面内の仮想クラウド・ネットワークの作成では、VCNと呼ばれるネットワーク、ロードバランサーサブネット、2つのワーカーノードが利用するサブネットがデフォルトで作成されることが確認できます。 今回のハンズオンでは、プライベートで作成します。
  • ノードプールの作成:作成される最初のノードプールの固定プロパティを確認できます。
    • ノードプールの名前(pool1で固定)
    • 作成されるノードプールの名前。(新規で作成されるネットワークと同じコンパートメントで固定)
    • ノードプール内のそれぞれのワーカーノードにおけるKubernetesバージョン(Kubernetesバージョンで選択したバージョンで固定)
      • ノードプール内のそれぞれのワーカーノードのイメージ

ノード・プールの作成では、ユーザが変更可能な設定もいくつか含まれます。

  • シェイプ: ノードプール内のそれぞれのワーカーノードのシェイプを指定します。シェイプは、それぞれのノードに割り当てられるメモリサイズとCPU数で決定されます。リスト内には、ユーザのテナントで利用可能、かつOracle Container Engine for Kubernetesがサポートするシェイプのみが表示されます。今回のハンズオンでは、VM.Standard.E2.1を選択してください。
  • ノードの数: ノードプール内のそれぞれのサブネットに作成するワーカーノードの数です。 今回のハンズオンでは、2を入力してください。
  • SSH公開キー: 空欄のままにしてください。
  • KUBERNETESダッシュボード有効: チェックをつけたままにしてください。
  • Tiller(Helm)有効: チェックをつけたままにしてください。

作成をクリックしてください。

alt text alt text

Closeをクリックし、コンソールに戻ってください。

Kubernetes設定ファイルをダウンロードするためのOCI CLIの準備

クラスタの作成ができたら、Kubernetes設定ファイル(通常はkubeconfigとなります)をダウンロードします。Kubernetes設定ファイルをダウンロードするためには、OCI API署名キーを追加し、ワークステーション(Virtualbox環境)でOCI CLIを構成する必要があります。

OCI CLIの設定

CLIを利用する前に、Oracle Cloud Infrastructureを利用するための認証情報を含んだ設定ファイルを作成する必要があります。設定ファイルの作成には、oci setup configコマンドを使用します。このコマンドは、設定ファイルとAPI公開鍵/秘密鍵のために必要な情報を要求します。これにより、セットアップダイアログは、APIキーと設定ファイルを作成します。

CLIのセットアップの前にOCIコンソールから必要となる情報を用意します。

  • User OCID
  • Tenancy OCID
  • Region

OCIコンソールの右上の人型マークをクリックし、ユーザ名をクリックします。ユーザ情報ページにあるuser OCIDを確認し、コピーをクリックします。クリップボードにコピーされた情報をテキストエディタなどに保持しておきます。

alt text alt text

同じように、OCIコンソールの右上の人型マークをクリックし、テナンシ名をクリックします。テナンシ情報ページにあるtenancy OCIDを確認し、コピーをクリックします。クリップボードにコピーされた情報をテキストエディタなどに保持しておきます。

alt text alt text

CLIセットアップ中についてもコンソールを開いたままにしてください。上記で用意したUser OCIDとTenancy OCIDは、テキストエディタからコピーして使用します。
CLIセットアップ時にデフォルト値(角括弧内の値)でも問題ない場合は、そのままEnterを押してください。

Note

OCI CLIについての詳細はdocumentationをご確認ください。

CLIをセットアップするためにoci setup configコマンドを実行してください。

[opc@oke-client .oci]$ oci setup config
    This command provides a walkthrough of creating a valid CLI config file.

    The following links explain where to find the information required by this
    script:

    User OCID and Tenancy OCID:

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other

    Region:

        https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm

    General config documentation:

        https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm


Enter a location for your config [/home/opc/.oci/config]:

設定ファイルの場所についてはデフォルト値を利用するので、そのままEnterを押してください。User OCIDとTenancy OCIDを入力してください。

Enter a user OCID: <YOUR_USER_OCID>
Enter a tenancy OCID: <YOUR_TENANCY_OCID>

利用しているリージョンを入力してください。リージョンは、OCIコンソールの右上で確認できます。何も入力しない場合は、eu-frankfurt-1になります。

Enter a region (e.g. ap-mumbai-1, ap-seoul-1, ap-sydney-1, ap-tokyo-1, ca-toronto-1, eu-frankfurt-1, eu-zurich-1, sa-saopaulo-1, uk-london-1, us-ashburn-1, us-gov-ashburn-1, us-gov-chicago-1, us-gov-phoenix-1, us-langley-1, us-luke-1, us-phoenix-1):  <YOUR_REGION>

API署名キーを作成します。デフォルト値を利用するので、そのままEnterを押してください。秘密鍵のpassphraseは入力しないでください。

Do you want to generate a new RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]: Y
Enter a directory for your keys to be created [/home/opc/.oci]: 
Enter a name for your key [oci_api_key]: 
Public key written to: /home/opc/.oci/oci_api_key_public.pem
Enter a passphrase for your private key (empty for no passphrase): 
Private key written to: /home/opc/.oci/oci_api_key.pem
Fingerprint: 72:0c:c4:6f:e3:c9:32:04:cc:55:12:ca:f9:17:07:52
Config written to /home/opc/.oci/config


    If you haven't already uploaded your public key through the console,
    follow the instructions on the page linked below in the section 'How to
    upload the public key':

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2
API署名キーペアの公開鍵のアップロード

OCI CLIセットアップの最後の手順は、先ほど作成した公開鍵のアップロードになります。公開鍵は、(デフォルトから変更していなければ)OCI CLIセットアップ時に/home/oracle/.oci/ディレクトリのoci_api_key_public.pemという名前で作成されています。好みの方法で、公開鍵の内容をクリックボードにコピーしてください。
OCIコンソールの右上の人型マークをクリックし、ユーザ情報をクリックします。公開キーの追加をクリックします。

alt text alt text

先ほどコピーしたoci_api_key_public.pemの内容を公開キーテキストエリアに張り付け、追加をクリックします。

alt text

公開鍵がアップロードされ、そのフィンガープリントがリスト上に表示されます。

kubectlの設定

Note

kubectlをインストールする必要がある場合は、documentationを参照してください。

CLIセットアップは以上で完了です。
続いてkubectlの設定を行うために開発者サービス=>コンテナ・クラスタ(OKE)をクリックします。
作成したクラスタを選択し、クラスタの詳細ページに遷移します。

alt text

Access Kubenetes Dashboardをクリックし、kubeconfigへのアクセスをクリックします。

alt text

Kubernetes設定ファイルを作成するためのCLIコマンドを含んだダイアログポップアップが表示されます。

alt text

Kubernetes設定ファイルを作成するためのCLIコマンド(上の画像の赤枠部分)をコピーし、実行します。以下に例を示します。

$ mkdir -p $HOME/.kube
$ oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.eu-frankfurt-1.aaaaaaaaaezwenlfgm4gkmzxha2tamtcgjqwmoldmu3tcnlfgc2tcyzzmrqw --file $HOME/.kube/config --region eu-frankfurt-1

Note

kubectlはデフォルトで$HOME/.kube/configで設定ファイルを読み込もうとします。異なるディレクトリでKubernetes設定ファイルを設定したい場合は、環境変数KUBECOINFIGを設定することを忘れないでください。
以下に例を示します。

export KUBECONFIG=another_folder_path/kubernetes_config_file_name

kubectlが動作することを確認しましょう。例として、今回はget nodeコマンドを使用します。

$ kubectl get node
NAME            STATUS    ROLES     AGE       VERSION
130.61.58.206   Ready     node      16m       v1.11.5
130.61.60.127   Ready     node      16m       v1.11.5

nodeの情報が確認できたら、成功です。NAMEカラムにはCluster内でのみ利用可能なIPアドレス(Cluster IP)が表示されます。

OKEクラスタへのRBACポリシーの作成

Kubernetes clusterへのアクセスを許可するためにOracle Container Engine for Kubernetes上のクラスタ管理者としてのOCIアカウントを認可する必要があります。 これには、OCI CLIセットアップ時に使用したuser OCIDが必要になります。(OCIコンソールの右上にある人型マークをクリックし、ユーザ名をクリックすると表示されるユーザ情報で確認できます)

user OCIDを利用してcluster role bindingコマンドを実行します。

kubectl create clusterrolebinding my-cluster-admin-binding --clusterrole=cluster-admin --user=<YOUR_USER_OCID>

以下のように表示されます。:

$ kubectl create clusterrolebinding my-cluster-admin-binding --clusterrole=cluster-admin --user=ocid1.user.oc1..aaaaaaaa724gophmrcxxrzg3utunh3rg5ieeyyrwuqfetixdb3mhzesxmdbq
clusterrolebinding "my-cluster-admin-binding" created

以上で、WebLogicドメインをデプロイするためのOKE環境の準備が整いました。

続いて、WebLogic Operatorのインストールに進んでください。