そこはかとなく

見て聞いて触ったことの技術メモ

Vitess as a Service:Vitessのフル・マネージド・サービスを試す(導入編)

注意:本記事の内容は所属企業とは全く関係がありません。個人の趣味です。

Kubernetes Advent Calendar 2019 - Qiita 15日目です。

Vitessとは

f:id:scoto:20191213184712p:plain

Vitessを皆さんはご存知でしょうか?

CNCFが2019/11/5にVitessのGraduateを発表し、 さらにCloudNativeCon 2019 SanDiegoでもKeynoteに取り上げられたこともあり注目度・認知度が上がってきているのではないでしょうか。

Vitessは一行で説明すると"MySQLの水平スケーリングを実現するためのデータベースクラスタリングシステム"です。

Vitessの大きな特徴は、Cloud Native Databaseと紹介されることがある通り、Kubernetesを当初からサポートし、etcd、gRPC、Prometheusを含む他の多くのCloud Native Projectsと統合して利用することで、ベンダーロックインされることなく、MySQLをシャーディングにより(無限に?)スケールさせて利用できる点です。

この記事ではVitessのアーキテクチャ紹介は致しません。 アーキテクチャや特徴に興味のある方は、以前Vitessについてまとめた資料を御覧ください。2018年作成のため少し古いです。

Vitess のパフォーマンスと運用性を検証してみた
Kubernetesが超強力な分散RDBに vitessの真価を大検証してみた (JapanContainerDays v18.12)

これらの資料を作成した頃は、Helmが用意されていなかったり、マニュアルも正確でないことがあり、エラー内容もわからないままにトライアンドエラーを繰り返し、躓いてはSlackで質問し本当に大変でした。(今は改善しつつあります!)

Vitess as a Service:PlanetScale CNDb

さて、この記事で本題として取り上げたいのはPlanetScale社が提供する"Vitess as a Service"である"PlanetScale CNDb"です。

PlanetScaleは、2018年にVitessのオープンソースプロジェクトの共同管理者によって設立されました。以下のサービスを提供しています(抜粋)。

  • Open Source Vitess:Vitessの9ヵ月の限定的なサポート(恐らく導入コンサル的なもの?)
  • PlanetScale Enterprise:Vitessの長期サポート3年とSLA保証
  • PlanetScale CNDb:Kubernetesを前提としたVitessのフル・マネージドなサービス提供

Vitessのフル・マネージド……すごい。ということで試してみました。

ログイン

https://console.planetscale.com/login からログインします。私はGoogleアカウントでログインします(便利)。 f:id:scoto:20191213185025p:plain

続いて Create New Account で以下を入力していきます。

  1. アカウント名
  2. Billing Information
  3. Apply Coupons

Billing Information / Apply CouponsはSkipすることができるので、今回はSkipしていきます。$0.07/hr までは無料で利用することが可能です(Getting Started Credits)。

ログインするとこのようなページへ。早速Create Clusterしたくなるページ。 f:id:scoto:20191213190219p:plain

Create your first cluster

"Create Cluster"をクリック。ここではクラスタ名と使用するCloudサービス、Regionを選択します。

f:id:scoto:20191213190836p:plain
create cluster

現在Regionは以下に対応しているようです。今後増えていくのでしょう。Tokyoにも来るといいですね。

Create Database

続いてDatabaseを作成していきます。画面遷移することなく手順が示されるため、とても分かりやすいです。 f:id:scoto:20191213191150p:plain

"Create Database"をクリックすると、以下の入力が求められます。

  1. Database Name:データベース名を入力
  2. Deployment Type:Deployment Typeを選択(今回はGCPを選択したため、Single Regionしか選べませんでした。)
  3. Instance Configuration:CPU、RAM、Storageなどサイズを選びます。今回はdefaultのまま。
  4. Number of instances:レプリカ数、Read-Only数を選択します。レプリカ数は3以上にすることで High Availabilityにチェックが付きますが、今回は1のまま。
  5. Sharding:シャードの数を指定します。せっかくなので今回は2を指定してみます。

