この前はじめてACSにphpmydaminをテストでたててみたところ、
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>
テスト用なのでこんなところですみません。