💨

LocalStackを k8s で実行して ローカルのS3をaws cliで触ってみる

2022/02/10に公開

k8s 初心者としては helm というのがあまりよくわかっていないが、どうやらパッケージマネージャだと思えばよいらしい。herokuとまぎらわしいと思ってるのは自分だけ。
一番下に貼った参考URLに紹介されている方法でS3を起動してaws-cliからbucket作成をしてみる。

terminal
$ helm repo add localstack-charts https://localstack.github.io/helm-charts
"localstack-charts" has been added to your repositories
$ helm repo list
NAME             	URL
localstack-charts	https://localstack.github.io/helm-charts

ちゃんとrepoの設定ができた模様。yumやaptと同じと思えばいいかな。

localstackでs3を実行してみる。ConfigMapでVolumeマウントができるのは知ってたけど、initスクリプトをマウントして実行する形に持っていってあるというのを実際に見たのは初めて。おもしろい。けど、今はやらないでも良さそう。

$ helm upgrade localstack localstack-charts/localstack \
--install --version 0.3.7 --set startService="s3" --set service.edgeService.nodePort=300000 --wait
Release "localstack" has been upgraded. Happy Helming!
NAME: localstack
LAST DEPLOYED: Thu Feb 10 16:35:32 2022
NAMESPACE: default
STATUS: deployed
REVISION: 2
NOTES:
1. Get the application URL by running these commands:
  export NODE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services localstack)
  export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
  echo http://$NODE_IP:$NODE_PORT

起動まで一瞬とはいかなかったけど無事起動した模様。
aws-cliのコンテナでbashを起動して aws cliでmake bucketしてみる。

terminal
$ kubectl run awscli -it --rm --image amazon/aws-cli --command bash
If you don't see a command prompt, try pressing enter.
aws-cli container
bash-4.2# aws configure set aws_access_key_id localstack
bash-4.2# aws configure set aws_secret_access_key localstack
bash-4.2# aws configure set region local
bash-4.2# LOCALSTACK_ENDPOINT="http://localstack:4566"
bash-4.2# aws s3 mb s3://test --endpoint $LOCALSTACK_ENDPOINT
make_bucket: test
bash-4.2# aws s3 ls --endpoint $LOCALSTACK_ENDPOINT
2022-02-10 07:42:41 test

おお、ちゃんとできてる。

[参考]
https://developer.mamezou-tech.com/containers/k8s/tutorial/app/localstack/

Discussion