f:id:scoto:20191214175321p:plain f:id:scoto:20191214175347p:plain f:id:scoto:20191214175420p:plain

金額は0.604/hrとでています。即座に金額がわかって親切ですね。最後に"Create Database"をクリックして少し待つと以下の画面が表示されます。

f:id:scoto:20191214175912p:plain

裏側では恐らくPlanetScaleが管理するKubernetes上にMySQLのコンテナやVitessのコンポーネント(vtgate等)がデプロイされ、Ingressが作成されているようです。ほんの数分で完了します。

作成したデータベース名を選択すると、"Overview"タブからデータベースの情報を確認することができます。 f:id:scoto:20191214180017p:plain

さらにこのページから"Schema"を作成したり、"Sharding Scheme(vSchema)"を作成することができます。 f:id:scoto:20191214181339p:plain f:id:scoto:20191214181519p:plain

右上の"Connect"をクリックすると、以下のようにvtgateへの接続するためのコマンドが表示されます。

mysql --host 34.XX.XX.XX --port 3306 --user vtgate-testdb-user --password=XXXXXXX

コマンドを打つと、vtgate経由でServer version:5.5.10-Vitess MySQL Community Serverへの接続が確認できます。

# mysql --host 34.XX.XX.XX --port 3306 --user vtgate-testdb-user --password=XX
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.10-Vitess MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SHOW TABLES FROM testdb;
+---------------------+
| Tables_in_vt_testdb |
+---------------------+
| user1               |
| user2               |
+---------------------+
2 rows in set (0.06 sec)

"Instances"タブでは、各シャードの状態が確認できます。今回はShardを2つ作成しているので2つのインスタンスが見えています。

f:id:scoto:20191215112125p:plain

”Backup”タブでは、バックアップの取得状況が確認できます。 f:id:scoto:20191215112238p:plain

12時間ごとに自動的にレギュラーバックアップが取得されるようです。 Vitessではタブレットを追加作成するとき、バックアップから作成されるため、確実に使えるバックアップを用意する必要があります。

長くなったので今回はここまでにします。次は実際にデータを入れて、スケールのテストなどしてみたいと思います。

終わりに

Vitessは、YouTube、Square、Slack、Githubなどグローバルにサービスを提供する企業が利用している印象を受けます。

これらグローバル企業の多くは研究開発費やエンジニアの数もすさまじく、クラウドに頼らずともon-premiseで運用できてしまうことが多いですが、やはり絶対的に楽です。クラウド。今回試してみて、あの苦労は何だったのだと思いました。

Vitessもクラウドサービス化されることで導入の敷居を下げ、より幅広い企業に利用されていくことを期待しています。

がんばれVitess!

ATPをWebLogicデータソースとして設定

この記事について

Autonomous Transaction Process(ATP)をOracle WebLogic Server(WLS)データソースとして設定する際の手順のメモです。WebLogic Cafeの記事をお手本にしています。 WebLogic Café | Configuring a WebLogic Data Source to use ATP

Walletの配置

1.ATPのWalletファイルをWebLogic ServerのAdmin Server(管理サーバー)にファイル転送

2.Admin Serverにsshでログイン

※ 今回は JCS(Java Cloud Service)を利用しているため、OPC ユーザーを経由してログイン・操作しています

> ssh opc@<ホスト名 or IPアドレス> -i <秘密鍵>

3.zipファイルをopcユーザーからoracleユーザー引き渡し

[opc@jcs01 ~]$ ls
Wallet_atp_ks.zip
[opc@jcs01 ~]$ sudo cp Wallet_<dbname>.zip /shared/atp
[opc@jcs01 ~]$ sudo chown oracle:oracle /shared/atp/Wallet_<dbname>.zip

4.zipファイルを解凍

