1. Hello world コンテナのデプロイ

1. 簡単なサンプルコンテナをデプロイしてみる #

hello-openshift という Web Server のコンテナをデプロイしてみます。アクセスすると、“Hello OpenShift” とメッセージを返すシンプルなコンテナです。

1.1. namespace の作成 #

  1. hello-openshift という namespace を作成します。
kubectl create namespace hello-openshift
  1. namespace を hello-openshift に変更します。
 kubectl config set-context $(kubectl config current-context) --namespace=hello-openshift

1.2. deployment の作成 #

  1. hello-openshift イメージを使った deployment を作成します。名前はコンテナ名と同じ hello-openshift にします。
kubectl create deployment hello-openshift --image=quay.io/openshift/origin-hello-openshift
  1. deployment が作成されたか確認します。
kubectl get deployment

1.3. serivce の作成 #

  1. service を作成します。 hello-openshift コンテナが使用している 8080 を公開します。servicedeploymentexpose する事で作成可能です。 (コンテナイメージがどのポートを使用しているかをコマンド等で突き止める事もできますが、基本的に事前に知っている必要があります。)
kubectl expose deployment hello-openshift --port=8080
  1. Service が作成されているはずです。以下のコマンドで確認します。
kubectl get svc

1.4. アプリケーションが使用するドメインの確認 #

  1. Application が、クラスターの外に公開される時に使用されるドメイン名を確認します。 rosa では、クラスターのアプリケーションが使用できるドメイン名が提供されています。rosa list ingress コマンドで取得できます。
rosa list ingress -c $CLUSTER_NAME

上記の出力のAPPLICATION_ROUTERが、アプリケーションが使用するベースのドメインです。

  1. このドメイン名を APP_DOMAIN 変数にセットします。コマンドが複雑ですが、dns_name の値を抜いているだけです。
APP_DOMAIN=$(rosa list ingress -c myhcpcluster -o yaml | grep dns_name | awk -F': ' '{print $2}' | sed "s/\"//g")
  1. 変数に値がセットされているのか確かめます。
echo $APP_DOMAIN

1.5. ingress の作成 (アプリの外部公開) #

  1. ingress を作成して Service をクラスターの外に公開します。
kubectl create ingress hello-openshift --rule="hello-openshift.$APP_DOMAIN/*=hello-openshift:8080"
  1. ingress が作成されたか確認します。
kubectl get ingress
  1. ingress が使用している host 名を変数にセットします。
HOST=$(kubectl get ingress/hello-openshift -o jsonpath='{.spec.rules[0].host}')

変数のセットを確認します。

echo $HOST

1.6. curl でのアクセス確認 #

  1. 作成された ingress にアクセスしてみます。
$ curl $HOST
Hello OpenShift!
$

2. 作成したアプリのレプリカ数を増やしてみる #

  1. 可用性を保つために Pod の replica 数を3つに増やしてみます。
kubectl scale deployment hello-openshift --replicas=3
  1. Pod が 3つになっている事を以下のコマンドで確認します。
kubectl get pods
  1. 3つに増やしても引き続きアプリケーションにアクセスできることを curl コマンドで確認します。(アクセス先 URL は kubectl get ingress で表示される URL です)
curl $HOST

3. デプロイしたアプリケーションを削除する #

  1. 作成した deploymentserviceingress は、namespace を削除することで全て消す事ができます。 以下のコマンドで実験で使用したアプリケーションを削除します。
kubectl delete namespace hello-openshift