Files
3engines_doc/site/kubernetes/Install-and-run-NooBaa-on-Kubernetes-cluster-in-single-and-multicloud-environment-on-3Engines-Cloud.html.html
2025-06-19 21:50:45 +05:30

138 lines
83 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Documentation for 3Engines services and products"><meta name=author content=3Engines><link rel=canonical href=https://docs.3Engines.com/kubernetes/Install-and-run-NooBaa-on-Kubernetes-cluster-in-single-and-multicloud-environment-on-3Engines-Cloud.html.html><link rel=icon href=../assets/favicon.ico><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.6.14"><title>Install and run NooBaa on Kubernetes cluster in single- and multicloud-environment on 3Engines Cloud🔗 - 3Engines Documentation</title><link rel=stylesheet href=../assets/stylesheets/main.342714a4.min.css><link rel=stylesheet href=../assets/stylesheets/palette.06af60db.min.css><script src=https://unpkg.com/iframe-worker/shim></script><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../stylesheets/extra.css><script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> <link href="../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}</style> <script src="../assets/javascripts/glightbox.min.js"></script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=blue-grey data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#install-and-run-noobaa-on-kubernetes-cluster-in-single-and-multicloud-environment-on-3engines-cloud class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../index.html title="3Engines Documentation" class="md-header__button md-logo" aria-label="3Engines Documentation" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> 3Engines Documentation </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Install and run NooBaa on Kubernetes cluster in single- and multicloud-environment on 3Engines Cloud🔗 </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=blue-grey data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <a href=javascript:void(0) class="md-search__icon md-icon" title=Share aria-label=Share data-clipboard data-clipboard-text data-md-component=search-share tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg> </a> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> <div class=md-search__suggest data-md-component=search-suggest></div> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../index.html class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../cloud/cloud.html.html class=md-tabs__link> Cloud </a> </li> <li class=md-tabs__item> <a href=../datavolume/datavolume.html.html class=md-tabs__link> Data Volume </a> </li> <li class=md-tabs__item> <a href=../networking/networking.html.html class=md-tabs__link> Networking </a> </li> <li class=md-tabs__item> <a href=../s3/s3.html.html class=md-tabs__link> S3 </a> </li> <li class=md-tabs__item> <a href=../windows/windows.html.html class=md-tabs__link> Windows </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../index.html title="3Engines Documentation" class="md-nav__button md-logo" aria-label="3Engines Documentation" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> 3Engines Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../index.html class=md-nav__link> <span class=md-ellipsis> Home </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex=0> <span class=md-ellipsis> Cloud </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Cloud </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../cloud/cloud.html.html class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../cloud/Dashboard-Overview-Project-Quotas-And-Flavors-Limits-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Dashboard Overview Project Quotas And Flavors Limits on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-access-the-VM-from-OpenStack-console-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to access the VM from OpenStack console on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-clone-existing-and-configured-VMs-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to clone existing and configured VMs on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-fix-unresponsive-console-issue-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to fix unresponsive console issue on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-generate-ec2-credentials-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to generate and manage EC2 credentials on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-generate-or-use-Application-Credentials-via-CLI-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to generate or use Application Credentials via CLI on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-use-GUI-in-Linux-VM-on-3Engines-Cloud-and-access-it-from-local-Linux-computer.html.html class=md-nav__link> <span class=md-ellipsis> How to Use GUI in Linux VM on 3Engines Cloud and access it From Local Linux Computer </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-To-Create-a-New-Linux-VM-With-NVIDIA-Virtual-GPU-in-the-OpenStack-Dashboard-Horizon-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How To Create a New Linux VM With NVIDIA Virtual GPU in the OpenStack Dashboard Horizon on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-use-Docker-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to install and use Docker on Ubuntu 24.04 </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-use-Security-Groups-in-Horizon-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to use Security Groups in Horizon on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-create-key-pair-in-OpenStack-Dashboard-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create key pair in OpenStack Dashboard on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-create-new-Linux-VM-in-OpenStack-Dashboard-Horizon-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create new Linux VM in OpenStack Dashboard Horizon on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-install-Python-virtualenv-or-virtualenvwrapper-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to install Python virtualenv or virtualenvwrapper on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-start-a-VM-from-a-snapshot-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to start a VM from a snapshot on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/Status-Power-State-and-dependences-in-billing-of-instances-VMs-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Status Power State and dependencies in billing of instance VMs on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-upload-your-custom-image-using-OpenStack-CLI-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to upload your custom image using OpenStack CLI on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/VM-created-with-option-Create-New-Volume-No-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> VM created with option Create New Volume No on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/VM-created-with-option-Create-New-Volume-Yes-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> VM created with option Create New Volume Yes on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/What-is-an-OpenStack-domain-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> What is an OpenStack domain on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/What-is-an-OpenStack-project-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> What is an OpenStack project on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-create-a-Linux-VM-and-access-it-from-Windows-desktop-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create a Linux VM and access it from Windows desktop on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-create-a-Linux-VM-and-access-it-from-Linux-command-line-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create a Linux VM and access it from Linux command line on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/DNS-as-a-Service-on-3Engines-Cloud-Hosting.html.html class=md-nav__link> <span class=md-ellipsis> DNS as a Service on 3Engines Cloud Hosting </span> </a> </li> <li class=md-nav__item> <a href=../cloud/What-Image-Formats-are-available-in-OpenStack-3Engines-Cloud-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> What Image Formats are Available in OpenStack 3Engines Cloud cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-upload-custom-image-to-3Engines-Cloud-cloud-using-OpenStack-Horizon-dashboard.html.html class=md-nav__link> <span class=md-ellipsis> How to upload custom image to 3Engines Cloud cloud using OpenStack Horizon dashboard </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-create-Windows-VM-on-OpenStack-Horizon-and-access-it-via-web-console-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create Windows VM on OpenStack Horizon and access it via web console on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-transfer-volumes-between-domains-and-projects-using-Horizon-dashboard-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to transfer volumes between domains and projects using Horizon dashboard on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/Spot-instances-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Spot instances on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-create-instance-snapshot-using-Horizon-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create instance snapshot using Horizon on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-start-a-VM-from-instance-snapshot-using-Horizon-dashboard-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to start a VM from instance snapshot using Horizon dashboard on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/How-to-create-a-VM-using-the-OpenStack-CLI-client-on-3Engines-Cloud-cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create a VM using the OpenStack CLI client on 3Engines Cloud cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/OpenStack-user-roles-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> OpenStack User Roles on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/Resizing-a-virtual-machine-using-OpenStack-Horizon-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Resizing a virtual machine using OpenStack Horizon on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../cloud/Block-storage-and-object-storage-performance-limits-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Block storage and object storage performance limits on 3Engines Cloud </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3> <label class=md-nav__link for=__nav_3 id=__nav_3_label tabindex=0> <span class=md-ellipsis> Data Volume </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=false> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Data Volume </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../datavolume/datavolume.html.html class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-attach-a-volume-to-VM-less-than-2TB-on-Linux-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to attach a volume to VM less than 2TB on Linux on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-attach-a-volume-to-VM-more-than-2TB-on-Linux-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to attach a volume to VM more than 2TB on Linux on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/Ephemeral-vs-Persistent-storage-option-Create-New-Volume-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Ephemeral vs Persistent storage option Create New Volume on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-export-a-volume-over-NFS-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to export a volume over NFS on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-export-a-volume-over-NFS-outside-of-a-project-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to export a volume over NFS outside of a project on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-extend-the-volume-in-Linux-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to extend the volume in Linux on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-mount-object-storage-in-Linux-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to mount object storage in Linux on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-move-data-volume-between-two-VMs-using-OpenStack-Horizon-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to move data volume between two VMs using OpenStack Horizon on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-many-objects-can-I-put-into-Object-Storage-container-bucket-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How many objects can I put into Object Storage container bucket on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-create-volume-Snapshot-and-attach-as-Volume-on-Linux-or-Windows-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create volume Snapshot and attach as Volume on Linux or Windows on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/Volume-snapshot-inheritance-and-its-consequences-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Volume snapshot inheritance and its consequences on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-To-Create-Backup-Of-Your-Volume-From-Windows-Machine-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to Create Backup of Your Volume From Windows Machine on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-To-Attach-Volume-To-Windows-VM-On-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How To Attach Volume To Windows VM On 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-create-or-delete-volume-snapshot-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create or delete volume snapshot on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/How-to-restore-volume-from-snapshot-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to restore volume from snapshot on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../datavolume/Bootable-versus-non-bootable-volumes-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Bootable versus non-bootable volumes on 3Engines Cloud </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> Networking </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> Networking </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../networking/networking.html.html class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../networking/How-can-I-access-my-VMs-using-names-instead-of-IP-addresses-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How can I access my VMs using names instead of IP addresses on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/How-to-Add-or-Remove-Floating-IPs-to-your-VM-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to Add or Remove Floating IPs to your VM on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/Cannot-access-VM-with-SSH-or-PING-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Cannot access VM with SSH or PING on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/Cannot-ping-VM-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Cannot ping VM on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/How-to-connect-to-your-virtual-machine-via-SSH-in-Linux-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to connect to your virtual machine via SSH in Linux on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/How-to-create-a-network-with-router-in-Horizon-Dashboard-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to create a network with router in Horizon Dashboard on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/How-can-I-open-new-ports-port-80-for-http-for-my-service-or-instance-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How can I open new ports for http for my service or instance on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/Generating-a-SSH-keypair-in-Linux-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Generating an SSH keypair in Linux on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/How-to-add-SSH-key-from-Horizon-web-console-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to add SSH key from Horizon web console on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/How-is-my-VM-visible-in-the-internet-with-no-Floating-IP-attached-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How is my VM visible in the internet with no Floating IP attached on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/How-to-run-and-configure-Firewall-as-a-service-and-VPN-as-a-service-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to run and configure Firewall as a service and VPN as a service on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../networking/How-to-Import-SSH-Public-Key-to-OpenStack-Horizon-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to import SSH public key to OpenStack Horizon on 3Engines Cloud </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_5> <label class=md-nav__link for=__nav_5 id=__nav_5_label tabindex=0> <span class=md-ellipsis> S3 </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_5_label aria-expanded=false> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> S3 </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../s3/s3.html.html class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../s3/How-to-delete-large-S3-bucket-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to Delete Large S3 Bucket on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../s3/How-to-mount-object-storage-container-as-a-file-system-in-Linux-using-s3fs-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to Mount Object Storage Container as a File System in Linux Using s3fs on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../s3/Bucket-sharing-using-s3-bucket-policy-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Bucket sharing using s3 bucket policy on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../s3/How-to-use-Object-Storage-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to use Object Storage on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../s3/How-to-access-private-object-storage-using-S3cmd-or-boto3-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to access private object storage using S3cmd or boto3 on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../s3/How-To-Install-boto3-In-Windows-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to Install Boto3 in Windows on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../s3/Server-Side-Encryption-with-Customer-Managed-Keys-SSE-C-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Server-Side Encryption with Customer-Managed Keys (SSE-C) on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../s3/How-to-mount-object-storage-container-from-3Engines-Cloud-as-file-system-on-local-Windows-computer.html.html class=md-nav__link> <span class=md-ellipsis> How to mount object storage container from 3Engines Cloud as file system on local Windows computer </span> </a> </li> <li class=md-nav__item> <a href=../s3/How-to-install-s3cmd-on-Linux-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to install s3cmd on Linux on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../s3/How-to-access-object-storage-from-3Engines-Cloud-using-boto3.html.html class=md-nav__link> <span class=md-ellipsis> How to access object storage from 3Engines Cloud using boto3 </span> </a> </li> <li class=md-nav__item> <a href=../s3/How-to-access-object-storage-from-3Engines-Cloud-using-s3cmd.html.html class=md-nav__link> <span class=md-ellipsis> How to access object storage from 3Engines Cloud using s3cmd </span> </a> </li> <li class=md-nav__item> <a href=../s3/Configuration-files-for-s3cmd-command-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Configuration files for s3cmd command on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../s3/S3-bucket-object-versioning-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> S3 bucket object versioning on 3Engines Cloud </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_6> <label class=md-nav__link for=__nav_6 id=__nav_6_label tabindex=0> <span class=md-ellipsis> Windows </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_6_label aria-expanded=false> <label class=md-nav__title for=__nav_6> <span class="md-nav__icon md-icon"></span> Windows </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../windows/windows.html.html class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class=md-nav__item> <a href=../windows/How-to-access-a-VM-from-Windows-PuTTY-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to access a VM from Windows PuTTY on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../windows/Connecting-to-a-Windows-VM-via-RDP-through-a-Linux-bastion-host-port-forwarding-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Connecting to a Windows VM via RDP through a Linux bastion host port forwarding on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../windows/How-to-connect-to-a-virtual-machine-via-SSH-from-Windows-10-Command-Prompt-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to connect to a virtual machine via SSH from Windows 10 Command Prompt on 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../windows/How-To-Create-SSH-Key-Pair-In-Windows-On-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to Create SSH Key Pair in Windows 10 On 3Engines Cloud </span> </a> </li> <li class=md-nav__item> <a href=../windows/Can-I-change-my-password-through-RDP-on-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> Can I change my password through RDP on 3Engines Cloud? </span> </a> </li> <li class=md-nav__item> <a href=../windows/How-To-Create-SSH-Key-Pair-In-Windows-11-On-3Engines-Cloud.html.html class=md-nav__link> <span class=md-ellipsis> How to Create SSH Key Pair in Windows 11 On 3Engines Cloud </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="On this page"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> On this page </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#what-we-are-going-to-cover class=md-nav__link> <span class=md-ellipsis> What We Are Going To Cover🔗 </span> </a> </li> <li class=md-nav__item> <a href=#prerequisites class=md-nav__link> <span class=md-ellipsis> Prerequisites🔗 </span> </a> </li> <li class=md-nav__item> <a href=#install-noobaa-in-local-environment class=md-nav__link> <span class=md-ellipsis> Install NooBaa in local environment🔗 </span> </a> </li> <li class=md-nav__item> <a href=#apply-preliminary-configuration class=md-nav__link> <span class=md-ellipsis> Apply preliminary configuration🔗 </span> </a> </li> <li class=md-nav__item> <a href=#install-noobaa-on-the-kubernetes-cluster class=md-nav__link> <span class=md-ellipsis> Install NooBaa on the Kubernetes cluster🔗 </span> </a> </li> <li class=md-nav__item> <a href=#create-a-noobaa-backing-store class=md-nav__link> <span class=md-ellipsis> Create a NooBaa backing store🔗 </span> </a> <nav class=md-nav aria-label="Create a NooBaa backing store🔗"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#step-1-create-object-storage-bucket-on-waw3-1 class=md-nav__link> <span class=md-ellipsis> Step 1. Create object storage bucket on WAW3-1🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-2-set-up-ec2-credentials class=md-nav__link> <span class=md-ellipsis> Step 2. Set up EC2 credentials🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-3-create-a-new-noobaa-backing-store class=md-nav__link> <span class=md-ellipsis> Step 3. Create a new NooBaa backing store🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-4-create-a-bucket-class class=md-nav__link> <span class=md-ellipsis> Step 4. Create a Bucket Class🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-5-create-an-objectbucketclaim class=md-nav__link> <span class=md-ellipsis> Step 5. Create an ObjectBucketClaim🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-6-obtain-name-of-the-noobaa-bucket class=md-nav__link> <span class=md-ellipsis> Step 6. Obtain name of the NooBaa bucket🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-7-obtain-secret-for-the-noobaa-bucket class=md-nav__link> <span class=md-ellipsis> Step 7. Obtain secret for the NooBaa bucket🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-8-connect-to-noobaa-bucket-from-s3cmd class=md-nav__link> <span class=md-ellipsis> Step 8. Connect to NooBaa bucket from S3cmd🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-9-configure-s3cmd-to-access-noobaa class=md-nav__link> <span class=md-ellipsis> Step 9. Configure S3cmd to access NooBaa🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-10-testing-access-to-the-bucket class=md-nav__link> <span class=md-ellipsis> Step 10. Testing access to the bucket🔗 </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#connect-noobaa-in-a-multi-cloud-setup class=md-nav__link> <span class=md-ellipsis> Connect NooBaa in a multi-cloud setup🔗 </span> </a> <nav class=md-nav aria-label="Connect NooBaa in a multi-cloud setup🔗"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#step-1-multi-cloud-create-bucket-on-waw3-1 class=md-nav__link> <span class=md-ellipsis> Step 1 Multi-cloud. Create bucket on WAW3-1🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-1-multi-cloud-create-bucket-on-waw3-2 class=md-nav__link> <span class=md-ellipsis> Step 1 Multi-cloud. Create bucket on WAW3-2🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-2-multi-cloud-set-up-ec2-credentials class=md-nav__link> <span class=md-ellipsis> Step 2 Multi-cloud. Set up EC2 credentials🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-3-multi-cloud-create-backing-store-mirror-bs1-on-waw3-1 class=md-nav__link> <span class=md-ellipsis> Step 3 Multi-cloud. Create backing store mirror-bs1 on WAW3-1🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-3-multi-cloud-create-backing-store-mirror-bs2-on-waw3-2 class=md-nav__link> <span class=md-ellipsis> Step 3 Multi-cloud. Create backing store mirror-bs2 on WAW3-2🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-4-multi-cloud-create-a-bucket-class class=md-nav__link> <span class=md-ellipsis> Step 4 Multi-cloud. Create a Bucket Class🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-5-multi-cloud-create-an-objectbucketclaim class=md-nav__link> <span class=md-ellipsis> Step 5 Multi-cloud. Create an ObjectBucketClaim🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-6-multi-cloud-obtain-name-of-the-noobaa-bucket class=md-nav__link> <span class=md-ellipsis> Step 6 Multi-cloud. Obtain name of the NooBaa bucket🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-7-multi-cloud-obtain-secret-for-the-noobaa-bucket class=md-nav__link> <span class=md-ellipsis> Step 7 Multi-cloud. Obtain secret for the NooBaa bucket🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-8-multi-cloud-connect-to-noobaa-bucket-from-s3cmd class=md-nav__link> <span class=md-ellipsis> Step 8 Multi-cloud. Connect to NooBaa bucket from S3cmd🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-9-multi-cloud-configure-s3cmd-to-access-noobaa class=md-nav__link> <span class=md-ellipsis> Step 9 Multi-cloud. Configure S3cmd to access NooBaa🔗 </span> </a> </li> <li class=md-nav__item> <a href=#step-10-multi-cloud-testing-access-to-the-bucket class=md-nav__link> <span class=md-ellipsis> Step 10 Multi-cloud. Testing access to the bucket🔗 </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <h1 id=install-and-run-noobaa-on-kubernetes-cluster-in-single-and-multicloud-environment-on-3engines-cloud>Install and run NooBaa on Kubernetes cluster in single- and multicloud-environment on 3Engines Cloud<a href=#install-and-run-noobaa-on-kubernetes-cluster-in-single-and-multicloud-environment-on-brand-name title="Permalink to this headline">🔗</a><a class=headerlink href=#install-and-run-noobaa-on-kubernetes-cluster-in-single-and-multicloud-environment-on-3engines-cloud title="Permanent link">&para;</a></h1> <p><a href=https://www.noobaa.io/ >NooBaa</a> enables creating an abstracted S3 backend on Kubernetes. Such backend can be connected to multiple S3 backing stores e.g. in a multi-cloud setup, allowing for storage expandability or High Availability among other beneficial features.</p> <p>In this article you will learn the basics of using NooBaa</p> <blockquote> <ul> <li>how to install it on Kubernetes cluster</li> <li>how to create a NooBaa bucket backed by S3 object storage in the 3Engines Cloud cloud</li> <li>how to create a NooBaa bucket mirroring data on two different clouds</li> </ul> </blockquote> <h2 id=what-we-are-going-to-cover>What We Are Going To Cover<a href=#what-we-are-going-to-cover title="Permalink to this headline">🔗</a><a class=headerlink href=#what-we-are-going-to-cover title="Permanent link">&para;</a></h2> <blockquote> <ul> <li>Install NooBaa in local environment</li> <li>Apply preliminary configuration</li> <li>Install NooBaa on the Kubernetes cluster</li> <li>Create a NooBaa backing store</li> <li>Create a Bucket Class</li> <li>Create an ObjectBucketClaim</li> <li>Connect to NooBaa bucket from S3cmd</li> <li>Testing access to the bucket</li> <li>Create mirroring on clouds WAW3-1 and WAW3-2</li> </ul> </blockquote> <h2 id=prerequisites>Prerequisites<a href=#prerequisites title="Permalink to this headline">🔗</a><a class=headerlink href=#prerequisites title="Permanent link">&para;</a></h2> <p>No. 1 <strong>Hosting</strong></p> <p>You need a 3Engines Cloud hosting account with Horizon interface <a href=https://horizon.3Engines.com>https://horizon.3Engines.com</a>.</p> <p>No. 2 <strong>Access to Kubernetes cluster on WAW3-1 cloud</strong></p> <p>A cluster on WAW3-1 cloud, where we will run our NooBaa installation - follow guidelines in this article <a href=How-to-Create-a-Kubernetes-Cluster-Using-3Engines-Cloud-OpenStack-Magnum.html.html>How to Create a Kubernetes Cluster Using 3Engines Cloud OpenStack Magnum</a>.</p> <p>No. 3 <strong>Familiarity with using Object Storage on 3Engines clouds</strong></p> <p>More information in <a href=../s3/How-to-use-Object-Storage-on-3Engines-Cloud.html.html>How to use Object Storage on 3Engines Cloud</a></p> <p>Traditional OpenStack term for imported or downloaded files is <em>Containers</em> in main menu option <em>Object Store</em>. We will use the term “bucket” for object storage containers, to differentiate vs. container term in Docker/Kubernetes sense.</p> <p>No. 4 <strong>kubectl operational</strong></p> <p><strong>kubectl</strong> CLI tool installed and pointing to your cluster via KUBECONFIG env. variable - more information in <a href=How-To-Access-Kubernetes-Cluster-Post-Deployment-Using-Kubectl-On-3Engines-Cloud-OpenStack-Magnum.html.html>How To Access Kubernetes Cluster Post Deployment Using Kubectl On 3Engines Cloud OpenStack Magnum</a>.</p> <p>No. 5 <strong>Access to private S3 keys in WAW3-1 cloud</strong></p> <p>You may also use access to OpenStack CLI to generate and read the private S3 keys - <a href=../cloud/How-to-generate-ec2-credentials-on-3Engines-Cloud.html.html>How to generate and manage EC2 credentials on 3Engines Cloud</a>.</p> <p>No. 6 <strong>Familiarity with s3cmd for accessing object storage</strong></p> <p>For more info on <strong>s3cmd</strong>, see <a href=../s3/How-to-access-private-object-storage-using-S3cmd-or-boto3-on-3Engines-Cloud.html.html>How to access private object storage using S3cmd or boto3 on 3Engines Cloud</a>.</p> <p>No. 7 <strong>Access to WAW3-2 cloud</strong></p> <p>To mirror data on WAW3-1 and WAW3-2, you will need access to those two clouds.</p> <h2 id=install-noobaa-in-local-environment>Install NooBaa in local environment<a href=#install-noobaa-in-local-environment title="Permalink to this headline">🔗</a><a class=headerlink href=#install-noobaa-in-local-environment title="Permanent link">&para;</a></h2> <p>The first step to work with NooBaa is to install it on our local system. We will download the installer, make it executable and move it to the system path:</p> <div class=highlight><pre><span></span><code><span id=__span-0-1><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a>curl -LO https://github.com/noobaa/noobaa-operator/releases/download/v5.11.0/noobaa-linux-v5.11.0
</span><span id=__span-0-2><a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a>chmod +x noobaa-linux-v5.11.0
</span><span id=__span-0-3><a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a>sudo mv noobaa-linux-v5.11.0 /usr/local/bin/noobaa
</span></code></pre></div> <p>Enter the password for root user, if required.</p> <p>After this sequence of steps, it should be possible to run a test command</p> <div class=highlight><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a>noobaa help
</span></code></pre></div> <p>This will result in an output similar to the below:</p> <p><a class=glightbox href=../_images/install_noobaa_locally.png data-type=image data-width=100% data-height=auto data-desc-position=bottom><img alt=install_noobaa_locally.png src=../_images/install_noobaa_locally.png></a></p> <h2 id=apply-preliminary-configuration>Apply preliminary configuration<a href=#apply-preliminary-configuration title="Permalink to this headline">🔗</a><a class=headerlink href=#apply-preliminary-configuration title="Permanent link">&para;</a></h2> <p>We will need to apply additional configuration on a Magnum cluster to avoid PodSecurityPolicy exception. For a refresher, see article <a href=Installing-JupyterHub-on-Magnum-Kubernetes-cluster-in-3Engines-Cloud-cloud.html.html>Installing JupyterHub on Magnum Kubernetes Cluster in 3Engines Cloud Cloud</a>.</p> <p>Lets start by creating a dedicated namespace for Noobaa artifacts:</p> <div class=highlight><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a>kubectl create namespace noobaa
</span></code></pre></div> <p>Then create a file <em>noobaa-rolebinding.yaml</em> with the following contents:</p> <p><strong>noobaa-rolebinding.yaml</strong></p> <div class=highlight><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a>apiVersion: rbac.authorization.k8s.io/v1
</span><span id=__span-3-2><a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a>kind: RoleBinding
</span><span id=__span-3-3><a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a>metadata:
</span><span id=__span-3-4><a id=__codelineno-3-4 name=__codelineno-3-4 href=#__codelineno-3-4></a> name: noobaa-rolebinding
</span><span id=__span-3-5><a id=__codelineno-3-5 name=__codelineno-3-5 href=#__codelineno-3-5></a> namespace: noobaa
</span><span id=__span-3-6><a id=__codelineno-3-6 name=__codelineno-3-6 href=#__codelineno-3-6></a>subjects:
</span><span id=__span-3-7><a id=__codelineno-3-7 name=__codelineno-3-7 href=#__codelineno-3-7></a>- apiGroup: rbac.authorization.k8s.io
</span><span id=__span-3-8><a id=__codelineno-3-8 name=__codelineno-3-8 href=#__codelineno-3-8></a> kind: Group
</span><span id=__span-3-9><a id=__codelineno-3-9 name=__codelineno-3-9 href=#__codelineno-3-9></a> name: system:serviceaccounts
</span><span id=__span-3-10><a id=__codelineno-3-10 name=__codelineno-3-10 href=#__codelineno-3-10></a>roleRef:
</span><span id=__span-3-11><a id=__codelineno-3-11 name=__codelineno-3-11 href=#__codelineno-3-11></a> apiGroup: rbac.authorization.k8s.io
</span><span id=__span-3-12><a id=__codelineno-3-12 name=__codelineno-3-12 href=#__codelineno-3-12></a> kind: ClusterRole
</span><span id=__span-3-13><a id=__codelineno-3-13 name=__codelineno-3-13 href=#__codelineno-3-13></a> name: magnum:podsecuritypolicy:privileged
</span></code></pre></div> <p>and apply with:</p> <div class=highlight><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a>kubectl apply -f noobaa-rolebinding.yaml
</span></code></pre></div> <h2 id=install-noobaa-on-the-kubernetes-cluster>Install NooBaa on the Kubernetes cluster<a href=#install-noobaa-on-the-kubernetes-cluster title="Permalink to this headline">🔗</a><a class=headerlink href=#install-noobaa-on-the-kubernetes-cluster title="Permanent link">&para;</a></h2> <p>We already have NooBaa available in our local environment, but we still need to install NooBaa on our Kubernetes cluster. NooBaa will use the context of the KUBECONFIG by <strong>kubectl</strong> (as activated in Prerequisite No. 4), so install NooBaa in the dedicated namespace:</p> <div class=highlight><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a>noobaa install -n noobaa
</span></code></pre></div> <p>After a few minutes, this will install NooBaa and provide additional information about the setup. See the status of NooBaa with command</p> <div class=highlight><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a>noobaa status -n noobaa
</span></code></pre></div> <p>It outputs several useful insights about the NooBaa installation, with the “key facts” available towards the end of this status:</p> <blockquote> <ul> <li>NooBaa created a default backing store called <em>noobaa-default-backing-store</em>, backed by a block volume created in OpenStack.</li> <li>S3 credentials are provided to access the bucket created with the default backing store. Such volume-based backing store has its use e.g. for utilizing the S3 access method to our block storage.</li> </ul> </blockquote> <p>For the purpose of this article, we will not use the default backing store, but rather learn to create a new backing store based on cloud S3 object storage. Such setup can be then easily extended so that we can end up with separate backing stores for different clouds. In the second part of this article you will create one store on WAW3-1 cloud, another one on WAW3-2 cloud and they will be available through one abstracted S3 bucket in NooBaa.</p> <h2 id=create-a-noobaa-backing-store>Create a NooBaa backing store<a href=#create-a-noobaa-backing-store title="Permalink to this headline">🔗</a><a class=headerlink href=#create-a-noobaa-backing-store title="Permanent link">&para;</a></h2> <h3 id=step-1-create-object-storage-bucket-on-waw3-1>Step 1. Create object storage bucket on WAW3-1<a href=#step-1-create-object-storage-bucket-on-waw3-1 title="Permalink to this headline">🔗</a><a class=headerlink href=#step-1-create-object-storage-bucket-on-waw3-1 title="Permanent link">&para;</a></h3> <p>Now create an object storage bucket on WAW3-1 cloud:</p> <blockquote> <ul> <li>switch to Horizon,</li> <li>use commands <strong>Object Store</strong> &gt; <strong>Containers</strong> &gt; <strong>+ Container</strong> to create a new object bucket.</li> </ul> </blockquote> <p><a class=glightbox href=../_images/create_object_container.png data-type=image data-width=100% data-height=auto data-desc-position=bottom><img alt=create_object_container.png src=../_images/create_object_container.png></a></p> <p>Buckets on WAW3-1 cloud need to have unique names. In our case, we use bucket name <em>noobaademo-waw3-1</em> which we will use throughout the article.</p> <p>Note</p> <p>You need to create a bucket with a different name and use this generated name to follow along.</p> <h3 id=step-2-set-up-ec2-credentials>Step 2. Set up EC2 credentials<a href=#step-2-set-up-ec2-credentials title="Permalink to this headline">🔗</a><a class=headerlink href=#step-2-set-up-ec2-credentials title="Permanent link">&para;</a></h3> <p>If you have properly set up the EC2 (S3) keys for your WAW3-1 object storage, take note of them with the following command:</p> <div class=highlight><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a>openstack ec2 credentials list
</span></code></pre></div> <h3 id=step-3-create-a-new-noobaa-backing-store>Step 3. Create a new NooBaa backing store<a href=#step-3-create-a-new-noobaa-backing-store title="Permalink to this headline">🔗</a><a class=headerlink href=#step-3-create-a-new-noobaa-backing-store title="Permanent link">&para;</a></h3> <p>With the above in place, we can create a new NooBaa backing store called <em>custom-bs</em> by running the command below. Make sure to replace the access-key XXXXXX and the secret-key YYYYYYY with your own EC2 keys and the <em>bucket</em> with your own bucket name:</p> <div class=highlight><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a>noobaa -n noobaa backingstore create s3-compatible custom-bs --endpoint https://s3.waw3-1.3Engines.com --signature-version v4 --access-key XXXXXX \
</span><span id=__span-8-2><a id=__codelineno-8-2 name=__codelineno-8-2 href=#__codelineno-8-2></a>--secret-key YYYYYYY --target-bucket noobaademo-waw3-1
</span></code></pre></div> <p>Note that the credentials get stored as a Kubernetes secret in the namespace. You can verify that the backing store and the secret got created by running the following commands:</p> <div class=highlight><pre><span></span><code><span id=__span-9-1><a id=__codelineno-9-1 name=__codelineno-9-1 href=#__codelineno-9-1></a>kubectl get backingstore -n noobaa
</span><span id=__span-9-2><a id=__codelineno-9-2 name=__codelineno-9-2 href=#__codelineno-9-2></a>kubectl get secret -n noobaa
</span></code></pre></div> <p>The naming of the artifacts will follow the name of the backing store in case there are already more such resources available in the namespace.</p> <p>Also, when viewing the bucket in Horizon (backing store), we can see NooBaa populated its folder structure:</p> <p><a class=glightbox href=../_images/image2023-7-20_11-58-22.png data-type=image data-width=100% data-height=auto data-desc-position=bottom><img alt=image2023-7-20_11-58-22.png src=../_images/image2023-7-20_11-58-22.png></a></p> <h3 id=step-4-create-a-bucket-class>Step 4. Create a Bucket Class<a href=#step-4-create-a-bucket-class title="Permalink to this headline">🔗</a><a class=headerlink href=#step-4-create-a-bucket-class title="Permanent link">&para;</a></h3> <p>When we have the backing store, the next step is to create a BucketClass (BC). Such BucketClass serves as a blueprint for NooBaa buckets: it defines</p> <blockquote> <ul> <li>which BackingStore(s) these buckets will use, and</li> <li>which placement strategy to use in case of multiple bucket stores.</li> </ul> </blockquote> <p>The placement strategy could be <em>Mirror</em> or <em>Spread</em>. There is also support for using multiple tiers, where data is by default pushed to the first tier, and when this is full, to the next one.</p> <p>In order to create a <em>BucketClass</em>, prepare the following file <em>custom-bc.yaml</em>:</p> <p><strong>custom-bc.yaml</strong></p> <div class=highlight><pre><span></span><code><span id=__span-10-1><a id=__codelineno-10-1 name=__codelineno-10-1 href=#__codelineno-10-1></a>apiVersion: noobaa.io/v1alpha1
</span><span id=__span-10-2><a id=__codelineno-10-2 name=__codelineno-10-2 href=#__codelineno-10-2></a>kind: BucketClass
</span><span id=__span-10-3><a id=__codelineno-10-3 name=__codelineno-10-3 href=#__codelineno-10-3></a>metadata:
</span><span id=__span-10-4><a id=__codelineno-10-4 name=__codelineno-10-4 href=#__codelineno-10-4></a> labels:
</span><span id=__span-10-5><a id=__codelineno-10-5 name=__codelineno-10-5 href=#__codelineno-10-5></a> app: noobaa
</span><span id=__span-10-6><a id=__codelineno-10-6 name=__codelineno-10-6 href=#__codelineno-10-6></a> name: custom-bc
</span><span id=__span-10-7><a id=__codelineno-10-7 name=__codelineno-10-7 href=#__codelineno-10-7></a> namespace: noobaa
</span><span id=__span-10-8><a id=__codelineno-10-8 name=__codelineno-10-8 href=#__codelineno-10-8></a>spec:
</span><span id=__span-10-9><a id=__codelineno-10-9 name=__codelineno-10-9 href=#__codelineno-10-9></a> placementPolicy:
</span><span id=__span-10-10><a id=__codelineno-10-10 name=__codelineno-10-10 href=#__codelineno-10-10></a> tiers:
</span><span id=__span-10-11><a id=__codelineno-10-11 name=__codelineno-10-11 href=#__codelineno-10-11></a> - backingStores:
</span><span id=__span-10-12><a id=__codelineno-10-12 name=__codelineno-10-12 href=#__codelineno-10-12></a> - custom-bs
</span><span id=__span-10-13><a id=__codelineno-10-13 name=__codelineno-10-13 href=#__codelineno-10-13></a> placement: Spread
</span></code></pre></div> <p>Then apply with:</p> <div class=highlight><pre><span></span><code><span id=__span-11-1><a id=__codelineno-11-1 name=__codelineno-11-1 href=#__codelineno-11-1></a>kubectl apply -f custom-bc.yaml
</span></code></pre></div> <h3 id=step-5-create-an-objectbucketclaim>Step 5. Create an ObjectBucketClaim<a href=#step-5-create-an-objectbucketclaim title="Permalink to this headline">🔗</a><a class=headerlink href=#step-5-create-an-objectbucketclaim title="Permanent link">&para;</a></h3> <p>As the last step, we create an <em>ObjectBucketClaim</em>. This bucket claim utilizes the <em>noobaa.noobaa.io</em> storage class which got deployed with NooBaa, and references the <em>custom-bc</em> bucket class created in the previous step. Create a file called <em>custom-obc.yaml</em>:</p> <p><strong>custom-obc.yaml</strong></p> <div class=highlight><pre><span></span><code><span id=__span-12-1><a id=__codelineno-12-1 name=__codelineno-12-1 href=#__codelineno-12-1></a>apiVersion: objectbucket.io/v1alpha1
</span><span id=__span-12-2><a id=__codelineno-12-2 name=__codelineno-12-2 href=#__codelineno-12-2></a>kind: ObjectBucketClaim
</span><span id=__span-12-3><a id=__codelineno-12-3 name=__codelineno-12-3 href=#__codelineno-12-3></a>metadata:
</span><span id=__span-12-4><a id=__codelineno-12-4 name=__codelineno-12-4 href=#__codelineno-12-4></a> name: custom-obc
</span><span id=__span-12-5><a id=__codelineno-12-5 name=__codelineno-12-5 href=#__codelineno-12-5></a> namespace: noobaa
</span><span id=__span-12-6><a id=__codelineno-12-6 name=__codelineno-12-6 href=#__codelineno-12-6></a>spec:
</span><span id=__span-12-7><a id=__codelineno-12-7 name=__codelineno-12-7 href=#__codelineno-12-7></a> generateBucketName: my-bucket
</span><span id=__span-12-8><a id=__codelineno-12-8 name=__codelineno-12-8 href=#__codelineno-12-8></a> storageClassName: noobaa.noobaa.io
</span><span id=__span-12-9><a id=__codelineno-12-9 name=__codelineno-12-9 href=#__codelineno-12-9></a> additionalConfig:
</span><span id=__span-12-10><a id=__codelineno-12-10 name=__codelineno-12-10 href=#__codelineno-12-10></a> bucketclass: custom-bc
</span></code></pre></div> <p>Then apply with:</p> <div class=highlight><pre><span></span><code><span id=__span-13-1><a id=__codelineno-13-1 name=__codelineno-13-1 href=#__codelineno-13-1></a>kubectl apply -f custom-obc.yaml
</span></code></pre></div> <h3 id=step-6-obtain-name-of-the-noobaa-bucket>Step 6. Obtain name of the NooBaa bucket<a href=#step-6-obtain-name-of-the-noobaa-bucket title="Permalink to this headline">🔗</a><a class=headerlink href=#step-6-obtain-name-of-the-noobaa-bucket title="Permanent link">&para;</a></h3> <p>As a result, besides the <em>ObjectBucket</em> claim resource, also a configmap and a secret with the same name <em>custom-obc</em> got created in NooBaa. Lets view the configmap with:</p> <div class=highlight><pre><span></span><code><span id=__span-14-1><a id=__codelineno-14-1 name=__codelineno-14-1 href=#__codelineno-14-1></a>kubectl get configmap custom-obc -n noobaa -o yaml
</span></code></pre></div> <p>The result is similar to the following:</p> <div class=highlight><pre><span></span><code><span id=__span-15-1><a id=__codelineno-15-1 name=__codelineno-15-1 href=#__codelineno-15-1></a>apiVersion: v1
</span><span id=__span-15-2><a id=__codelineno-15-2 name=__codelineno-15-2 href=#__codelineno-15-2></a>data:
</span><span id=__span-15-3><a id=__codelineno-15-3 name=__codelineno-15-3 href=#__codelineno-15-3></a> BUCKET_HOST: s3.noobaa.svc
</span><span id=__span-15-4><a id=__codelineno-15-4 name=__codelineno-15-4 href=#__codelineno-15-4></a> BUCKET_NAME: my-bucket-7941ba4a-f57b-400a-b870-b337ec5284cf
</span><span id=__span-15-5><a id=__codelineno-15-5 name=__codelineno-15-5 href=#__codelineno-15-5></a> BUCKET_PORT: &quot;443&quot;
</span><span id=__span-15-6><a id=__codelineno-15-6 name=__codelineno-15-6 href=#__codelineno-15-6></a> BUCKET_REGION: &quot;&quot;
</span><span id=__span-15-7><a id=__codelineno-15-7 name=__codelineno-15-7 href=#__codelineno-15-7></a> BUCKET_SUBREGION: &quot;&quot;
</span><span id=__span-15-8><a id=__codelineno-15-8 name=__codelineno-15-8 href=#__codelineno-15-8></a>kind: ConfigMap
</span><span id=__span-15-9><a id=__codelineno-15-9 name=__codelineno-15-9 href=#__codelineno-15-9></a>metadata:
</span><span id=__span-15-10><a id=__codelineno-15-10 name=__codelineno-15-10 href=#__codelineno-15-10></a> ...
</span></code></pre></div> <p>We can see the name of the NooBaa bucket <em>my-bucket-7941ba4a-f57b-400a-b870-b337ec5284cf</em>, which is backing up our “physical” WAW3-1 bucket. Store this name for later use in this article.</p> <h3 id=step-7-obtain-secret-for-the-noobaa-bucket>Step 7. Obtain secret for the NooBaa bucket<a href=#step-7-obtain-secret-for-the-noobaa-bucket title="Permalink to this headline">🔗</a><a class=headerlink href=#step-7-obtain-secret-for-the-noobaa-bucket title="Permanent link">&para;</a></h3> <p>The secret is also relevant for us as we need to extract the S3 keys to the NooBaa bucket. The access and secret key are base64 encoded in the secret, we can retrieve them decoded with the following commands:</p> <div class=highlight><pre><span></span><code><span id=__span-16-1><a id=__codelineno-16-1 name=__codelineno-16-1 href=#__codelineno-16-1></a>kubectl get secret custom-obc -n noobaa -o jsonpath=&#39;{.data.AWS_ACCESS_KEY_ID}&#39; | base64 --decode
</span><span id=__span-16-2><a id=__codelineno-16-2 name=__codelineno-16-2 href=#__codelineno-16-2></a>kubectl get secret custom-obc -n noobaa -o jsonpath=&#39;{.data.AWS_SECRET_ACCESS_KEY}&#39; | base64 --decode
</span></code></pre></div> <p>Take note of access and secret keys, as we will use them in the next step.</p> <h3 id=step-8-connect-to-noobaa-bucket-from-s3cmd>Step 8. Connect to NooBaa bucket from S3cmd<a href=#step-8-connect-to-noobaa-bucket-from-s3cmd title="Permalink to this headline">🔗</a><a class=headerlink href=#step-8-connect-to-noobaa-bucket-from-s3cmd title="Permanent link">&para;</a></h3> <p>Noobaa created a few services when it got deployed, which we can verify with the command below:</p> <div class=highlight><pre><span></span><code><span id=__span-17-1><a id=__codelineno-17-1 name=__codelineno-17-1 href=#__codelineno-17-1></a>kubectl get services -n noobaa
</span></code></pre></div> <p>The output should be similar to the one below:</p> <div class=highlight><pre><span></span><code><span id=__span-18-1><a id=__codelineno-18-1 name=__codelineno-18-1 href=#__codelineno-18-1></a>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
</span><span id=__span-18-2><a id=__codelineno-18-2 name=__codelineno-18-2 href=#__codelineno-18-2></a>noobaa-db-pg ClusterIP 10.254.158.217 &lt;none&gt; 5432/TCP 3h24m
</span><span id=__span-18-3><a id=__codelineno-18-3 name=__codelineno-18-3 href=#__codelineno-18-3></a>noobaa-mgmt LoadBalancer 10.254.145.9 64.225.135.152 80:31841/TCP,443:31736/TCP,8445:32063/TCP,8446:32100/TCP 3h24m
</span><span id=__span-18-4><a id=__codelineno-18-4 name=__codelineno-18-4 href=#__codelineno-18-4></a>s3 LoadBalancer 10.254.244.226 64.225.133.81 80:30948/TCP,443:31609/TCP,8444:30079/TCP,7004:31604/TCP 3h24m
</span><span id=__span-18-5><a id=__codelineno-18-5 name=__codelineno-18-5 href=#__codelineno-18-5></a>sts LoadBalancer 10.254.23.154 64.225.135.92 443:31374/TCP 3h24m
</span></code></pre></div> <p>The “s3” service provides the endpoint that can be used to access Nooba storage (backed by the actual storage in WAW3-1). In our case, this endpoint URL is <strong>64.225.133.81</strong>. Replace it with the value you get from the above command, when working through this article.</p> <h3 id=step-9-configure-s3cmd-to-access-noobaa>Step 9. Configure S3cmd to access NooBaa<a href=#step-9-configure-s3cmd-to-access-noobaa title="Permalink to this headline">🔗</a><a class=headerlink href=#step-9-configure-s3cmd-to-access-noobaa title="Permanent link">&para;</a></h3> <p>Now that we have both the endpoint and the keys, we can configure <strong>s3cmd</strong> to access the bucket created by NooBaa. Create a configuration file <em>noobaa.s3cfg</em> with the following contents:</p> <div class=highlight><pre><span></span><code><span id=__span-19-1><a id=__codelineno-19-1 name=__codelineno-19-1 href=#__codelineno-19-1></a>check_ssl_certificate = False
</span><span id=__span-19-2><a id=__codelineno-19-2 name=__codelineno-19-2 href=#__codelineno-19-2></a>check_ssl_hostname = False
</span><span id=__span-19-3><a id=__codelineno-19-3 name=__codelineno-19-3 href=#__codelineno-19-3></a>access_key = XXXXXX
</span><span id=__span-19-4><a id=__codelineno-19-4 name=__codelineno-19-4 href=#__codelineno-19-4></a>secret_key = YYYYYY
</span><span id=__span-19-5><a id=__codelineno-19-5 name=__codelineno-19-5 href=#__codelineno-19-5></a>host_base = 64.225.133.81
</span><span id=__span-19-6><a id=__codelineno-19-6 name=__codelineno-19-6 href=#__codelineno-19-6></a>host_bucket = 64.225.133.81
</span><span id=__span-19-7><a id=__codelineno-19-7 name=__codelineno-19-7 href=#__codelineno-19-7></a>use_https = True
</span><span id=__span-19-8><a id=__codelineno-19-8 name=__codelineno-19-8 href=#__codelineno-19-8></a>verbosity = WARNING
</span><span id=__span-19-9><a id=__codelineno-19-9 name=__codelineno-19-9 href=#__codelineno-19-9></a>signature_v2 = False
</span></code></pre></div> <p>Then from the same location apply with:</p> <div class=highlight><pre><span></span><code><span id=__span-20-1><a id=__codelineno-20-1 name=__codelineno-20-1 href=#__codelineno-20-1></a>s3cmd --configure -c noobaa.s3cfg
</span></code></pre></div> <p>If the <strong>s3cmd</strong> is not installed on your system, see Prerequisite No. 6.</p> <p>The <strong>s3cmd</strong> command will let you press Enter to confirm each value from config file and let you change it on the fly, if different from default.</p> <p>Omitting those questions in the output below, the result should be similar to the following:</p> <div class=highlight><pre><span></span><code><span id=__span-21-1><a id=__codelineno-21-1 name=__codelineno-21-1 href=#__codelineno-21-1></a>...
</span><span id=__span-21-2><a id=__codelineno-21-2 name=__codelineno-21-2 href=#__codelineno-21-2></a>Success. Your access key and secret key worked fine :-)
</span><span id=__span-21-3><a id=__codelineno-21-3 name=__codelineno-21-3 href=#__codelineno-21-3></a>
</span><span id=__span-21-4><a id=__codelineno-21-4 name=__codelineno-21-4 href=#__codelineno-21-4></a>Now verifying that encryption works...
</span><span id=__span-21-5><a id=__codelineno-21-5 name=__codelineno-21-5 href=#__codelineno-21-5></a>Not configured. Never mind.
</span><span id=__span-21-6><a id=__codelineno-21-6 name=__codelineno-21-6 href=#__codelineno-21-6></a>
</span><span id=__span-21-7><a id=__codelineno-21-7 name=__codelineno-21-7 href=#__codelineno-21-7></a>Save settings? [y/N] y
</span><span id=__span-21-8><a id=__codelineno-21-8 name=__codelineno-21-8 href=#__codelineno-21-8></a>Configuration saved to &#39;noobaa.s3cfg&#39;
</span></code></pre></div> <h3 id=step-10-testing-access-to-the-bucket>Step 10. Testing access to the bucket<a href=#step-10-testing-access-to-the-bucket title="Permalink to this headline">🔗</a><a class=headerlink href=#step-10-testing-access-to-the-bucket title="Permanent link">&para;</a></h3> <p>We can upload a test file to NooBaa. In our case, we upload a simple text file <em>xyz.txt</em> with text content “xyz”, using the following command:</p> <div class=highlight><pre><span></span><code><span id=__span-22-1><a id=__codelineno-22-1 name=__codelineno-22-1 href=#__codelineno-22-1></a>s3cmd put xyz.txt s3://my-bucket-7941ba4a-f57b-400a-b870-b337ec5284cf -c noobaa.s3cfg
</span></code></pre></div> <p>The file gets uploaded correctly:</p> <div class=highlight><pre><span></span><code><span id=__span-23-1><a id=__codelineno-23-1 name=__codelineno-23-1 href=#__codelineno-23-1></a>upload: &#39;xyz.txt&#39; -&gt; &#39;s3://my-bucket-7941ba4a-f57b-400a-b870-b337ec5284cf/xyz.txt&#39; [1 of 1]
</span><span id=__span-23-2><a id=__codelineno-23-2 name=__codelineno-23-2 href=#__codelineno-23-2></a> 4 of 4 100% in 0s 5.67 B/s done
</span></code></pre></div> <p>We can also see in Horizon that a few new folders and files were added to NooBaa. However, we will not see the <em>xyz.txt</em> file directly there, because NooBaa applies its own fragmentation techniques on the data.</p> <h2 id=connect-noobaa-in-a-multi-cloud-setup>Connect NooBaa in a multi-cloud setup<a href=#connect-noobaa-in-a-multi-cloud-setup title="Permalink to this headline">🔗</a><a class=headerlink href=#connect-noobaa-in-a-multi-cloud-setup title="Permanent link">&para;</a></h2> <p>NooBaa can be used to create an abstracted S3 endpoint, connected to two or more cloud S3 endpoints. This can be helpful in scenarios of e.g. replicating the same data in multiple clouds or combining the storage of multiple clouds.</p> <p>In this section of the article we demonstrate the “mirroring scenario”. We create an S3 NooBaa endpoint replicating (mirroring) data between WAW3-1 cloud and WAW3-2 cloud.</p> <p>Note</p> <p>To illustrate the process, we are going create a new set of resources, new S3 buckets and introduce new naming of the entities. The steps 1 to 9 from above are almost identical so we shall denote them as <strong>Step 1 Multi-cloud</strong>, <strong>Step 2 Multi-cloud</strong> and so on.</p> <p>To proceed, first create two additional buckets from the Horizon interface. Replace the further commands and file contents in this section to reflect these bucket names.</p> <h3 id=step-1-multi-cloud-create-bucket-on-waw3-1>Step 1 Multi-cloud. Create bucket on WAW3-1<a href=#step-1-multi-cloud-create-bucket-on-waw3-1 title="Permalink to this headline">🔗</a><a class=headerlink href=#step-1-multi-cloud-create-bucket-on-waw3-1 title="Permanent link">&para;</a></h3> <p>Go to WAW3-1 Horizon interface and create a bucket we call <em>noobaamirror-waw3-1</em> (supply your own bucket name here and adhere to it in the rest of the article). It will be the available on endpoint <a href=https://s3.waw3-1.3Engines.com>https://s3.waw3-1.3Engines.com</a>.</p> <h3 id=step-1-multi-cloud-create-bucket-on-waw3-2>Step 1 Multi-cloud. Create bucket on WAW3-2<a href=#step-1-multi-cloud-create-bucket-on-waw3-2 title="Permalink to this headline">🔗</a><a class=headerlink href=#step-1-multi-cloud-create-bucket-on-waw3-2 title="Permanent link">&para;</a></h3> <p>Next, go to WAW3-2 Horizon interface and create a bucket we call <em>noobaamirror-waw3-2</em> (again, supply your own bucket name here and adhere to it in the rest of the article). It will be available on endpoint <a href=https://s3.waw3-2.3Engines.com>https://s3.waw3-2.3Engines.com</a></p> <h3 id=step-2-multi-cloud-set-up-ec2-credentials>Step 2 Multi-cloud. Set up EC2 credentials<a href=#step-2-multi-cloud-set-up-ec2-credentials title="Permalink to this headline">🔗</a><a class=headerlink href=#step-2-multi-cloud-set-up-ec2-credentials title="Permanent link">&para;</a></h3> <p>Use the existing pair of EC2 credentials or first create a new pair and then use them in the next step.</p> <h3 id=step-3-multi-cloud-create-backing-store-mirror-bs1-on-waw3-1>Step 3 Multi-cloud. Create backing store mirror-bs1 on WAW3-1<a href=#step-3-multi-cloud-create-backing-store-mirror-bs1-on-waw3-1 title="Permalink to this headline">🔗</a><a class=headerlink href=#step-3-multi-cloud-create-backing-store-mirror-bs1-on-waw3-1 title="Permanent link">&para;</a></h3> <p>Apply the following command to create <em>mirror-bs1</em> backing store (change names of: bucket name, S3 access key, S3 secret key to your own):</p> <div class=highlight><pre><span></span><code><span id=__span-24-1><a id=__codelineno-24-1 name=__codelineno-24-1 href=#__codelineno-24-1></a>noobaa -n noobaa backingstore create s3-compatible mirror-bs1 --endpoint https://s3.waw3-1.3Engines.com --signature-version v4 --access-key XXXXXX --secret-key YYYYYY --target-bucket noobaamirror-waw3-1
</span></code></pre></div> <h3 id=step-3-multi-cloud-create-backing-store-mirror-bs2-on-waw3-2>Step 3 Multi-cloud. Create backing store mirror-bs2 on WAW3-2<a href=#step-3-multi-cloud-create-backing-store-mirror-bs2-on-waw3-2 title="Permalink to this headline">🔗</a><a class=headerlink href=#step-3-multi-cloud-create-backing-store-mirror-bs2-on-waw3-2 title="Permanent link">&para;</a></h3> <p>Apply the following command to create <em>mirror-bs2</em> backing store (change names of: bucket name, S3 access key, S3 secret key to your own):</p> <div class=highlight><pre><span></span><code><span id=__span-25-1><a id=__codelineno-25-1 name=__codelineno-25-1 href=#__codelineno-25-1></a>noobaa -n noobaa backingstore create s3-compatible mirror-bs2 --endpoint https://s3.waw3-2.3Engines.com --signature-version v4 --access-key XXXXXX --secret-key YYYYYY --target-bucket noobaamirror-waw3-2
</span></code></pre></div> <h3 id=step-4-multi-cloud-create-a-bucket-class>Step 4 Multi-cloud. Create a Bucket Class<a href=#step-4-multi-cloud-create-a-bucket-class title="Permalink to this headline">🔗</a><a class=headerlink href=#step-4-multi-cloud-create-a-bucket-class title="Permanent link">&para;</a></h3> <p>To create a BucketClass called <em>bc-mirror</em>, create a file called <em>bc-mirror.yaml</em> with the following contents:</p> <p><strong>bc-mirror.yaml</strong></p> <div class=highlight><pre><span></span><code><span id=__span-26-1><a id=__codelineno-26-1 name=__codelineno-26-1 href=#__codelineno-26-1></a>apiVersion: noobaa.io/v1alpha1
</span><span id=__span-26-2><a id=__codelineno-26-2 name=__codelineno-26-2 href=#__codelineno-26-2></a>kind: BucketClass
</span><span id=__span-26-3><a id=__codelineno-26-3 name=__codelineno-26-3 href=#__codelineno-26-3></a>metadata:
</span><span id=__span-26-4><a id=__codelineno-26-4 name=__codelineno-26-4 href=#__codelineno-26-4></a> labels:
</span><span id=__span-26-5><a id=__codelineno-26-5 name=__codelineno-26-5 href=#__codelineno-26-5></a> app: noobaa
</span><span id=__span-26-6><a id=__codelineno-26-6 name=__codelineno-26-6 href=#__codelineno-26-6></a> name: bc-mirror
</span><span id=__span-26-7><a id=__codelineno-26-7 name=__codelineno-26-7 href=#__codelineno-26-7></a> namespace: noobaa
</span><span id=__span-26-8><a id=__codelineno-26-8 name=__codelineno-26-8 href=#__codelineno-26-8></a>spec:
</span><span id=__span-26-9><a id=__codelineno-26-9 name=__codelineno-26-9 href=#__codelineno-26-9></a> placementPolicy:
</span><span id=__span-26-10><a id=__codelineno-26-10 name=__codelineno-26-10 href=#__codelineno-26-10></a> tiers:
</span><span id=__span-26-11><a id=__codelineno-26-11 name=__codelineno-26-11 href=#__codelineno-26-11></a> - backingStores:
</span><span id=__span-26-12><a id=__codelineno-26-12 name=__codelineno-26-12 href=#__codelineno-26-12></a> - mirror-bs1
</span><span id=__span-26-13><a id=__codelineno-26-13 name=__codelineno-26-13 href=#__codelineno-26-13></a> - mirror-bs2
</span><span id=__span-26-14><a id=__codelineno-26-14 name=__codelineno-26-14 href=#__codelineno-26-14></a> placement: Mirror
</span></code></pre></div> <p>and apply with:</p> <div class=highlight><pre><span></span><code><span id=__span-27-1><a id=__codelineno-27-1 name=__codelineno-27-1 href=#__codelineno-27-1></a>kubectl apply -f bc-mirror.yaml
</span></code></pre></div> <p>Note</p> <p>The mirroring is implemented by listing <strong>two</strong> backing stores, <em>mirror-bs1</em> and <em>mirror-bs1</em>, under the <em>tiers</em> option.</p> <h3 id=step-5-multi-cloud-create-an-objectbucketclaim>Step 5 Multi-cloud. Create an ObjectBucketClaim<a href=#step-5-multi-cloud-create-an-objectbucketclaim title="Permalink to this headline">🔗</a><a class=headerlink href=#step-5-multi-cloud-create-an-objectbucketclaim title="Permanent link">&para;</a></h3> <p>Again, create file <em>obc-mirror.yaml</em> for ObjectBucketClaim <em>obc-mirror</em>:</p> <p><strong>obc-mirror.yaml</strong></p> <div class=highlight><pre><span></span><code><span id=__span-28-1><a id=__codelineno-28-1 name=__codelineno-28-1 href=#__codelineno-28-1></a>apiVersion: objectbucket.io/v1alpha1
</span><span id=__span-28-2><a id=__codelineno-28-2 name=__codelineno-28-2 href=#__codelineno-28-2></a>kind: ObjectBucketClaim
</span><span id=__span-28-3><a id=__codelineno-28-3 name=__codelineno-28-3 href=#__codelineno-28-3></a>metadata:
</span><span id=__span-28-4><a id=__codelineno-28-4 name=__codelineno-28-4 href=#__codelineno-28-4></a> name: obc-mirror
</span><span id=__span-28-5><a id=__codelineno-28-5 name=__codelineno-28-5 href=#__codelineno-28-5></a> namespace: noobaa
</span><span id=__span-28-6><a id=__codelineno-28-6 name=__codelineno-28-6 href=#__codelineno-28-6></a>spec:
</span><span id=__span-28-7><a id=__codelineno-28-7 name=__codelineno-28-7 href=#__codelineno-28-7></a> generateBucketName: my-bucket
</span><span id=__span-28-8><a id=__codelineno-28-8 name=__codelineno-28-8 href=#__codelineno-28-8></a> storageClassName: noobaa.noobaa.io
</span><span id=__span-28-9><a id=__codelineno-28-9 name=__codelineno-28-9 href=#__codelineno-28-9></a> additionalConfig:
</span><span id=__span-28-10><a id=__codelineno-28-10 name=__codelineno-28-10 href=#__codelineno-28-10></a> bucketclass: bc-mirror
</span></code></pre></div> <p>and apply with:</p> <div class=highlight><pre><span></span><code><span id=__span-29-1><a id=__codelineno-29-1 name=__codelineno-29-1 href=#__codelineno-29-1></a>kubectl apply -f obc-mirror
</span></code></pre></div> <h3 id=step-6-multi-cloud-obtain-name-of-the-noobaa-bucket>Step 6 Multi-cloud. Obtain name of the NooBaa bucket<a href=#step-6-multi-cloud-obtain-name-of-the-noobaa-bucket title="Permalink to this headline">🔗</a><a class=headerlink href=#step-6-multi-cloud-obtain-name-of-the-noobaa-bucket title="Permanent link">&para;</a></h3> <p>Extract bucket name from the configmap:</p> <div class=highlight><pre><span></span><code><span id=__span-30-1><a id=__codelineno-30-1 name=__codelineno-30-1 href=#__codelineno-30-1></a>kubectl get configmap obc-mirror -n noobaa -o yaml
</span></code></pre></div> <h3 id=step-7-multi-cloud-obtain-secret-for-the-noobaa-bucket>Step 7 Multi-cloud. Obtain secret for the NooBaa bucket<a href=#step-7-multi-cloud-obtain-secret-for-the-noobaa-bucket title="Permalink to this headline">🔗</a><a class=headerlink href=#step-7-multi-cloud-obtain-secret-for-the-noobaa-bucket title="Permanent link">&para;</a></h3> <p>Extract S3 keys from the created secret:</p> <div class=highlight><pre><span></span><code><span id=__span-31-1><a id=__codelineno-31-1 name=__codelineno-31-1 href=#__codelineno-31-1></a>kubectl get secret obc-mirror -n noobaa -o jsonpath=&#39;{.data.AWS_ACCESS_KEY_ID}&#39; | base64 --decode
</span><span id=__span-31-2><a id=__codelineno-31-2 name=__codelineno-31-2 href=#__codelineno-31-2></a>kubectl get secret obc-mirror -n noobaa -o jsonpath=&#39;{.data.AWS_SECRET_ACCESS_KEY}&#39; | base64 --decode
</span></code></pre></div> <h3 id=step-8-multi-cloud-connect-to-noobaa-bucket-from-s3cmd>Step 8 Multi-cloud. Connect to NooBaa bucket from S3cmd<a href=#step-8-multi-cloud-connect-to-noobaa-bucket-from-s3cmd title="Permalink to this headline">🔗</a><a class=headerlink href=#step-8-multi-cloud-connect-to-noobaa-bucket-from-s3cmd title="Permanent link">&para;</a></h3> <p>Create additional config file for s3cmd e.g. <em>noobaa-mirror.s3cfg</em> and update the access key, the secret key and the bucket name to the ones retrieved above:</p> <div class=highlight><pre><span></span><code><span id=__span-32-1><a id=__codelineno-32-1 name=__codelineno-32-1 href=#__codelineno-32-1></a>s3cmd --configure -c noobaa-mirror.s3cfg
</span></code></pre></div> <h3 id=step-9-multi-cloud-configure-s3cmd-to-access-noobaa>Step 9 Multi-cloud. Configure S3cmd to access NooBaa<a href=#step-9-multi-cloud-configure-s3cmd-to-access-noobaa title="Permalink to this headline">🔗</a><a class=headerlink href=#step-9-multi-cloud-configure-s3cmd-to-access-noobaa title="Permanent link">&para;</a></h3> <p>To test, upload the <em>xyz.txt</em> file, which behind the scenes uploads a copy to both clouds. Be sure to change the bucket name <em>my-bucket-aa6b8a23-4a77-4306-ae36-0248fc1c44ff</em> to the one retrieved from the configmap:</p> <div class=highlight><pre><span></span><code><span id=__span-33-1><a id=__codelineno-33-1 name=__codelineno-33-1 href=#__codelineno-33-1></a>s3cmd put xyz.txt s3://my-bucket-aa6b8a23-4a77-4306-ae36-0248fc1c44ff -c noobaa-mirror.s3cfg
</span></code></pre></div> <h3 id=step-10-multi-cloud-testing-access-to-the-bucket>Step 10 Multi-cloud. Testing access to the bucket<a href=#step-10-multi-cloud-testing-access-to-the-bucket title="Permalink to this headline">🔗</a><a class=headerlink href=#step-10-multi-cloud-testing-access-to-the-bucket title="Permanent link">&para;</a></h3> <p>To verify, delete the “physical” bucket on one of the clouds (e.g. from WAW3-1) from the Horizon interface. With the <strong>s3cmd</strong> command below you can see that NooBaa will still hold the copy from WAW3-2 cloud:</p> <div class=highlight><pre><span></span><code><span id=__span-34-1><a id=__codelineno-34-1 name=__codelineno-34-1 href=#__codelineno-34-1></a>s3cmd ls s3://my-bucket-aa6b8a23-4a77-4306-ae36-0248fc1c44ff -c noobaa-mirror.s3cfg
</span><span id=__span-34-2><a id=__codelineno-34-2 name=__codelineno-34-2 href=#__codelineno-34-2></a>2023-07-21 09:47 4 s3://my-bucket-aa6b8a23-4a77-4306-ae36-0248fc1c44ff/xyz.txt
</span></code></pre></div> </article> </div> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": "..", "features": ["content.code.annotate", "content.code.copy", "content.tooltips", "navigation.tabs", "navigation.sections", "navigation.footer", "navigation.indexes", "navigation.sections", "navigation.top", "navigation.tracking", "search.highlight", "search.share", "search.suggest", "toc.follow"], "search": "../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script> <script src=../assets/javascripts/bundle.13a4f30d.min.js></script> <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": false, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(() => { lightbox.reload() });
</script></body> </html>