Edited at

Rancher2.0 Tech Preview2 alpha21でGKEにkubernetesクラスタ構築からWordPressデプロイまで

More than 1 year has passed since last update.

Rancher2.0 TechPreview2からカタログ機能がHelm対応されて、GKE等のkubernetesクラスタをRancher側にインポートした後、Rancherのカタログ機能からデプロイできるようになりました。まずは、GKEで試してみたいと思います。


Rancher2.0 Tech Preview2 alpha21環境の構築


GCEの準備

Compute Engineで以下の1インスタンスを作成します。

項目
入力概要

名前
rancher-server

ゾーン
asia-northeast1-b

マシンタイプ
vCPUx1

ブートディスク
Ubuntu 16.04 LTS
ディスクサイズ80GB

ファイアウォール
HTTP トラフィックを許可する、HTTPS トラフィックを許可するの両方をチェックします。

GCPでは、デフォルトでファイアウォールが設定されていて、ホスト間でのコンテナの通信が行えないため、

設定を変更する必要があります。

GCPのダッシュボードで、「ネットワーキング」-「ファイアウォール」を選択して、ファイアウォールルールを作成します。

image.png

名前は任意名、ソースIPの範囲は0.0.0.0/0、プロトコルとポートは全て許可とします。

今回はお試しということで、全許可にしています。

最後に「作成」ボタンをクリックします。


Rancher2.0 Tech Preview2 alpha21のインストール

1.Dockerのインストール

最新版のDockerをインストールします。


コマンド

$ curl -fsSL https://get.docker.com/ | sh

# Executing docker install script, commit: 02d7c3c
+ sudo -E sh -c apt-get update -qq >/dev/null
+ sudo -E sh -c apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sudo -E sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | apt-key add -qq - >/dev/null
+ sudo -E sh -c echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial edge" > /etc/apt/sources.list.d/docker.list
+ [ ubuntu = debian ]
+ sudo -E sh -c apt-get update -qq >/dev/null
+ sudo -E sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
+ sudo -E sh -c docker version
Client:
Version: 18.02.0-ce
API version: 1.36
Go version: go1.9.3
Git commit: fc4de44
Built: Wed Feb 7 21:16:33 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.02.0-ce
API version: 1.36 (minimum version 1.12)
Go version: go1.9.3
Git commit: fc4de44
Built: Wed Feb 7 21:15:05 2018
OS/Arch: linux/amd64
Experimental: false
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

sudo usermod -aG docker cyberblackvoom

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
containers which can be used to obtain root privileges on the
docker host.
Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
for more information.


2.Rancher2.0 Tech Preview2 alpha21のインストール


コマンド

$ sudo docker run -d -p 80:80 -p 443:443 rancher/server:preview

Unable to find image 'rancher/server:preview' locally
preview: Pulling from rancher/server
c3b9c0688e3b: Pull complete
e9fb5affebb0: Pull complete
0f1378f511ad: Pull complete
96a961dc7843: Pull complete
16564141bc83: Pull complete
e58cffa0cb0e: Pull complete
ae52f3198700: Pull complete
226b9ead1a79: Pull complete
c6d73e35a6a4: Pull complete
05529e6df84b: Pull complete
Digest: sha256:b997803f07db1ae22ab47f513a43c70bb39c054aac8aebca4a6cfb0fc908300f
Status: Downloaded newer image for rancher/server:preview
4113f312bf487f372f5909059b13a6fb015cd50ac0e45f29091efddf3fe21e96

3.ブラウザを起動して、UIにアクセスします。

https://外部IP/

以下の初期Usernameと初期Passwordでログインします。

項目
入力概要

Username
admin

Password
admin

screencapture-35-200-92-0-login-2018-03-13-12_24_40.png

次に初期パスワード変更を求められますので、任意のパスワードを入力します。

screencapture-35-200-92-0-login-2018-03-13-12_28_29.png

ログイン完了となります。

screencapture-35-200-92-0-g-clusters-2018-03-13-12_29_31.png


GKEとの連携


サービスアカウントの作成

GKEと連携するために、GCPでサービスアカウントを作成し、jsonファイルをエクスポートします。

1.「APIとサービス」-「認証情報」を選択

image.png

2.「認証情報を作成」を選択します。

image.png

3.「サービスアカウントキー」を選択

image.png

4.「新しいサービスアカウント」を選択し、サービスアカウントに任意名を入力し、役割でProjectからオーナーを選択して、作成ボタンをクリックします。

image.png

5.jsonファイルがダウンロードされます。その後「閉じる」を選択します。

image.png


クラスタ作成からWordPressデプロイ

1.「Add Cluster」ボタンを押下

image.png

2.jsonファイルを読み込み

「Cluster Name」に任意の名前を入力し、「Read from a file」ボタンを押下します。

image.png

ダウンロードしたjsonファイルを選択して、「開く」ボタンを押下します。

image.png

3.Rancherからkubernetesクラスタ構築設定

「Zone」を「asia-northeast1-b」に設定し、「Create」ボタンを押下します。

image.png

4.kubernetes clusterの構築完了

しばらくすると、構築が完了します。

screencapture-35-200-92-0-g-clusters-2018-03-13-13_15_08.png

GKE側でも確認できます。

screencapture-console-cloud-google-kubernetes-list-2018-03-13-13_15_41.png

5.リソース状況の確認

上部メニュー「Global」-「Cluster:gke-cluster」を選択します。

image.png

GKE上のkubernetesクラスタのリソース状況を確認できます。

screencapture-35-200-92-0-c-cluster-qgd2w-2018-03-13-13_18_13.png


