1. 簡単なサンプルコンテナをデプロイしてみる #
hello-openshift
という Web Server のコンテナをデプロイしてみます。アクセスすると、“Hello OpenShift” とメッセージを返すシンプルなコンテナです。
1.1. namespace の作成 #
hello-openshift
というnamespace
を作成します。
kubectl create namespace hello-openshift
- namespace を
hello-openshift
に変更します。
kubectl config set-context $(kubectl config current-context) --namespace=hello-openshift
1.2. deployment の作成 #
hello-openshift
イメージを使ったdeployment
を作成します。名前はコンテナ名と同じhello-openshift
にします。
kubectl create deployment hello-openshift --image=quay.io/openshift/origin-hello-openshift
deployment
が作成されたか確認します。
kubectl get deployment
1.3. serivce の作成 #
service
を作成します。hello-openshift
コンテナが使用している8080
を公開します。service
はdeployment
をexpose
する事で作成可能です。 (コンテナイメージがどのポートを使用しているかをコマンド等で突き止める事もできますが、基本的に事前に知っている必要があります。)
kubectl expose deployment hello-openshift --port=8080
Service
が作成されているはずです。以下のコマンドで確認します。
kubectl get svc
1.4. アプリケーションが使用するドメインの確認 #
- Application が、クラスターの外に公開される時に使用されるドメイン名を確認します。
rosa
では、クラスターのアプリケーションが使用できるドメイン名が提供されています。rosa list ingress
コマンドで取得できます。
rosa list ingress -c $CLUSTER_NAME
上記の出力のAPPLICATION_ROUTER
が、アプリケーションが使用するベースのドメインです。
- このドメイン名を APP_DOMAIN 変数にセットします。コマンドが複雑ですが、dns_name の値を抜いているだけです。
APP_DOMAIN=$(rosa list ingress -c myhcpcluster -o yaml | grep dns_name | awk -F': ' '{print $2}' | sed "s/\"//g")
- 変数に値がセットされているのか確かめます。
echo $APP_DOMAIN
1.5. ingress の作成 (アプリの外部公開) #
ingress
を作成して Service をクラスターの外に公開します。
kubectl create ingress hello-openshift --rule="hello-openshift.$APP_DOMAIN/*=hello-openshift:8080"
ingress
が作成されたか確認します。
kubectl get ingress
- ingress が使用している host 名を変数にセットします。
HOST=$(kubectl get ingress/hello-openshift -o jsonpath='{.spec.rules[0].host}')
変数のセットを確認します。
echo $HOST
1.6. curl でのアクセス確認 #
- 作成された
ingress
にアクセスしてみます。
$ curl $HOST
Hello OpenShift!
$
2. 作成したアプリのレプリカ数を増やしてみる #
- 可用性を保つために
Pod
の replica 数を3つに増やしてみます。
kubectl scale deployment hello-openshift --replicas=3
- Pod が 3つになっている事を以下のコマンドで確認します。
kubectl get pods
- 3つに増やしても引き続きアプリケーションにアクセスできることを curl コマンドで確認します。(アクセス先 URL は
kubectl get ingress
で表示される URL です)
curl $HOST
3. デプロイしたアプリケーションを削除する #
- 作成した
deployment
、service
、ingress
は、namespace
を削除することで全て消す事ができます。 以下のコマンドで実験で使用したアプリケーションを削除します。
kubectl delete namespace hello-openshift