510 Views
May 29, 23
スライド概要
2019年11月21日 ビヨンド勉強会#21
株式会社ビヨンド システムソリューション部 運用管理課
岡崎 潤一郎
日本・中国・カナダを拠点に、AWS や GCP・Azure などのマルチクラウドに対応した、クラウド / サーバーの構築・移行、24時間365日の運用保守 / 監視、負荷テスト、Webシステム開発、サーバーサイド / API 開発 など、クラウド / サーバーに特化したサービスをご提供いたします。 ● コーポレートサイト https://beyondjapan.com ● YouTube https://www.youtube.com/c/beyomaruch ● X https://x.com/beyondjapaninfo ● Instagram https://www.instagram.com/beyondjapan_24365
Kubernetesでサイトを立ち上げるためのエトセトラ 株式会社ビヨンド 運用管理課 岡崎 潤一郎 2019/11/20
自己紹介 岡崎 潤一郎 運用管理課 サブリーダー 運用から構築、移設まで幅広く実施 MSPJマイグレーションコンペ2連覇 最近の悩み:体重が減らない
Agenda Kubernetesでwordpressを構築する流れ 利用したクラウド・サービス 今回実施した内容 まとめ
ちなみに
Kubernetesってどう読みます??
Kubernetesの読み方 クバネテス クーベネティス クバネティス
Kubernetesの語源 ギリシャ語 パイロット、航海長
Kubernetesでwordpressを 構築する流れ
今回の目的 KubernetesでWordPressをインストール
今回利用したクラウドとサービス
今回実施した内容 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
これから実施する内容① 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
自身のクライアント環境にツールインストール① レポジトリ追加 # 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
自身のクライアント環境にツールインストール② インストール # yum install google-cloud-sdk kubectl
これから実施する内容② 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
クライアント端末からGCPコンソールへ接続 GCPへ接続設定を追加 # gcloud init 表示されたURLに自身のGCPアカウントでログイン&許可 利用するプロジェクトとデフォルトのリージョンを選択
これから実施する内容③ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
Kubernetesクラスタ作成 kubernetesクラスタを作成 # gcloud container clusters create “作成したいクラスタ名” > --num-nodes=“任意のGCEホスト数”
これから実施する内容④ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
MySQLとWordpress用のストレージ作成 MySQL用のディスクを作成、リージョンを求められるので選択 # gcloud compute disks create --size “任意のサイズ” “任意の名前” Wordpress用のディスクを作成、リージョンを求められるので選択 # gcloud compute disks create --size “任意のサイズ” “任意の名前”
これから実施する内容⑤ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
mysql Disk(mysql) Disk (wordpress)
MySQLとWordpressのセットアップ① MySQL用のパスワードをkubernetes内部の Kubernetes secretと呼ばれる値に格納する # kubectl create secret generic mysql > --from-literal=password=“任意のパスワード”
MySQLとWordpressのセットアップ② MySQL用のマニフェストファイル「mysql.yaml」から MySQLをデプロイ # kubectl create -f mysql.yaml
mysql.yaml① apiVersion: apps/v1 #APIのバージョン kind: Deployment #オブジェクトの種類 metadata: #オブジェクト判別する値 name: mysql # 名前
mysql.yaml② spec: replicas: 1 #podの数(デフォルトは1) selector: #どのpodを起動するか matchLabels: app: mysql #app:mysqlラベルのものを起動
mysql.yaml③ template: #作成されるpodのテンプレート metadata: labels: app: mysql # ラベル付け
mysql.yaml④ spec: containers: - image: mysql:5.6 #コンテナイメージ name: mysql #名前
mysql.yaml⑤ env: # 変数(mysql_root_passwordに挿入) - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: #先程作成したsecretの値 name: mysql key: password
mysql.yaml⑥ ports: # 開くポート - containerPort: 3306 name: mysql volumeMounts: #マウントするディスクとポイント - name: mysql-persistent-storage mountPath: /var/lib/mysql
mysql.yaml⑦ volumes: #mysqlのデータを保存するディスク - name: mysql-persistent-storage #名前 gcePersistentDisk: pdName: "mysql用のディスク" fsType: ext4 #ファイルシステム
mysql Disk(mysql) Disk (wordpress)
MySQLとWordpressのセットアップ② MySQL接続用のマニフェストファイル「mysqlservice.yaml」をデプロイ # kubectl create -f mysql-service.yaml
mysql-service.yaml① apiVersion: apps/v1 #APIのバージョン kind: Service #オブジェクトの種類 metadata: name: mysql #作成するサービスの名前
mysql-service.yaml② spec: type: ClusterIP #サービスの公開方法を指定 ports: - port: 3306 #開くポート番号 selector: app: mysql #どのpodに紐付けるかを指定
Mysql-service mysql Disk(mysql) Disk (wordpress)
MySQLとWordpressのセットアップ② Wordpress用のマニフェストファイル 「wordpress.yaml」からwordpressをデプロイ # kubectl create -f wordpress.yaml
wordpress.yaml① apiVersion: apps/v1 #APIのバージョン kind: Deployment #オブジェクトの種類 metadata: name: wordpress #名前
wordpress.yaml② spec: replicas: 1 #起動するpodの数 selector: matchLabels: #app: wordpressラベルのついたものを起動 app: wordpress
wordpress.yam③ template: metadata: labels: app: wordpress #ラベル付け
wordpress.yaml ④ spec: containers: - image: wordpress #コンテナイメージ name: wordpress #名前
wordpress.yaml ⑤ env: - name: WORDPRESS_DB_HOST value: mysql:3306 #データベースへの接続を指定 - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql key: password
wordpress.yaml ⑥ ports: - containerPort: 80 #開くポートの指定 name: wordpress
wordpress.yaml ⑦ volumeMounts: # マウントポイントを指定 - name: wordpress-persistent-storage mountPath: /var/www/html
wordpress.yaml ⑧ volumes: #マウントするボリュームを指定 - name: wordpress-persistent-storage gcePersistentDisk: pdName: ”wordpress用のディスク” fsType: ext4 #ファイルシステム
Mysql-service wordpress mysql Disk(mysql) Disk (wordpress)
これから実施する内容④ 自身のクライアント環境にツールインストール クライアント端末からGCPコンソールへ接続 Kubernetesクラスタ作成 MySQLとWordpress用のストレージ作成 MySQLとWordpressのセットアップ サービス公開
サービスの公開 Wordpress公開用のマニフェストファイル「wordpressser.yaml」をデプロイ # kubectl create -f wordpress-ser.yaml
Wordpress-ser.yaml ① apiVersion: apps/v1 #APIのバージョン kind: Service #オブジェクトの種類 metadata: name: wordpress #名前
Wordpress-ser.yaml ② spec: type: LoadBalancer #起動するサービスを指定 ports: #開くポートを指定 - port: 80 targetPort: 80 protocol: TCP
Wordpress-ser.yaml ③ selector: app: wordpress #どのpodに紐付けるかを指定
Load Balancer Wordpress-ser Wordpress Mysql-service mysql Disk(mysql) Disk (wordpress)
サービスの公開 接続用のアドレスを取得、External-IPに表示 されたIPにブラウザで接続する # kubectl get svc
サービスの公開 言語の設定 IDとパスワードの 設定をすれば右の ような初期画面が 表示されます
まとめ
クライアント端末からGCPの操作をす る場合は認証が必要 まとめ KubernetesクラスタではGCEインスタ ンスが動いている Pod同士の接続にはserviceオブジェク トが必要 考え方は難しいが、作業自体は簡単に kubernetesでwordpress公開ができる