「Kubernetesでサイトを立ち上げるためのエトセトラ」

510 Views

May 29, 23

スライド概要

2019年11月21日 ビヨンド勉強会#21
株式会社ビヨンド システムソリューション部 運用管理課
岡崎 潤一郎

profile-image

日本・中国・カナダを拠点に、AWS や GCP・Azure などのマルチクラウドに対応した、クラウド / サーバーの構築・移行、24時間365日の運用保守 / 監視、負荷テスト、Webシステム開発、サーバーサイド / API 開発 など、クラウド / サーバーに特化したサービスをご提供いたします。 ● コーポレートサイト https://beyondjapan.com ● YouTube https://www.youtube.com/c/beyomaruch ● X(Twitter) https://twitter.com/beyondjapaninfo ● Instagram https://www.instagram.com/beyondjapan_24365

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Kubernetesでサイトを立ち上げるためのエトセトラ 株式会社ビヨンド 運用管理課 岡崎 潤一郎 2019/11/20

2.

自己紹介 岡崎 潤一郎 運用管理課 サブリーダー 運用から構築、移設まで幅広く実施 MSPJマイグレーションコンペ2連覇 最近の悩み:体重が減らない

3.

Agenda Kubernetesでwordpressを構築する流れ 利用したクラウド・サービス 今回実施した内容 まとめ

4.

ちなみに

5.

Kubernetesってどう読みます??

6.

Kubernetesの読み方 クバネテス クーベネティス クバネティス

7.

Kubernetesの語源 ギリシャ語 パイロット、航海長

8.

Kubernetesでwordpressを 構築する流れ

9.

今回の目的 KubernetesでWordPressをインストール

10.

今回利用したクラウドとサービス

11.

今回実施した内容 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開

12.

これから実施する内容① 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開

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.

自身のクライアント環境にツールインストール② インストール # yum install google-cloud-sdk kubectl

15.

これから実施する内容② 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開

16.

クライアント端末からGCPコンソールへ接続 GCPへ接続設定を追加 # gcloud init 表示されたURLに自身のGCPアカウントでログイン&許可 利用するプロジェクトとデフォルトのリージョンを選択

17.

これから実施する内容③ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開

18.

Kubernetesクラスタ作成 kubernetesクラスタを作成 # gcloud container clusters create “作成したいクラスタ名” > --num-nodes=“任意のGCEホスト数”

20.

これから実施する内容④ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開

21.

MySQLとWordpress用のストレージ作成  MySQL用のディスクを作成、リージョンを求められるので選択 # gcloud compute disks create --size “任意のサイズ” “任意の名前”  Wordpress用のディスクを作成、リージョンを求められるので選択 # gcloud compute disks create --size “任意のサイズ” “任意の名前”

22.

これから実施する内容⑤ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開

23.

mysql Disk(mysql) Disk (wordpress)

24.

MySQLとWordpressのセットアップ① MySQL用のパスワードをkubernetes内部の Kubernetes secretと呼ばれる値に格納する # kubectl create secret generic mysql > --from-literal=password=“任意のパスワード”

25.

MySQLとWordpressのセットアップ② MySQL用のマニフェストファイル「mysql.yaml」から MySQLをデプロイ # kubectl create -f mysql.yaml

26.

mysql.yaml① apiVersion: apps/v1 #APIのバージョン kind: Deployment #オブジェクトの種類 metadata: #オブジェクト判別する値 name: mysql # 名前

27.

mysql.yaml② spec: replicas: 1 #podの数(デフォルトは1) selector: #どのpodを起動するか matchLabels: app: mysql #app:mysqlラベルのものを起動

28.

mysql.yaml③ template: #作成されるpodのテンプレート metadata: labels: app: mysql # ラベル付け

29.

mysql.yaml④ spec: containers: - image: mysql:5.6 #コンテナイメージ name: mysql #名前

30.

mysql.yaml⑤ env: # 変数(mysql_root_passwordに挿入) - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: #先程作成したsecretの値 name: mysql key: password

