helmでwordpressをいれてみた

この前[はじめてACSにphpmydaminをテストでたててみた](https://qiita.com/smallpalace/items/1bbedef1f999345fcf8b)ところ、
Aplication Gatewayのテスト用で、もう一個テストしたいのでサイトがほしいということでhelmつかってみたので記録しておきます。（Aplication Gatewayからだけ許可する感じにACSクラスタのセキュリティグループをつかってかけると直IPでこれなくなりそう）

helmの入れ方は公式にあるとおりバイナリ配置してhelm initうつかんじに。
https://docs.helm.sh/using_helm/#installing-helm

設定できる項目などをinspectで一応確認

```
$ helm inspect stable/wordpress
```
チャートのリポジトリを確認するならtemplateの下とvalues.yamlあたりを見るとマニフェストの情報があるようです。
https://github.com/helm/charts/blob/master/stable/wordpress/values.yaml
https://github.com/helm/charts/blob/master/stable/wordpress/templates/deployment.yaml
READMEはinspectで表示される内容とおなじ。
https://github.com/helm/charts/tree/master/stable/wordpress

他にも色々stableがあってminecraftとか入れようか若干まよいました。
https://github.com/helm/charts/tree/master/stable/

事前に既存の他でサービス作成して使ってるDBにスキーマ作って接続情報をsetオプションで指定することに。

サンプルコマンドで外部データベース接続するタイプがあったのと、
サービスがLoadbalancer指定だったのでまあACSだし普通にEXTERNAL-IPが振られるので心配はなさそうということで
configつくって読ませるのが面倒だったので以下のように実行

```
$ helm install stable/wordpress \
>     --set mariadb.enabled=false,externalDatabase.host=external-ip-database.default.svc.cluster.local,externalDatabase.user=root,externalDatabase.password=*****,externalDatabase.database=wordpress,externalDatabase.port=3306
NAME:   callous-opossum
LAST DEPLOYED: Fri Jul 20 07:31:15 2018
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/Service
NAME                       TYPE          CLUSTER-IP  EXTERNAL-IP  PORT(S)                     AGE
callous-opossum-wordpress  LoadBalancer  10.0.5.111  <pending>    80:31592/TCP,443:32246/TCP  2s

==> v1beta1/Deployment
NAME                       DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
callous-opossum-wordpress  1        1        1           0          2s

==> v1/Pod(related)
NAME                                        READY  STATUS   RESTARTS  AGE
callous-opossum-wordpress-1243178376-cflxh  0/1    Pending  0         2s

==> v1/Secret
NAME                        TYPE    DATA  AGE
callous-opossum-externaldb  Opaque  1     3s
callous-opossum-wordpress   Opaque  2     3s

==> v1/PersistentVolumeClaim
NAME                       STATUS   VOLUME   CAPACITY  ACCESS MODES  STORAGECLASS  AGE
callous-opossum-wordpress  Pending  default  2s

NOTES:
1. Get the WordPress URL:

  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace default -w callous-opossum-wordpress'

  export SERVICE_IP=$(kubectl get svc --namespace default callous-opossum-wordpress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  echo http://$SERVICE_IP/admin

2. Login with the following credentials to see your blog

  echo Username: user
  echo Password: $(kubectl get secret --namespace default callous-opossum-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)
```
戻り値に作成されたリソースとURL生成の方法とログインパスワードを出力するコマンドが示されてたのでそのとおりに取得して
ログインできました。

できてるっぽいリソースを見たところ以下のかんじに。（以前つくったやつも混ざっててすみません）

```
$ kubectl get svc,deploy,secret,pvc,pv --namespace default -o wide

NAME                            CLUSTER-IP    EXTERNAL-IP      PORT(S)                      AGE       SELECTOR
svc/callous-opossum-wordpress   10.0.5.111    52.xxx.xxx.xx    80:31592/TCP,443:32246/TCP   45m       app=callous-opossum-wordpress
svc/external-ip-database        10.0.187.44   <none>           3306/TCP                     2d        <none>
svc/kubernetes                  10.0.0.1      <none>           443/TCP                      14d       <none>
svc/phpmyadmin-front            10.0.54.158   40.xxx.xxx.xxx   80:31464/TCP                 3d        app=phpmyadmin,run=phpmyadmin

NAME                               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE       CONTAINER(S)                IMAGE(S)                                     SELECTOR
deploy/callous-opossum-wordpress   1         1         1            1           45m       callous-opossum-wordpress   docker.io/bitnami/wordpress:4.9.7-debian-9   app=callous-opossum-wordpress
deploy/phpmyadmin                  1         1         1            1           3d        phpmyadmin                  phpmyadmin/phpmyadmin                        run=phpmyadmin

NAME                                                      TYPE                                  DATA      AGE
secrets/callous-opossum-externaldb                        Opaque                                1         45m
secrets/callous-opossum-wordpress                         Opaque                                2         45m
secrets/default-token-twh7p                               kubernetes.io/service-account-token   3         14d
secrets/mysecret                                          Opaque                                2         10d
secrets/plundering-stoat-kube-state-metrics-token-fpkqr   kubernetes.io/service-account-token   3         54m

NAME                            STATUS    VOLUME                                     CAPACITY   ACCESSMODES   STORAGECLASS   AGE
pvc/callous-opossum-wordpress   Bound     pvc-xxxxxx   10Gi       RWO           default        45m

NAME                                          CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS    CLAIM                               STORAGECLASS   REASON    AGE
pv/pvc-xxxxxx   10Gi       RWO           Delete          Bound     default/callous-opossum-wordpress   default                  44m
```
かるく認識できている意味を書くと、
svcがserviceでACS上のロードバランサのIPもってるやつとかバックエンドのDBのエンドポイントとかが表示されています。
deployはDeploymentでPodをいくつどのバージョンとイメージでたててるか
secretsはパスワードとかの暗号化して保存してる設定ファイルみたいなものでPodが読み込むやつ
pvはフィジカルボリュームで、pvcはフィジカルボリュームにたいするPodからの要求という抽象化レイヤをはさんで疎結合にするためのしくみらしい。
pvcはazurediskでできるようでした。Access Modes: RWO（ReadWriteOnce）なので複数からマウントできないやつ。（むかしAzureFileでやったときはReadWriteManyでできてた）

```
$ kubectl describe pvc callous-opossum-wordpress
Name:           callous-opossum-wordpress
Namespace:      default
StorageClass:   default
Status:         Bound
Volume:         pvc-xxxxxx
Labels:         app=callous-opossum-wordpress
                chart=wordpress-2.1.1
                heritage=Tiller
                release=callous-opossum
Annotations:    pv.kubernetes.io/bind-completed=yes
                pv.kubernetes.io/bound-by-controller=yes
                volume.beta.kubernetes.io/storage-provisioner=kubernetes.io/azure-disk
Capacity:       10Gi
Access Modes:   RWO
Events:
  FirstSeen     LastSeen        Count   From                            SubObjectPath   Type            Reason                  Message
  ---------     --------        -----   ----                            -------------   --------        ------                  -------
  56m           56m             1       persistentvolume-controller                     Normal          ProvisioningSucceeded   Successfully provisioned volume pvc-xxxxxx using kubernetes.io/azure-disk

$ kubectl describe pv 
Name:           pvc-xxxxxx
Labels:         <none>
Annotations:    pv.kubernetes.io/bound-by-controller=yes
                pv.kubernetes.io/provisioned-by=kubernetes.io/azure-disk
                volumehelper.VolumeDynamicallyCreatedByKey=azure-disk-dynamic-provisioner
StorageClass:   default
Status:         Bound
Claim:          default/callous-opossum-wordpress
Reclaim Policy: Delete
Access Modes:   RWO
Capacity:       10Gi
Message:
Source:
    Type:               AzureDisk (an Azure Data Disk mount on the host and bind mount to the pod)
    DiskName:           tstacsk8s--tstacsk8s-xxxx-dy-pvc-xxxxxx
    DiskURI:            https://xxxxx.blob.core.windows.net/4093767071/tstacsk8s--tstacsk8s-xxxx-dy-pvc-xxxx.vhd
    Kind:               Dedicated
    FSType:             ext4
    CachingMode:        ReadWrite
    ReadOnly:           false
Events:                 <none>
```
テスト用なのでこんなところですみません。