IBM Cloud Object Storage 내의 컨텐츠를 정적 웹 사이트로 공개
6625 단어 ICOS
IBM Cloud Object Storage(ICOS)에 구성된 정적 컨텐츠를 웹 사이트에 공개하는 방법입니다.
ICOS에는 웹 호스트 기능(이하 참조)이 없기 때문에 Nginx를 반전 에이전트로 사용합니다.
IBM Cloud Docs 참조https://console.bluemix.net/docs/services/cloud-object-storage/iam/public-access.html#static-website-hosting
IBM Cloud Object Storage does not support automatic static website hosting, but it is possible to manually configure a web server and use it to serve publically accessible content hosted in Object Storage. For more information, see this tutorial.
사실 이 페이지https://www.ibm.com/blogs/bluemix/2017/03/static-websites-cloud-object-storage-cos/에 조작 방법이 적혀 있는데, 정보가 낡아서 지금 환경에서 시도해 봤어요.
또 보도에서'블루믹스 컨테이너'서비스를 사용했지만 IBM Cloud Kubernetes 서비스(IKS)는 이제 없어 사용하고 있다.
전제 조건
IBM Cloud의 디렉토리https://cloud.ibm.com/catalog/services/cloud-object-storage에서 서비스를 만듭니다.계획만 하면 돼.
세그먼트 만들기
만약 서비스가 다 된다면, 나는 물통을 하나 만들 것이다.'회복력'과'로케이션'을 좋아하세요.
정보 생성
"서비스 자격 정보"에서 새로운 자격 정보를 추가합니다.
이후에 s3cmd로 조작해야 하기 때문에 옵션에 {"HMAC":진짜}를 쓰는 것을 잊지 마십시오.
이것을 기입해서 접근 키와 기밀 키를 생성합니다.
자격 정보가 만들어졌으니 보여주면 방문키와 비밀키가 만들어진 게 확실하다.
s3cmd 설정
다음은 명령 작업입니다.
s3cmd에서 ICOS의 파일을 처리하기 위해 먼저
~/.s3cfg
파일을 수정합니다.아래 명령을 클릭하면 방문키, 비밀키, 구역, 단점 등을 입력한다.
$ s3cmd --configure
다음은 샘플의 설정 예이다.https://gist.githubusercontent.com/greyhoundforty/a4a9d80a942d22a8a7bf838f7abbcab2/raw/05ad584edee4370f4c252e4f747abb118d0075cb/example.s3cfg
끝점은 선택한 회복력, 위치에 따라 다릅니다.
ICOS 세부 화면의 끝에서 확인할 수 있습니다.
$ s3cmd ls
두드려 만든 물통 일람표가 나오면 OK.새 객체 업로드 및 Public 공개
적당한 디렉터리에서 아래 명령을 눌러 주십시오.필요에 따라 파일 이름을 변경합니다.
후반부는
s3://バケット名/オブジェクト名
.$ s3cmd --acl-public put index.html s3://MyBucket/index.html
upload: 'index.html' -> 's3://MyBucket/index.html' [1 of 1]
508 of 508 100% in 1s 323.45 B/s done
Public URL of the object is: http://s3.us-south.objectstorage.softlayer.net/MyBucket/index.html
이렇게 하면 ICOS에 올리고 &Public에 공개할 수 있다.마지막으로 작성된 Public URL에 액세스하면파일을 볼 수 있습니다.
https://s3.us-south.objectstorage.softlayer.net/MyBucket/index.html
참고로 업로드된 객체를 Public 공개로 변경하려면 다음 명령을 사용합니다.
s3cmd setacl --acl-public s3://MyBucket/index.html
Nginx를 역방향 에이전트로 구성Nginx는 컨테이너로 제작한 뒤 IKS에서 이동한다.
NGNx 컨테이너 작성
먼저 Docker file을 작성합니다.
FROM nginx:latest
COPY ./default.conf /etc/nginx/conf.d/
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
다음은default입니다.다음과 같이 conf 파일을 만듭니다.default.conf
server {
listen 80 default_server;
add_header Strict-Transport-Security "max-age=31557600; includeSubDomains";
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Xss-Protection "1";
location / {
set $s3_bucket 's3.us-south.objectstorage.softlayer.net/MyBucket/index.html';
index index.html;
proxy_http_version 1.1;
proxy_set_header Host $s3_bucket;
proxy_set_header Authorization ”;
proxy_hide_header x-amz-id-2;
proxy_hide_header x-amz-request-id;
proxy_hide_header Set-Cookie;
proxy_ignore_headers "Set-Cookie";
proxy_buffering off;
proxy_intercept_errors on;
resolver 8.8.8.8 valid=300s;
resolver_timeout 10s;
proxy_pass https://$s3_bucket;
}
}
두 파일이 완성되면 docker build이 진행됩니다.$ docker build --tag XXXXXX/my-nginx .
작성이 완료되면 Docker Hub 키를 누릅니다.$ docker push XXXXXX/my-nginx
IKS에서 컨테이너 분리그냥 빨리 공개하고 싶어서 yaml 파일은 안 쓰고 지령으로 하면 돼요.
먼저 Deployment를 만듭니다.
$ kubectl run nginx-deployment --image=XXXXXX/my-nginx
다음은 서비스 내보내기입니다.기존 기사가 사용자 정의 도메인을 가져왔기 때문에 인그레이스에서 공개하려고 했는데 여러 가지 이유로 노드포트에서 공개하게 됐기 때문이다.
$ kubectl expose deployment/nginx-deployment --type=NodePort --port=80 --name=nginx-service --target-port=80
동작 확인IKS의 Public IP와 Nodeport에 공개된 포트를 확인한 후 액세스를 시도합니다.
# クラスターのPublic IPの確認
$ ibmcloud ks workers クラスタ名
# NodePortのポート確認
$ kubectl get svc
액세스http://<IP_address>:<NodePort>
가 되면 Nginx ICOS를 통한 파일이 공개된 것을 확인할 수 있을 것이라고 생각합니다.
Reference
이 문제에 관하여(IBM Cloud Object Storage 내의 컨텐츠를 정적 웹 사이트로 공개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kissyy/items/89f459bd08d5b8b35069텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)