[opc@jcs01 ~]$ sudo su - oracle
[oracle@jcs01 ~]$ cd /shared/atp/
[oracle@jcs01 atp]$ ls
Wallet_<dbname>.zip
[oracle@jcs01 wallet]$ unzip Wallet_<dbname>.zip
Archive:  Wallet_<dbname>.zip
  inflating: cwallet.sso             
  inflating: tnsnames.ora            
  inflating: truststore.jks          
  inflating: ojdbc.properties        
  inflating: sqlnet.ora              
  inflating: ewallet.p12             
  inflating: keystore.jks            

sqlnet.oraを編集

sqlnet.oraにWalletを配置したディレクトリを指定します。

[oracle@jcs01 atp]$ vi sqlnet.ora
[oracle@jcs01 atp]$ cat sqlnet.ora
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/shared/atp")))
SSL_SERVER_DN_MATCH=yes

WebLogic 管理コンソールから JDBCデータソースの作成

ここからは管理コンソールで作業します。
管理コンソールのURLは https://‹Admin ServerのIPアドレス›:7002/console です。

weblogic ユーザーにインスタンス作成時に指定したパスワードでログインします。

ドメイン構造から サービス › データ・ソースを選択し、ロックして編集をクリックします。 そして 新規ボタンから 汎用データソース を選択します。

データ・ソースの名前を入力して、次を選択

デフォルトの設定のまま、次を選択

デフォルトの設定のまま、次を選択

ATPの接続情報を入力します。

  • データベース名
  • ホスト名
  • ポート番号 ※ ATPはポート番号1521ではなく、1522を使用します
  • ユーザー名
  • パスワード

続いてJDBC接続文字列を指定します。

JDBC接続文字列 = jdbc:oracle:thin:@<データベース名>_high (=tnsnames.oraで定義されているもの)

プロパティに以下を設定します。

ディレクトリはWalletを展開先を指定、パスワードはWallet取得時に設定したパスワードを指定します。

user=admin
oracle.net.tns_admin=/shared/atp/
oracle.net.ssl_version=1.2
oracle.net.ssl_server_dn_match=true
javax.net.ssl.keyStoreType=JKS
javax.net.ssl.keyStore=/shared/atp/keystore.jks
javax.net.ssl.keyStorePassword=<walletパスワード>
javax.net.ssl.trustStoreType=JKS
javax.net.ssl.trustStore=/shared/atp/truststore.jks
javax.net.ssl.trustStorePassword=<walletパスワード>
oracle.jdbc.fanEnabled=false

設定が終わったら構成のテストを行います。
以下が表示されれば成功です。

データソースのターゲットを選択します。

変更のアクティブ化 を選択します。

以上で設定完了です!お疲れ様でした!

ご覧いただきありがとうございました。

Node.jsからAutonomous Transaction Processing(ATP)に接続

この記事について

この記事ではNode.jsのアプリケーションからAutonomous Transaction Processing(ATP)に接続する方法を記載しています。

前提

  • Oracle Cloudのアカウントを持っている
    無償トライアルはこちら Try for Free | Oracle Cloud
  • Autonomous Transaction Processing(ATP)がプロビジョニングされている

Autonomous Transaction Processing(ATP)とは

Autonomous Transaction Processing は、自己稼動、自己保護、自己修復が可能なOracle Autonomous Database を基盤とするクラウド・サービス・ファミリーの一部です。

Autonomous Transaction Processingは、機械学習と自動化を使用して人手による作業、人的エラー、手作業によるチューニングを排除してくれます。

ATPへの接続は証明書認証とSSLが使用されクライアントとATP間のすべての通信は暗号化されます。

f:id:scoto:20190209010550p:plain

Node.jsアプリケーションからATPへの接続 設定手順

以下の手順で設定していきます。

  • Oracle Instant Clientのセットアップ
  • ドライバ(node-oracledb)のインストール
  • セキュリティ資格証明を取得
  • アプリケーションに接続情報を登録

Oracle Instant Clientのセットアップ

