kubernetes搭建minio作为阿里OSS的Gateway
source link: https://zhangrr.github.io/posts/20211126-kubernetes_minio_oss_gateway/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Kubernetes搭建minio作为阿里OSS的Gateway
阿里的云的 OSS 并不是完全版本的 AWS S3 兼容。
我们如果需要用 S3 协议访问 OSS,就比较麻烦了。
所以搭建一个 minio 来做网关,代理OSS,minio 是基本兼容S3的,所以这样曲线救国,通过 S3 协议访问 minio 来访问最后端的 OSS
这里还有一段故事:
Minio 中间有一版是支持 oss 的,但是后来 oss 改了协议,所以现在的最新版本 minio 反而是不支持代理 oss 的,我们必须手动作出镜像,放到镜像库里,然后阿里 ACK 再使用
首先去下载那一版直接支持oss的
wget http://dl.minio.org.cn/server/minio/release/linux-amd64/archive/minio.RELEASE.2020-04-15T19-42-18Z
chmod 755 minio.RELEASE.2020-04-15T19-42-18Z
这个文件比较宝贵,给个本地备份链接下载:
minio.RELEASE.2020-04-15T19-42-18Z
然后在当前目录编辑 Dockerfile ,因为 K8S 和 OSS 同一地域,所以用 OSS 私网域名:
FROM alpine:3.12
RUN apk add --update bash && rm -rf /var/cache/apk/*
COPY minio.RELEASE.2020-04-15T19-42-18Z /data/minio.RELEASE.2020-04-15T19-42-18Z
ENV MINIO_ACCESS_KEY=LTAI5tFFTbsxxxxxuLb
ENV MINIO_SECRET_KEY=t78PyGnHZilxxxxxdxBCjvNgtVC5Y
WORKDIR /data
EXPOSE 9000
CMD ["/data/minio.RELEASE.2020-04-15T19-42-18Z","gateway","oss","http://oss-cn-shanghai-internal.aliyuncs.com"]
# CMD /bin/sh -c "while true; do echo hi; sleep 10; done"
注意上面,MINIO_ACCESS_KEY 和 MINIO_SECRET_KEY 对应的是阿里云 OSS的 AccessKey ID 和 AccessKey Secret
打开阿里云网址,新建AccessKey ID 和 AccessKey Secret ,注意这东西只能看见一次,之后再也不能明文看了,所以第一次务必保存好!!!
https://ram.console.aliyun.com/manage/ak
然后还有 Dockerfile 的最后一行,八戒的习惯是保留一个死循环 shell,如果镜像 CMD 有问题,无法启动,就换成这个先启动,然后再进去调试。(经常有什么库错、链接搞不好需要修改)
docker build -t registry.cn-shanghai.aliyuncs.com/rendoumi/minio .
然后 push 上去
docker push registry.cn-shanghai.aliyuncs.com/rendoumi/minio
编写好Deployment和svc,如果想公开还可以写 ingress 向外暴露,自己公司用还是 port-forward 更安全
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: minio-deploy
labels:
app: minio
spec:
replicas: 1
selector:
matchLabels:
app: minio
template:
metadata:
labels:
app: minio
spec:
containers:
- name: minio
image: registry.cn-shanghai.aliyuncs.com/rendoumi/minio:latest
ports:
- containerPort: 9000
---
apiVersion: v1
kind: Service
metadata:
name: minio-svc
labels:
app: minio
spec:
ports:
- name: http
protocol: TCP
port: 9000
targetPort: 9000
selector:
app: minio
type: ClusterIP
然后开转发:
kubectl port-forward svc/minio-svc 9000:9000 &
用浏览器访问 http://localhost:9000 就可以了,还得输入一遍密码
这样就可以看到 OSS 的所有桶了
Minio的官方命令行客户端是 mc,使用方法如下:
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod 755 mc
./mc alias set minio http://minio-svc:9000 MINIO_ACCESS_KEY 和 MINIO_SECRET_KEY
./mc ls minio
minio 跑在容器外进行 OSS 代理的方法,注意不同地方,OSS 的域名改为公网的了:
#!/bin/sh
export MINIO_ACCESS_KEY=LTAI5tFFTbsxxxxxuLb
export MINIO_SECRET_KEY=t78PyGnHZilxxxxxdxBCjvNgtVC5Y
nohup ./minio.RELEASE.2020-04-15T19-42-18Z gateway oss http://oss-cn-shanghai.aliyuncs.com >/dev/null 2>&1 &
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK