はじめに
Oracle Cloud では、Kubernetes マネージドサービスの Oracle Container Engine for Kubernetes (略してOKE) が提供されています。OKE の構成方法は、大きく分けて2種類あります。
- Quick Create : VCN の含めた必要なコンポーネント一式を括作成。ネットワーク CIDR などは固定。変更できない。
- Custom Create : 既に構成されている VCN を使って、OKE を構成。柔軟なネットワーク構成が可能。
OKE を軽く試してみよう、という用途だと Quick Create は一瞬で作成が出来て便利です。一方、本番環境を考えると、既存の VCN に OKE を構成したい事があります。そういう時には、Custom Create が使えます。Custom Create を使うためには、VCN 側で事前に設定が必要です。
今回の記事では、Custom Create の時に、VCN 側で事前に必要な設定を紹介します。細かな設定が多く、かつ、ドキュメントの記載が文章だけなので、出来るだけわかりやすく紹介していきます。
既存VCN環境
OKE を追加する前の、一般的な Compute Instance が稼働している VCN 環境を作ります。Public Subnet 1個に、Private Subnet 1個の一般的な環境です。構成図では、こんな感じです。この段階では、OKEは全く関係ありません。
OKE 用 VCN 設定
既存 VCN に OKE を追加する時は、OKE 用の Subnet を 新規に2個作成するのがお勧めです。既存の Subnet 上に OKE を構成するのも出来ますが、Worker Node のスケール数 や Sercurity List の管理が複雑になります。キレイに管理対象を分割するために 新規にSubnet を 2個追加するのが良いです。
2個の Subnet は、Service LoadBalaner 用と、Worker Node 用です。構成図では、こんな感じです。
OCI Console でみると、次のようになります。
- Load Balancer 用 : oke_lb_subnet1 : 10.0.1.0/24
- Worker Node 用: oke_wkr_subnet1 : 10.0.11.0/24
次に、OKE 用の 2個の Subnet に Route Tables をそれぞれ割り当てます。Route Table も新規で2個作成すると管理が楽なのでお勧めです。
- Load Balancer 用 : Internet と通信するので、Internet Gateway を追加
- Worker Node 用 : 内側から Internet へ通信する用途を考慮して、NAT Gateway、OCIR と通信するので Service Gateway を追加
OCI Console ではこんな感じです。Load Balancer 用 Route Table
Worker Node 用 Route Table
次に、一番複雑な Security List を設定します。これも新規に 2個の Security List を作成するのが管理が楽でお勧めです。
構成図で表すとこんな感じです。注意点があり、構成図には書いていないですが、ステートレス or ステートフル 指定が性能を左右するポイントです。ステートレスの方が性能は良いので、LB と Worker Node 間や、Worker Node 間の通信は全てステートレスにしています。
適宜必要な場合は、SSH や ICMP や NodePort の範囲(30000-32767) を追加で指定するのも良いです。
OCI Console ではこんな感じです。ステートレスの有無を確認しましょう。
Load Balancer 用 Ingress Security List。
Load Balancer 用 Egress Security List
Worker Node 用 Ingress Security List
Worker Node 用 Egress Security List
OKE 作成
ここまで設定すれば、あとは OKE を作るだけです。OKE の画面に移動して、Create Cluster を押します。
Custom Create を選び Launch
パラメーターを適当に入れます。
Kubernetes Service LB Subnets は、忘れずに事前作成した oke_lb_subnet1 を入れます。
Subnets は、忘れずに事前作成した oke_wkr_subnet1 を入れます。
内容を確認し Create
Close
OKE が Creating となります
Node Pool も作成中です
一定時間後、OKE Cluster が Active になります
NodePool の中の Node が作成されます。
一定時間後、Node が Ready となります。
動作確認
ここまでで、OKE クラスタの準備が完了しました。動作確認のために、適当に Deployment と Service LoadBalancer を作成します。
Deployment
$ kubectl apply -f https://raw.githubusercontent.com/Sugi275/oke-handson/master/deployment-cowweb.yaml
deployment.apps/cowweb created
Service LoadBalancer
$ kubectl apply -f https://raw.githubusercontent.com/Sugi275/oke-handson/master/service-cowweb.yaml
service/cowweb created
通信確認。牛が表れているので、正常に動作しています。
$ curl "http://158.101.70.40/cowsay/say?say=HOSTNAME"
_________________________
< cowweb-7cb44c5768-dqvjc >
-------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
参考URL






