1.Oracle Instant Client を入手します*1
以下URLから入手可能です。 ご利用の環境に合うファイルを選択してください。
Oracle Instant Client - Free tools and libraries for connecting to Oracle Database

2.Zipファイル、またはrpmパッケージを解凍します

Windowsの例:C:\instantclient_12_2
Windowsの場合には解凍したディレクトリをPATH変数に登録します。

Linuxの例:/home/myuser/instantclient_18_3
Linuxの場合にはlibclntsh.soのシンボリック・リンクを作成し、環境変数LD_LIBRARY_PATHを登録します。

> cd /home/myuser/instantclient_18_3 
> ln -s libclntsh.so.18.1 libclntsh.so
> export LD_LIBRARY_PATH=/home/myuser/instantclient_18_3:$LD_LIBRARY_PATH

ドライバ(node-oracledb)のインストール

node-oracledb は Node.jsのOracle DBドライバ(Apatche License 2.0)です。
以下URLから入手可能です。
GitHub - oracle/node-oracledb: Oracle Database driver for Node.js maintained by Oracle Corp.

package.jsonの依存関係にoracledbを追加するか、手動で以下のコマンドを実行することでインストールできます。

> npm install oracledb

セキュリティ資格証明を取得

1. 以下の手順でセキュリティ資格証明(Oracle client credentials)をダウンロードします。

  • Autonomous Transaction Processing詳細ページで「DB Connection」をクリックします
  • パスワードを入力します*2
  • 「Download」クリックして、クライアントのセキュリティ資格証明のzipファイルを保存します

2. セキュリティ資格証明のZipを以下のディレクトリに解凍します。

Windowsの例:C:\instantclient_12_2\network\admin

Linuxの例:/home/myuser/instantclient_18_3/network/admin
Linuxの場合には解凍したディレクトリを環境変数TNS_ADMINに登録します。

Zipに含まれるファイル

-rw-r--r-- 1 cotoc 197121  3336 1月  29 05:53 truststore.jks
-rw-r--r-- 1 cotoc 197121 12753 1月  29 05:53 tnsnames.ora
-rw-r--r-- 1 cotoc 197121    87 1月  29 05:53 ojdbc.properties
-rw-r--r-- 1 cotoc 197121  3243 1月  29 05:53 keystore.jks
-rw-r--r-- 1 cotoc 197121  6616 1月  29 05:53 ewallet.p12
-rw-r--r-- 1 cotoc 197121  6661 1月  29 05:53 cwallet.sso
-rw-r--r-- 1 cotoc 197121 20083 1月  29 14:53 Wallet_store.zip
-rw-r--r-- 1 cotoc 197121   139 1月  29 16:10 sqlnet.ora

Node.jsアプリケーションからATPに接続するためにはtnsnames.ora、sqlnet.ora、cwallet.ssoを使用します。

アプリケーションに接続情報を登録

dbConfig.js にnode-oracledbドライバを使用したOracle DBのアクセスのコードを記述します。
今回はmodule.exportsを使用しています。

module.exports = {
    user          : process.env.NODE_ORACLEDB_USER || “DBユーザー名”,
    password      : process.env.NODE_ORACLEDB_PASSWORD || “DBパスワード”,
    connectString : process.env.NODE_ORACLEDB_CONNECTIONSTRING || “<サービス名>_low”,
    externalAuth  : process.env.NODE_ORACLEDB_EXTERNALAUTH ? true : false
  };
  • NODE_ORACLEDB_USER:DBのユーザー名を登録します
  • NODE_ORACLEDB_PASSWORD:DBのユーザー名のパスワードを登録します
  • NODE_ORACLEDB_CONNECTIONSTRING:データベース・サービス名を登録します
  • NODE_ORACLEDB_EXTERNALAUTH :外部認証テストのためのオプションをFalseに設定します

NODE_ORACLEDB_CONNECTIONSTRINGに記述するデータベース・サービス名はセキュリティ資格証明に含まれる tnsnames.ora を確認します。

