DigitalOceanのManaged k8s clusterにhelmでwordpressをインストールしてみる。
Setup MySQL Database for wordpress
k8s clusterにインストール済みのMySQL(ns:mysql/svc:mysql)にwordpress用Databaseを作成
create database wordpress;
create user hogehoge identified by 'hogehoge';
GRANT ALL PRIVILEGES ON wordpress.* TO hogehoge@'%';
FLUSH PRIVILEGES;
Installing wordpress by Helm
helm repo追加
helm repo add bitnami https://charts.bitnami.com/bitnami
helm search repo wordpress
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/wordpress 12.2.8 5.8.2 Web publishing platform for building blogs and ...
chartファイル作成
wordpressUsername: hogehoge
wordpressPassword: "fugafuga"
existingSecret: ""
wordpressEmail: hogehoge@example.net
wordpressFirstName: wpadm
wordpressLastName: dok8s
wordpressBlogName: dok8s-blog
wordpressScheme: http
service:
type: ClusterIP
persistence:
enabled: true
storageClass: ""
accessModes:
- ReadWriteOnce
accessMode: ReadWriteOnce
size: 2Gi
dataSource: {}
existingClaim: ""
mariadb:
enabled: false
externalDatabase:
host: mysql.mysql
port: 3306
user: hogehoge
password: "fugafuga"
database: wordpress
existingSecret: ""
wordpressインストール
helm install wordpress bitnami/wordpress --version "12.2.8" --namespace wp -f wp-vlaues.yml
deploy確認
helm ls -n wp
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
wordpress wp 4 2022-01-03 11:40:44.150691 +0900 JST deployed wordpress-12.2.8 5.8.2
k8sステータス確認
kubectl -n wp get svc,pvc ✘ 1
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/wordpress ClusterIP 10.245.254.180 <none> 80/TCP,443/TCP 10d
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/wordpress Bound pvc-33e927a6-9613-45ba-9869-cdbf9844528a 2Gi RWO do-block-storage 10d
~/d/d/wp ❯❯❯ kubectl -n wp get all,pvc
NAME READY STATUS RESTARTS AGE
pod/wordpress-957c58756-9pzkl 2/2 Running 0 26h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/wordpress ClusterIP 10.245.254.180 <none> 80/TCP,443/TCP 10d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/wordpress 1/1 1 1 10d
NAME DESIRED CURRENT READY AGE
replicaset.apps/wordpress-6966f66f6d 0 0 0 10d
replicaset.apps/wordpress-76684bb9b7 0 0 0 3d
replicaset.apps/wordpress-78c65b8579 0 0 0 9d
replicaset.apps/wordpress-957c58756 1 1 1 26h
replicaset.apps/wordpress-d664cb64f 0 0 0 3d2h
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/wordpress Bound pvc-33e927a6-9613-45ba-9869-cdbf9844528a 2Gi RWO do-block-storage 10d
Add Ambassador host/mapping resources
外部から接続出来るようにAmbassadorのhost/mappingリソースを追加する。
Hostリソース追加
manifest作成
---
apiVersion: getambassador.io/v2
kind: Host
metadata:
name: dok8s-wp
namespace: ambassador
spec:
hostname: wp.dok8s.net
acmeProvider:
email: hogehoge@example.net
tlsSecret:
name: dok8s-wp-tls2-cert
---
apiVersion: getambassador.io/v2
kind: TLSContext
metadata:
name: tls-wp
namespace: ambassador
spec:
secret: dok8s-wp-tls2-cert
hosts:
- wp.dok8s.net
alpn_protocols: h2
manifest適用
kubectl apply -f dok8s-wp-host.yaml
Mappingリソース追加
manifest作成
---
apiVersion: getambassador.io/v2
kind: Mapping
metadata:
name: dok8s-wp
namespace: ambassador
spec:
prefix: /
host: wp.dok8s.net
service: http://wordpress.wp/
manifest適用
kubectl apply -f dok8s-wp-map.yaml
ステータス確認
kubectl -n ambassador get host dok8s-wp
NAME HOSTNAME STATE PHASE COMPLETED PHASE PENDING AGE
dok8s-wp wp.dok8s.net Ready 12d
kubectl -n ambassador get mapping dok8s-wp
NAME SOURCE HOST SOURCE PREFIX DEST SERVICE STATE REASON
dok8s-wp wp.dok8s.net / http://wordpress.wp/