Installing WordPress by helm

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/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です