※ tnsnames.oraファイルには、high/medium/low/tp/tpurgentの5つのデータベース・サービス名が含まれます。それぞれ優先順位と並列処理の実行の有無が異なります。

Managing and Monitoring Performance of Autonomous Transaction Processing

お疲れさまでした!これでNode.jsアプリからATPへの接続に必要な設定は完了です!

ご覧いただきありがとうございました。

*1:Instant Clientは、OTNの開発および配布に関する個別のInstant Clientライセンス契約書に従って提供されることに注意してください。

*2:パスワードは、8文字以上の長さで1文字以上と数値または1特殊文字を含める必要があります

Istio1.0.5でJaegerやPrometheusに外部ネットワークからアクセスできるようにする

デフォルトの状態でIstioをインストールすると、JaegerやPrometheus、Grafanaといった可視化サービスのServiceタイプがClusterIPとなっているため、外部ネットワークからアクセスできない状態になっています。

そのため、ローカルのブラウザからアクセスできるようにServiceタイプをClusterIPからNodePortまたはLoadBalancerに変更する必要があります。

Jaegerを例に変更してみます。

現在の状態

$ kubectl get service jaegar-query -n istio-system
NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)                                                                                                                   AGE
jaeger-query             ClusterIP      10.96.141.214   <none>           16686/TCP                                                                                                                 3d

kubectl exposeコマンドで --type=NodePort を指定

$ kubectl expose service jaeger-query --type=NodePort --name=jaeger-query-svc -n istio-system

確認

$ kubectl get service jaeger-query-svc  -n istio-system
NAME               TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)           AGE
jaeger-query-svc   NodePort   10.96.178.82   <none>        16686:32599/TCP   3h

これで外部に公開されるポートが作成されたので、http://<クラスターノードのIPアドレス>:32599 でアクセスすることが可能です。

Kubernetesのマニュアルはこちら

Exposing an External IP Address to Access an Application in a Cluster - Kubernetes

Oracle Container Engine for Kubernetes(OKE)にIstio1.0.5をインストールしてみた

この記事について

Oracle Container Engine for Kubernetes(OKE)にIstio1.0.5をインストールする手順を記載します。

OKEクラスターの準備

Istioの公式ドキュメントにもOracle Cloud Infrastructureのセットアップ手順が記載されています。 f:id:scoto:20190114154538p:plain

Oracle Cloud Infrastructureテナント内にOKEクラスターを作成する最も簡単な方法は、Oracle Cloud InfrastructureのWebコンソールから「Quick Cluster」オプション(デフォルト)を使用する方法です。 僅か数クリックでOKEクラスターを構築することができます。

詳しくは OKEでKubernetesクラスターをプロビジョニングする - チャーリー!のテクメモ を参照してください。

OKEクラスターが作成できたら、OCI cliコマンドを実行してkubeconfigファイルをダウンロード、保存します。

$ oci ce cluster create-kubeconfig \
    --file $HOME/.kube/config \
    --cluster-id <cluster-ocid>

続いてユーザーにクラスタ管理者(admin)権限を与えます。Istioに必要なRBACルールを作成するには管理者権限が必要です。

$ kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole=cluster-admin \
    --user=<user_ocid>

Istioのインストール

Istio / Quick Start with Kubernetesに沿って作業します。

1.最新バージョンを以下コマンドでダウンロード

$ curl -L https://git.io/getLatestIstio | sh -

2.Istioのカスタムリソース定義を適用

$ kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml

3.LoadBalancerの定義を編集(任意)

今回はPod同士のTLS認証を有効にせずにIstioをインストールします。

LoadBalancerタイプのServiceオブジェクトに、Oracle Cloud Infrastructureのロードバランサーを利用するための記述を追加します。 マニフェストファイル install/kubernetes/istio-demo.yaml のL12485に記述を追加します。

12478 ---
12479 apiVersion: v1
12480 kind: Service
12481 metadata:
12482   name: istio-ingressgateway
12483   namespace: istio-system
12484   annotations:
12485     service.beta.kubernetes.io/oci-load-balancer-shape: 400Mbps