カタログ機能からWordPressをデプロイ

1.カタログ設定

上部メニュー「Global」-「Cluster:gke-cluster」-「Default」を選択します。

image.png

上部メニュー「Catalog App」を選択

image.png

「Launch」ボタンを押下します。

image.png

カタログ一覧が表示されます。

screencapture-35-200-92-0-p-cluster-qgd2w-project-2qzq8-apps-catalog-2018-03-13-13_32_45.png

WordPressの「View Details」ボタンを押下します。

image.png

「Add Answer」ボタンを押下し、ログインユーザのパスワードを設定し、「Launch」ボタンを押下します。

image.png

ちなみに、Configuretionについては、カタログ上部に詳細が記載されているので、初期ユーザやMySQLのDBパスワードなど設定できます。

image.png

default設定の詳細は以下となります。

Parameter
Description
Default

image
WordPress image
bitnami/wordpress:{VERSION}

imagePullPolicy
Image pull policy
IfNotPresent

wordpressUsername
User of the application
user

wordpressPassword
Application password
random 10 character long alphanumeric string

wordpressEmail
Admin email
user@example.com

wordpressFirstName
First name
FirstName

wordpressLastName
Last name
LastName

wordpressBlogName
Blog name
User's Blog!

allowEmptyPassword
Allow DB blank passwords
yes

smtpHost
SMTP host
nil

smtpPort
SMTP port
nil

smtpUser
SMTP user
nil

smtpPassword
SMTP password
nil

smtpUsername
User name for SMTP emails
nil

smtpProtocol
SMTP protocol [tls, ssl]
nil

mariadb.enabled
Deploy MariaDB container(s)
TRUE

mariadb.mariadbRootPassword
MariaDB admin password
nil

mariadb.mariadbDatabase
Database name to create
bitnami_wordpress

mariadb.mariadbUser
Database user to create
bn_wordpress

mariadb.mariadbPassword
Password for the database
random 10 character long alphanumeric string

externalDatabase.host
Host of the external database
localhost

externalDatabase.rootPassword
DB Root users password (schema creation)
nil

externalDatabase.user
Existing username in the external db
bn_wordpress

externalDatabase.password
Password for the above username
nil

externalDatabase.database
Name of the existing database
bitnami_wordpress

externalDatabase.port
Database port number
3306

serviceType
Kubernetes Service type
LoadBalancer

healthcheckHttps
Use https for liveliness and readiness
FALSE

ingress.enabled
Enable ingress controller resource
FALSE

ingress.hosts[0].name
Hostname to your WordPress installation
wordpress.local

ingress.hosts[0].path
Path within the url structure
/

ingress.hosts[0].tls
Utilize TLS backend in ingress
FALSE

ingress.hosts[0].tlsSecret
TLS Secret (certificates)
wordpress.local-tls-secret

ingress.hosts[0].annotations
Annotations for this host's ingress record
[]

ingress.secrets[0].name
TLS Secret Name
nil

ingress.secrets[0].certificate
TLS Secret Certificate
nil

ingress.secrets[0].key
TLS Secret Key
nil

persistence.enabled
Enable persistence using PVC
TRUE

persistence.storageClass
PVC Storage Class
nil (uses alpha storage class annotation)

persistence.accessMode
PVC Access Mode
ReadWriteOnce

persistence.size
PVC Storage Request
10Gi

nodeSelector
Node labels for pod assignment
{}

デプロイできたことを確認します。

screencapture-35-200-92-0-p-cluster-qgd2w-project-2qzq8-workloads-2018-03-13-14_13_05.png

2.Google Cloud SDK ShellでEXTERNAL-IPの確認


コマンド

> gcloud container clusters get-credentials gke-cluster --zone asia-northeast1-b --project 対象のproject名

Fetching cluster endpoint and auth data.
kubeconfig entry generated for gke-cluster.
> kubectl get -n wordpress services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress-mariadb ClusterIP 10.59.241.199 <none> 3306/TCP 9m
wordpress-wordpress LoadBalancer 10.59.255.28 35.200.80.195 80:32097/TCP,443:31543/TCP 9m

ブラウザを起動して、http://EXTERNAL-IP/ にアクセスします。

screencapture-35-200-80-195-2018-03-13-15_37_04.png

WordPressのダッシュボードにアクセスします。http://EXTERNAL-IP/wp-login.php

初期ユーザ名の「user」とデプロイ時に設定した「wordpress12345」のパスワードでログインします。

screencapture-35-200-80-195-wp-login-php-2018-03-13-15_39_23.png

ログイン完了となります。

screencapture-35-200-80-195-wp-admin-2018-03-13-15_39_57.png

GKEの場合は、EXTERNAL-IPが振られますが、kubeadmやRKE等でクラスタを作成した場合は、Ingressで外部のエンドポイントを設定する必要があると思われます。Rancher2.0ではその設定もUIからできます。


クラスタの削除

上部メニュー「Global」を選択し、「gke-cluster」の左にあるチェックボックスにチェックを入れて、「Delete」ボタンを押下します。

image.png

削除されると以下の画面になります。

screencapture-35-200-92-0-g-clusters-2018-03-13-15_50_15.png

GKE側でも削除されていることを確認します。

screencapture-console-cloud-google-kubernetes-list-2018-03-13-15_51_22.png

今回は、GKEでやってみました。Rancher2.0 Tech Preview2 alpha21からMicrosoft AzureのAKS(Azure Container Service)との連携もサポートされましたので、同じことがAKSでも可能と思われます。

k8s上にカタログからデプロイできる様子を見るとRancherらしくなってきました。GAももうすぐではないでしょうか。