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 클라우드 계정
  • Kubbernetes 클러스터를 만들기 위해서는 신용카드의 PAYG 계정을 등록해야 한다.
  • IBM Cloud CLI
  • IKS 작업에 필요합니다.
  • s3cmd
  • ICOS 작업에 사용됩니다.
  • 도입에 관해서는 여기에 상세하게 적혀 있다https://cloud.ibm.com/docs/services/cloud-object-storage/basics/multipart.html#using-s3cmd-cli-
  • Docker
  • Kubernetes CLI(kubectl)
  • Nginx 컨테이너를 생성할 때 필요합니다.
  • ICOS 파일 공개
    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를 통한 파일이 공개된 것을 확인할 수 있을 것이라고 생각합니다.

    좋은 웹페이지 즐겨찾기