追加しない場合、デフォルトの定義(Shape:100Mbps)でOracle Cloud Infrastructureのロードバランサーが作成されます。

4.Istioの各定義を適用

編集したらマニフェストファイルを適用します。

$ kubectl apply -f install/kubernetes/istio-demo.yaml

確認

Pod を確認

$ kubectl get pods -n istio-system
NAME                                     READY   STATUS      RESTARTS   AGE
grafana-7f6cd4bf56-ggqj7                 1/1     Running     0          3d
istio-citadel-7dd558dcf-6frkq            1/1     Running     0          3d
istio-cleanup-secrets-bvt9s              0/1     Completed   0          3d
istio-egressgateway-88887488d-9cgcq      1/1     Running     0          3d
istio-galley-787758f7b8-zx7gb            1/1     Running     0          3d
istio-grafana-post-install-mj7r8         0/1     Completed   0          3d
istio-ingressgateway-58c77897cc-5h9cn    1/1     Running     0          3d
istio-pilot-86cd68f5d9-xvxs6             2/2     Running     0          3d
istio-policy-56c4579578-p7lgg            2/2     Running     0          3d
istio-security-post-install-4dz55        0/1     Completed   0          3d
istio-sidecar-injector-d7f98d9cb-xsbvx   1/1     Running     0          3d
istio-telemetry-7fb48dc68b-4sgmz         2/2     Running     0          3d
istio-tracing-7596597bd7-rtxfm           1/1     Running     1          3d
prometheus-76db5fddd5-fj6gl              1/1     Running     0          3d
servicegraph-56dddff777-r6wff            1/1     Running     1          3d

Service を確認

$ kubectl get service -n istio-system
NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)                                                                                                                   AGE
grafana                  ClusterIP      10.96.215.232   <none>           3000/TCP                                                                                                                  3d
istio-citadel            ClusterIP      10.96.63.94     <none>           8060/TCP,9093/TCP                                                                                                         3d
istio-egressgateway      ClusterIP      10.96.50.97     <none>           80/TCP,443/TCP                                                                                                            3d
istio-galley             ClusterIP      10.96.198.43    <none>           443/TCP,9093/TCP                                                                                                          3d
istio-ingressgateway     LoadBalancer   10.96.225.198   129.XXX.XXX.XXX   80:31380/TCP,443:31390/TCP,31400:31400/TCP,15011:32084/TCP,8060:30266/TCP,853:32123/TCP,15030:31048/TCP,15031:30558/TCP   3d
istio-pilot              ClusterIP      10.96.51.162    <none>           15010/TCP,15011/TCP,8080/TCP,9093/TCP                                                                                     3d
istio-policy             ClusterIP      10.96.68.127    <none>           9091/TCP,15004/TCP,9093/TCP                                                                                               3d
istio-sidecar-injector   ClusterIP      10.96.160.21    <none>           443/TCP                                                                                                                   3d
istio-telemetry          ClusterIP      10.96.226.178   <none>           9091/TCP,15004/TCP,9093/TCP,42422/TCP                                                                                     3d
jaeger-agent             ClusterIP      None            <none>           5775/UDP,6831/UDP,6832/UDP                                                                                                3d
jaeger-collector         ClusterIP      10.96.245.242   <none>           14267/TCP,14268/TCP                                                                                                       3d
jaeger-query             ClusterIP      10.96.141.214   <none>           16686/TCP                                                                                                                 3d
jaeger-query-svc         ClusterIP      10.96.178.82    <none>           16686/TCP                                                                                                           3d
prometheus               ClusterIP      10.96.113.247   <none>           9090/TCP                                                                                                                  3d
servicegraph             ClusterIP      10.96.50.158    <none>           8088/TCP                                                                                                                  3d
tracing                  ClusterIP      10.96.29.192    <none>           80/TCP                                                                                                                    3d
zipkin                   ClusterIP      10.96.100.234   <none>           9411/TCP                                                                                                                  3d