31.

mysql.yaml⑥ ports: # 開くポート - containerPort: 3306 name: mysql volumeMounts: #マウントするディスクとポイント - name: mysql-persistent-storage mountPath: /var/lib/mysql

32.

mysql.yaml⑦ volumes: #mysqlのデータを保存するディスク - name: mysql-persistent-storage #名前 gcePersistentDisk: pdName: "mysql用のディスク" fsType: ext4 #ファイルシステム

33.

mysql Disk(mysql) Disk (wordpress)

34.

MySQLとWordpressのセットアップ② MySQL接続用のマニフェストファイル「mysqlservice.yaml」をデプロイ # kubectl create -f mysql-service.yaml

35.

mysql-service.yaml① apiVersion: apps/v1 #APIのバージョン kind: Service #オブジェクトの種類 metadata: name: mysql #作成するサービスの名前

36.

mysql-service.yaml② spec: type: ClusterIP #サービスの公開方法を指定 ports: - port: 3306 #開くポート番号 selector: app: mysql #どのpodに紐付けるかを指定

37.

Mysql-service mysql Disk(mysql) Disk (wordpress)

38.

MySQLとWordpressのセットアップ② Wordpress用のマニフェストファイル 「wordpress.yaml」からwordpressをデプロイ # kubectl create -f wordpress.yaml

39.

wordpress.yaml① apiVersion: apps/v1 #APIのバージョン kind: Deployment #オブジェクトの種類 metadata: name: wordpress #名前

40.

wordpress.yaml② spec: replicas: 1 #起動するpodの数 selector: matchLabels: #app: wordpressラベルのついたものを起動 app: wordpress

41.

wordpress.yam③ template: metadata: labels: app: wordpress #ラベル付け

42.

wordpress.yaml ④ spec: containers: - image: wordpress #コンテナイメージ name: wordpress #名前

43.

wordpress.yaml ⑤ env: - name: WORDPRESS_DB_HOST value: mysql:3306 #データベースへの接続を指定 - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql key: password

44.

wordpress.yaml ⑥ ports: - containerPort: 80 #開くポートの指定 name: wordpress

45.

wordpress.yaml ⑦ volumeMounts: # マウントポイントを指定 - name: wordpress-persistent-storage mountPath: /var/www/html

46.

wordpress.yaml ⑧ volumes: #マウントするボリュームを指定 - name: wordpress-persistent-storage gcePersistentDisk: pdName: ”wordpress用のディスク” fsType: ext4 #ファイルシステム

47.

Mysql-service wordpress mysql Disk(mysql) Disk (wordpress)

48.

これから実施する内容④ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開

49.

サービスの公開 Wordpress公開用のマニフェストファイル「wordpressser.yaml」をデプロイ # kubectl create -f wordpress-ser.yaml

50.

Wordpress-ser.yaml ① apiVersion: apps/v1 #APIのバージョン kind: Service #オブジェクトの種類 metadata: name: wordpress #名前

51.

Wordpress-ser.yaml ② spec: type: LoadBalancer #起動するサービスを指定 ports: #開くポートを指定 - port: 80 targetPort: 80 protocol: TCP

52.

Wordpress-ser.yaml ③ selector: app: wordpress #どのpodに紐付けるかを指定

53.

Load Balancer Wordpress-ser Wordpress Mysql-service mysql Disk(mysql) Disk (wordpress)

54.

サービスの公開 接続用のアドレスを取得、External-IPに表示 されたIPにブラウザで接続する # kubectl get svc

55.

サービスの公開 言語の設定 IDとパスワードの 設定をすれば右の ような初期画面が 表示されます

56.

まとめ

57.

クライアント端末からGCPの操作をす る場合は認証が必要 まとめ KubernetesクラスタではGCEインスタ ンスが動いている Pod同士の接続にはserviceオブジェク トが必要 考え方は難しいが、作業自体は簡単に kubernetesでwordpress公開ができる