Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20191120 beyondstudy#21 okazaki

276 views

Published on

2019年11月21日 ビヨンド勉強会#21
株式会社ビヨンド システムソリューション部 運用管理課
岡崎 潤一郎
「Kubernetesでサイトを立ち上げるためのエトセトラ」

Published in: Business
  • Be the first to comment

  • Be the first to like this

20191120 beyondstudy#21 okazaki

  1. 1. Kubernetesでサイトを立ち上げるためのエトセトラ 株式会社ビヨンド 運用管理課 岡崎 潤一郎 2019/11/20
  2. 2. 自己紹介 岡崎 潤一郎 運用管理課 サブリーダー 運用から構築、移設まで幅広く実施 MSPJマイグレーションコンペ2連覇 最近の悩み:体重が減らない
  3. 3. Agenda Kubernetesでwordpressを構築する流れ 利用したクラウド・サービス 今回実施した内容 まとめ
  4. 4. ちなみに
  5. 5. Kubernetesってどう読みます??
  6. 6. クバネテス クーベネティス クバネティス Kubernetesの読み方
  7. 7. Kubernetesの語源 ギリシャ語 パイロット、航海長
  8. 8. Kubernetesでwordpressを 構築する流れ
  9. 9. 今回の目的 KubernetesでWordPressをインストール
  10. 10. 今回利用したクラウドとサービス
  11. 11. 今回実施した内容 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
  12. 12. これから実施する内容① 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
  13. 13. 自身のクライアント環境にツールインストール①  レポジトリ追加 # tee -a /etc/yum.repos.d/google-cloud-sdk.repo << EOM [google-cloud-sdk] name=Google Cloud SDK baseurl=https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOM
  14. 14. 自身のクライアント環境にツールインストール② インストール # yum install google-cloud-sdk kubectl
  15. 15. これから実施する内容② 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
  16. 16. クライアント端末からGCPコンソールへ接続 GCPへ接続設定を追加 # gcloud init 表示されたURLに自身のGCPアカウントでログイン&許可 利用するプロジェクトとデフォルトのリージョンを選択
  17. 17. これから実施する内容③ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
  18. 18. Kubernetesクラスタ作成 kubernetesクラスタを作成 # gcloud container clusters create “作成したいクラスタ名” > --num-nodes=“任意のGCEホスト数”
  19. 19. これから実施する内容④ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
  20. 20. MySQLとWordpress用のストレージ作成  MySQL用のディスクを作成、リージョンを求められるので選択 # gcloud compute disks create --size “任意のサイズ” “任意の名前”  Wordpress用のディスクを作成、リージョンを求められるので選択 # gcloud compute disks create --size “任意のサイズ” “任意の名前”
  21. 21. これから実施する内容⑤ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
  22. 22. Disk(mysql) Disk (wordpress) mysql
  23. 23. MySQLとWordpressのセットアップ① MySQL用のパスワードをkubernetes内部の Kubernetes secretと呼ばれる値に格納する # kubectl create secret generic mysql > --from-literal=password=“任意のパスワード”
  24. 24. MySQLとWordpressのセットアップ② MySQL用のマニフェストファイル「mysql.yaml」から MySQLをデプロイ # kubectl create -f mysql.yaml
  25. 25. mysql.yaml① apiVersion: apps/v1 #APIのバージョン kind: Deployment #オブジェクトの種類 metadata: #オブジェクト判別する値 name: mysql # 名前
  26. 26. mysql.yaml② spec: replicas: 1 #podの数(デフォルトは1) selector: #どのpodを起動するか matchLabels: app: mysql #app:mysqlラベルのものを起動
  27. 27. mysql.yaml③ template: #作成されるpodのテンプレート metadata: labels: app: mysql # ラベル付け
  28. 28. mysql.yaml④ spec: containers: - image: mysql:5.6 #コンテナイメージ name: mysql #名前
  29. 29. mysql.yaml⑤ env: # 変数(mysql_root_passwordに挿入) - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: #先程作成したsecretの値 name: mysql key: password
  30. 30. mysql.yaml⑥ ports: # 開くポート - containerPort: 3306 name: mysql volumeMounts: #マウントするディスクとポイント - name: mysql-persistent-storage mountPath: /var/lib/mysql
  31. 31. mysql.yaml⑦ volumes: #mysqlのデータを保存するディスク - name: mysql-persistent-storage #名前 gcePersistentDisk: pdName: "mysql用のディスク" fsType: ext4 #ファイルシステム
  32. 32. Disk(mysql) Disk (wordpress) mysql
  33. 33. MySQLとWordpressのセットアップ② MySQL接続用のマニフェストファイル「mysql- service.yaml」をデプロイ # kubectl create -f mysql-service.yaml
  34. 34. mysql-service.yaml① apiVersion: apps/v1 #APIのバージョン kind: Service #オブジェクトの種類 metadata: name: mysql #作成するサービスの名前
  35. 35. mysql-service.yaml② spec: type: ClusterIP #サービスの公開方法を指定 ports: - port: 3306 #開くポート番号 selector: app: mysql #どのpodに紐付けるかを指定
  36. 36. mysql Mysql-service Disk(mysql) Disk (wordpress)
  37. 37. MySQLとWordpressのセットアップ② Wordpress用のマニフェストファイル 「wordpress.yaml」からwordpressをデプロイ # kubectl create -f wordpress.yaml
  38. 38. wordpress.yaml① apiVersion: apps/v1 #APIのバージョン kind: Deployment #オブジェクトの種類 metadata: name: wordpress #名前
  39. 39. wordpress.yaml② spec: replicas: 1 #起動するpodの数 selector: matchLabels: #app: wordpressラベルのついたものを起動 app: wordpress
  40. 40. wordpress.yam③ template: metadata: labels: app: wordpress #ラベル付け
  41. 41. wordpress.yaml ④ spec: containers: - image: wordpress #コンテナイメージ name: wordpress #名前
  42. 42. wordpress.yaml ⑤ env: - name: WORDPRESS_DB_HOST value: mysql:3306 #データベースへの接続を指定 - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql key: password
  43. 43. wordpress.yaml ⑥ ports: - containerPort: 80 #開くポートの指定 name: wordpress
  44. 44. wordpress.yaml ⑦ volumeMounts: # マウントポイントを指定 - name: wordpress-persistent-storage mountPath: /var/www/html
  45. 45. wordpress.yaml ⑧ volumes: #マウントするボリュームを指定 - name: wordpress-persistent-storage gcePersistentDisk: pdName: ”wordpress用のディスク” fsType: ext4 #ファイルシステム
  46. 46. mysql Mysql-service wordpress Disk(mysql) Disk (wordpress)
  47. 47. これから実施する内容④ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
  48. 48. サービスの公開 Wordpress公開用のマニフェストファイル「wordpress- ser.yaml」をデプロイ # kubectl create -f wordpress-ser.yaml
  49. 49. Wordpress-ser.yaml ① apiVersion: apps/v1 #APIのバージョン kind: Service #オブジェクトの種類 metadata: name: wordpress #名前
  50. 50. Wordpress-ser.yaml ② spec: type: LoadBalancer #起動するサービスを指定 ports: #開くポートを指定 - port: 80 targetPort: 80 protocol: TCP
  51. 51. Wordpress-ser.yaml ③ selector: app: wordpress #どのpodに紐付けるかを指定
  52. 52. mysql Mysql-serviceWordpress-ser Wordpress Load Balancer Disk(mysql) Disk (wordpress)
  53. 53. サービスの公開 接続用のアドレスを取得、External-IPに表示 されたIPにブラウザで接続する # kubectl get svc
  54. 54. サービスの公開 言語の設定 IDとパスワードの 設定をすれば右の ような初期画面が 表示されます
  55. 55. まとめ
  56. 56. まとめ クライアント端末からGCPの操作をする 合は認証が必要 KubernetesクラスタではGCEインスタン が動いている Pod同士の接続にはserviceオブジェクトが 必要 考え方は難しいが、作業自体は簡単に kubernetesでwordpress公開ができる

×