全てのサービスが立ち上がっていることを確認します。

インストール作業はこれで完了です!

次回はIstioの機能をいろいろ試してみたいと思います。ご覧いただきありがとうございました。

Oracle Container Engine for k8s(OKE)のKubernetesダッシュボードにアクセスする方法

この記事について

Oracle Container Engine for Kubernetes(OKE)のKubernetesダッシュボードにアクセスする方法をまとめます。

Kubernetesダッシュボードとは

f:id:scoto:20181223180220p:plain Kubernetesダッシュボードは、kubectlコマンドライン・ツールの代わりに使用することができるWebベースのユーザー・インタフェースです。
Kubernetesダッシュボードを使用して、クラスタ上で実行されているアプリケーションの概要を確認したり、個々のKubernetesリソースを作成または変更したりできます。
例えば以下の用途に利用可能です。

コマンドラインに慣れる前はこういったUIがあると便利ですね。

Kubernetesクラスタやノードプールを作成および削除したり、関連するComputing、Network、およびStorageリソースを管理する場合はKuberenetesダッシュボードではなくOKEのダッシュボードを使用します。

前提条件

1, OKEでKubernetesダッシュボードを利用するにはクラスター作成時にKUBERNETES DASHBOARD ENABLE が有効になっている必要があります(後から追加することも可能です)。

f:id:scoto:20181223175449p:plain

2, kubeconfigの設定ファイルをダウンロードし、kubectlコマンドを利用できる状態にします。
kubeconfigのダウンロードの方法はAccess Kubeconfigを確認してください。

f:id:scoto:20181223174720p:plain

Kubernetes ダッシュボードの起動

ダッシュボードにアクセスする方法はKubernetesクラスター作成後、クラスターの詳細の左側にある Getting Started にも記載されています。

f:id:scoto:20181223170352p:plain

1, ローカル端末でkubectl proxyコマンドを実行します。

~$ kubectl proxy
Starting to serve on 127.0.0.1:8001

kubectk proxyコマンドを実行すると、KubernetesAPIエンドポイント経由でアプリケーションにアクセスすることが出来ます。 kubectlがapiエンドポイントへのリバースプロキシとして動作します。

2, ブラウザを開き以下URLでKubernetesダッシュボードを表示します。

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

3, Kubernetesダッシュボードにサインインするための情報を入力します。

f:id:scoto:20181223171124p:plain

今回はkubeconfigファイルを使用してサインインします。 クラスターへのアクセスを構成するために作成したkubeconfigファイル$HOME/.kube/config*1を選択します。

これで完了です!Kubernetesダッシュボードにアクセスすることができました。
Overviewでは現在動作しているリソースの状況を確認することが出来ます。

f:id:scoto:20181223171525p:plain

リソースを選択することでより詳細な情報を確認することが出来ます。

ご覧いただきありがとうございました。

この記事は Oracle Cloud Advent Calendar 2018 - Adventar 23日目です。

*1:kubeconfigファイルには、クラスターにアクセスするための資格情報(秘密鍵ハッシュ値を含む)が含まれています。 kubeconfigファイルはユーザー固有のものであり、API署名鍵ペアが有効である限り有効です。kubeconfigファイルを他のユーザーと共有しないようにしてください。 kubeconfigファイルを他のユーザーと共有する場合は、ユーザーが自分がアクセス権を持つすべてのクラスターにテナント内でアクセスできるようになることに注意してください。

Oracle Cloud Hangout Cafe

OchaCafe#1 - Kubernetesで作るコンテナベースCI☆CDの夕べ

12/20 Oracle Cloud Hangout Cafe を開催しました!

ochacafe.connpass.com

当日の様子はTogetterはこちらから togetter.com

第二弾の募集はこちらから

OchaCafe#2 - Microservicesの運用・監視(仮)

ochacafe.connpass.com

まずはリンク集まで。