| <!doctype html><html itemscope itemtype=http://schema.org/WebPage lang=en class=no-js><head><script>(function(){const t=localStorage.getItem("theme");t==="dark"?document.documentElement.classList.add("dark-mode"):t==="light"&&document.documentElement.classList.remove("dark-mode");const n=document.documentElement.classList.contains("dark-mode"),e=document.getElementById("theme-icon");e&&(e.classList&&e.classList.toggle("fa-sun",!n),e.classList&&e.classList.toggle("fa-moon",n))})()</script><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><link rel=canonical type=text/html href=/docs/installation/><link rel=alternate type=application/rss+xml href=/docs/installation/index.xml><meta name=robots content="noindex, nofollow"><link rel="shortcut icon" href=/favicons/favicon.ico><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192><title>Installation | Apache OpenServerless™</title> |
| <meta name=description content="How to and where install OpenServerless"><meta property="og:url" content="/docs/installation/"><meta property="og:site_name" content="Apache OpenServerless™"><meta property="og:title" content="Installation"><meta property="og:description" content="How to and where install OpenServerless"><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta itemprop=name content="Installation"><meta itemprop=description content="How to and where install OpenServerless"><meta itemprop=dateModified content="2025-08-01T16:51:57+02:00"><meta itemprop=wordCount content="201"><meta name=twitter:card content="summary"><meta name=twitter:title content="Installation"><meta name=twitter:description content="How to and where install OpenServerless"><link rel=preload href=/scss/main.min.63d3665407fbf8c19373c7376d20ae27b458d1c085cc6645b75d65bbf044b537.css as=style><link href=/scss/main.min.63d3665407fbf8c19373c7376d20ae27b458d1c085cc6645b75d65bbf044b537.css rel=stylesheet integrity><script src=/js/jquery-3.7.1.min.js></script><script defer src=/js/lunr-2.3.9.min.js></script><link rel=stylesheet href=/css/prism.css></head><body class=td-section><header><nav class="td-navbar js-navbar-scroll" data-bs-theme=dark><div class="container-fluid flex-column flex-md-row"><a class=navbar-brand href=/><span class="navbar-brand__logo navbar-logo"><svg viewBox="0 0 1024 781"><g stroke-width="2" fill="none" stroke-linecap="butt"><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M438.8 120.98Q435.57 121.88 434.78 122.21 431.12 123.7 423.21 127.52"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M423.21 127.52C416.56 130.57 409.18 133.39 403.28 136.68Q394.42 141.62 387.66 147.15 379.83 153.54 367.83 164.27C360.8 170.55 354.15 177.8 347.45 184.72"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M347.45 184.72 342.5 189.88Q342.21 190.18 341.84 190.38 341.07 190.8 341.03 191.71 341.01 192.11 340.65 191.92 340.53 191.86 340.4 191.9 339.91 192.07 339.71 192.6 339.03 194.41 337.73 195.89 337.39 196.28 337.81 195.97 337.86 195.93 337.92 195.9 338.54 195.6 338.12 196.15 335.04 200.12 332.21 203.99 332.03 204.23 331.79 204.04L331.46 203.78Q331.41 203.74 331.44 203.69 332.29 202.33 333.12 201.24 333.2 201.13 333.11 201 333.07 200.95 333.03 201 332.05 202.53 330.7 203.79 330.54 203.94 330.75 203.87 330.79 203.85 330.84 203.87 331.05 203.97 331.06 204.2 331.13 205.63 329.99 206.5A1.85 1.78 81.9 00329.4 207.32Q329.06 208.29 328.39 209.14 328.09 209.52 327.61 209.58 325.89 209.82 326 211.78A1.3 1.27-28 01325.72 212.66Q324.07 214.8 323.12 217.7"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M323.12 217.7 318.02 228.46"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M318.02 228.46Q313.27 234.86 311.76 237.75 309.37 242.33 305.99 252.05 304.46 256.44 305.93 254.25"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M305.93 254.25Q305.62 255.63 304.89 256.82 304.77 257.01 304.97 257.12L305.2 257.24Q305.23 257.26 305.24 257.22 306.13 255.05 307.26 252.78 307.34 252.62 307.51 252.71L307.73 252.82Q307.75 252.84 307.74 252.86 306.25 255.22 305.41 257.9 304.19 261.82 302.64 265.97 302.35 266.75 301.89 267.38C300.98 268.59 301.07 270.27 300.39 271.68Q299.06 274.47 298.36 277.53 298.26 277.97 297.92 278.28 297.32 278.84 297.16 279.76 296.53 283.42 295.29 287.79C294.38 290.99 294.69 294.16 293.83 297.36 292.99 300.5 293.12 303.75 292.59 306.9Q290.82 317.42 290.83 332.15C290.83 348.21 291.88 362.54 296.59 377.96Q298.48 384.15 300.49 390.37 301.18 392.52 299.65 390.86 298.11 389.19 295.54 387.72 290.29 384.72 285.05 381.84"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M285.05 381.84Q283.43 380.56 281.9 380.1C279.89 379.5 278.26 378.64 276.39 378.23 274.28 377.77 271.98 376.83 270.21 376.37Q255.65 372.58 240.43 373.13"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M240.43 373.13Q233.74 372.8 227 373.57 218.25 374.57 209.52 375.73 205.54 376.26 202.03 377.1 198.41 377.96 194.65 378.96 194.3 379.05 194.13 379.39A.74.72-79.5 01193.55 379.8Q189.92 380.15 187.2 381.49 184.73 382.71 182.18 383.81 179.39 385.01 177.01 386.52q-10.2 6.5-21.71 15.23-11.53 8.75-19.24 19.06C135.77 421.2 135.78 421.58 135.55 421.95Q132.47 426.87 128.69 431.08 125.96 434.1 123.91 437.19 121.72 440.47 119.57 443.8 119.26 444.28 119.09 444.83 118.95 445.24 118.63 445.53 116.84 447.17 116 449.6A1.7 1.69 80.4 01115.47 450.35Q115.1 450.66 114.87 451.08 111.96 456.46 110.57 460.85 109.15 465.35 107.7 469.25 104.74 477.22 102.44 485.43 102.33 485.83 102.71 485.65 103.01 485.5 102.86 485.13 102.81 485.01 102.88 485.11 102.9 485.13 102.93 485.15 102.99 485.16 102.97 485.22 101.22 490.96 100.5 495.31 98.77 505.78 98.79 517.39 98.79 517.88 98.5 518.29 98.25 518.63 98.23 519.04 97.87 528.44 98.18 537.77"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M98.18 537.77Q98.75 547.92 100.1 554.97q3.73 19.49 13.1 38.62 15.56 31.76 43.03 52.74Q162.21 650.9 172.97 656.97 173.4 657.21 173.93 657.11 174.27 657.04 174.47 657.33 175.25 658.44 176.62 658.35 176.74 658.34 176.63 658.37 176.5 658.41 176.38 658.48 176.21 658.58 176.36 658.71 179.72 661.6 184.36 663.69 193.12 667.64 200.92 670.96 203.51 672.06 206.39 672.09C213.79 672.17 220.75 674.59 227.85 675.5Q241.51 677.25 258.42 677.27 335.37 677.38 410.89 677.26 415.61 677.25 421.31 677.06A.94.94.0 00422.22 676.12L422.48 603.46"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M422.48 603.46C422.72 519.97 422.5 436.49 422.59 353Q422.59 348.1 423.66 344.48C424.85 340.39 429.55 336.76 433.9 336.21Q436.66 335.85 439.49 335.86 494.27 335.98 572.06 335.69 584.93 335.64 589.91 334.78 597.94 333.4 606.26 330.74C615.95 327.65 626.03 324.05 635.5 320.14Q646.37 315.66 657.62 312.96 667.09 310.69 676.08 307.82 691.68 302.85 706.51 297.5 712.77 295.24 718.01 296.26"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M718.01 296.26Q725.51 299 729.94 305.03 734.73 311.55 735.73 318.39 736.01 320.31 736.08 332.62 736.25 364.24 736.19 397 736.19 399.08 736.23 400.97"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M736.23 400.97Q735.9 449.45 735.46 497.75 735.19 527.79 736.15 604.08"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M736.15 604.08 736.67 675.56A2.19 2.19.0 00738.87 677.73Q767.94 677.54 795.44 677.62 817.97 677.68 841.39 674.15 847.16 673.28 852.49 671.66C860.03 669.38 868.01 666.67 874.77 663.04 886.51 656.73 899.29 648.52 907.95 640.2Q915.92 632.55 923.63 625.37 929.31 620.09 933.33 613.73C935.19 610.8 937.51 608.42 939.12 605.35 940.33 603.02 941.92 600.89 943.21 598.54Q943.45 598.12 943.29 597.67L943.16 597.31A.83.81 57.5 01943.33 596.5Q944.29 595.46 944.39 593.99A1.71 1.69-26.2 01944.69 593.13Q945.61 591.77 945.97 590.12 946.3 588.59 946.91 587.17 949.11 582.1 951.27 576.84 951.72 575.76 951.83 574.56 951.94 573.38 952.44 572.26 953.13 570.7 953.66 569.03 955.4 563.55 956.49 558.44 958.79 547.6 959.78 535.62 961.35 516.61 958.61 497.75C957.77 492.01 956.07 486.17 954.92 480.43Q954.15 476.64 952.59 472.89 950.98 469.01 950.1 465.43 949.18 461.64 947.3 458.42C946.62 457.26 946.43 456.23 946.02 455.01Q945.59 453.76 944.8 452.54 943.11 449.92 941.65 447.11C941.28 446.4 941.38 445.57 941.14 445Q940.04 442.39 934.75 436.96"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M934.75 436.96c-13.04-17.58-27.99-33.32-46.72-44.66"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M888.03 392.3Q882.24 387.36 875.24 384.36 875.2 384.34 875.22 384.3L875.35 384.08Q875.43 383.93 875.59 384L877.96 385.14Q877.99 385.16 878 385.13L878.15 384.9Q878.28 384.7 878.05 384.62 872.13 382.5 867.06 380.02 863.08 378.07 858.83 376.66 854.27 375.14 850.01 374.21 849.95 374.2 849.93 374.26L849.87 374.51A.03.03.0 00849.9 374.55Q857.11 375.83 861.77 378.39 864.48 379.88 861.51 379.04 859.01 378.34 856.67 377.6 852.48 376.26 846.15 375.67 846.1 375.67 846.08 375.63 846.06 375.57 846.12 375.55 846.17 375.54 846.21 375.55 847.25 375.84 848.13 375.69 848.82 375.58 848.13 375.43 844.1 374.56 840.02 375.3"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M840.02 375.3C831.63 374.33 823.73 372.69 814.84 373.31 813.35 373.41 812.06 372.84 810.51 372.87Q803.01 373.01 796.27 374.55C793.63 375.15 790.95 375.45 788.28 375.61Q787.88 375.64 787.61 375.92 787.23 376.32 786.68 376.4 780.74 377.31 775.04 379.37 770.87 380.88 764.64 384.8 759.7 387.91 754.7 391.19"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M754.7 391.19Q756.26 383.46 757.81 375.98 759.76 366.58 760.51 360.7 763.46 337.48 761.63 314.17 760.99 306.01 758.91 294.37 757.01 283.7 754.89 272.75 752.59 260.84 747.54 249.46 745.67 245.25 743.7 240.2 741.38 234.25 736.66 226.75C735.76 225.32 735.24 223.86 734.21 222.51Q733.24 221.24 732.62 219.78C731.88 218.02 730.63 216.88 729.84 215.09 728.87 212.88 727.16 211.39 726.04 209.26Q724.69 206.7 722.92 204.55 721.11 202.35 719.49 200.03C716.95 196.39 714.67 192.59 711.27 189.61Q707.54 186.33 704.82 182.42C701.84 178.13 697.85 175.09 694.54 171.01 691.17 166.84 686.76 163.44 682.74 159.88 681.82 159.06 681.72 157.86 680.73 157.06Q677.63 154.54 674.69 152.45A.07.06-54.1 00674.6 152.47L674.46 152.68Q674.33 152.89 674.54 153.03 676.02 153.98 677.32 155.07 677.52 155.24 677.29 155.11C674.74 153.75 672.51 152.11 670.69 149.82Q669.3 148.07 667.31 146.74 660.44 142.14 653.7 138.48 648.98 135.92 644.35 132.84 639.79 129.81 632.39 126.59 617.15 119.97 605.94 116.26C604.1 115.65 602.23 115.81 600.47 115.15"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M600.47 115.15Q599.76 114.79 599.28 114.25"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M599.28 114.25Q596.64 112.8 593.69 111.95 583.64 109.04 573.39 106.9 563.66 104.88 556.72 105.12"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M556.72 105.12Q535.59 102.85 519.25 103.18 496.98 103.62 471.85 109.31C463.27 111.26 455.62 114.24 447.42 117.07Q446.79 117.29 446.29 117.73 445.73 118.22 445.1 118.66 444.28 119.23 443.25 119.55 441.01 120.23 438.8 120.98"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M556.72 105.12Q564.58 106.17 572.15 108.42C574.83 109.21 577.17 109.07 579.82 109.64Q580.27 109.74 580.44 110.18 580.67 110.82 581.38 110.86 584.36 111.04 587.12 112.11C589.32 112.96 591.64 112.98 593.93 113.32Q594.18 113.36 596.46 114.17 597.76 114.63 599.28 114.25"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M600.47 115.15Q594.24 113.95 588.04 112.66 587.87 112.62 587.83 112.79 587.79 112.96 587.95 113.01 608.88 119.22 628.21 129.72C633.49 132.58 638.52 136.35 642.99 140.24q14.51 12.64 31.59 30.96Q681.7 178.84 686.51 185.46 692.99 194.41 696.62 201.36q10.9 20.91 18.41 47.15Q719.1 262.72 719.73 277.51 719.97 283.23 720.2 288.75 720.33 291.8 718.01 296.26"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M422.48 603.46 422.19 604.18Q421.98 604.7 421.43 604.61 416.66 603.86 412.59 603.87 348.88 604.09 284.71 603.84 267.13 603.77 251.02 602.46q-26.06-2.13-48.84-16.86C192.75 579.51 184.08 570.63 176.23 562.27 168.02 553.53 162.76 544.13 157.62 533.43Q155.23 528.46 153.32 520.84 150.92 511.24 149.17 502.91 148.38 499.18 148.32 495.49 148.17 486.3 148.6 475.52 148.73 472.34 149.5 469.45C150.03 467.49 149.69 465.7 150.07 463.83Q151.96 454.51 155.02 444.09 155.48 442.53 153.86 442.72 152.56 442.88 151.06 444.55 146.57 449.55 141.46 455.04 139.5 457.14 138.35 459.6C134.82 467.17 129.7 474.41 125.5 481.29Q121.17 488.38 116.92 498.43q-5.45 12.9-6.99 23.22C108.92 528.49 108.26 535.39 107.3 542.31Q107.23 542.83 106.78 543.08C101.52 546 99.61 542.27 98.18 537.77"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M240.43 373.13Q248.72 374.13 256.93 375.23C258.7 375.47 260.5 375.38 262.22 375.92Q264.38 376.6 266.46 376.63 268.9 376.67 270.74 377.14 278.05 378.99 285.05 381.84"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M305.93 254.25l12.09-25.79"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M323.12 217.7 323.73 217.65Q324.29 217.6 324.32 217.04 324.34 216.71 324.56 216.47 325.2 215.76 324.74 216.59 324.56 216.9 324.39 217.19 324.34 217.28 324.42 217.33 324.53 217.4 324.61 217.5 324.73 217.67 324.8 217.48L327.22 210.74Q327.33 210.44 327.62 210.57L327.88 210.69Q327.9 210.7 327.87 210.75L326.51 213.47Q326.35 213.8 326.68 213.96L326.95 214.1A.12.12.0 00327.11 214.04Q328.64 210.79 330.13 208.73 334.34 202.94 338.25 196.98C340.99 192.8 344.46 188.91 347.45 184.72"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M423.21 127.52l11.43-4.11Q434.84 123.34 434.69 123.5 434.59 123.61 434.43 123.71 433.68 124.17 434.55 124.09 434.86 124.06 435.14 123.85 436.98 122.44 438.8 120.98"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M754.7 391.19Q747.41 397.76 741.58 399.89 740.39 400.32 736.23 400.97"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M840.02 375.3Q848.37 376.89 856.74 378.43 858.39 378.73 859.67 379.4 861.35 380.28 862.67 380.11 863.04 380.06 862.71 380.22 862.58 380.28 862.61 380.45A.15.15.0 00862.73 380.57Q866.19 381.33 869.24 383.34 871.62 384.91 874.77 386.12 881.6 388.74 888.03 392.3"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M934.75 436.96Q933.36 439.7 931.62 440.82 930.42 441.59 929.18 440.89C920.72 436.1 912.25 432.32 903.95 427.51Q895.85 422.81 887.81 419.18A.49.49.0 00887.11 419.62Q887.09 420.94 887.79 422.07C891.49 428.02 895.07 433.53 898.27 440Q900.43 444.36 901.68 448 905.05 457.86 905.65 470.46 906.19 481.77 906.47 492.77 906.79 505.08 902.92 519.5C901.13 526.18 898.98 532.57 895.88 538.78Q889.94 550.64 883.64 559.19 875.85 569.75 866.31 577.47 846.68 593.35 821.44 600.21C811.7 602.85 801.87 603.19 791.75 603.52Q762.45 604.46 736.15 604.08"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M572.05 680.95Q573.46 683.34 577.75 683.35 578.25 683.35 578.66 683.64 580.2 684.7 582 685.13 584.37 685.69 585.95 686.1 588.82 686.85 591.3 687.21C595.8 687.86 600.29 689.82 604.84 691.11Q618.05 694.87 630.86 698.4 635.66 699.73 651.25 702.9 652.68 703.19 654.31 703.37 655.83 703.54 657.52 704.26 660.29 705.43 664.46 705.55"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M664.46 705.55 700.51 716.23A.45.45.0 00701.07 715.67Q700.51 713.85 700.53 711.75 701.4 620.4 700.42 518.5 700.28 504.3 700.93 458.5 701.46 420.35 700.4 335.5 700.38 334.25 700.52 333.01A.89.88 85.1 00699.4 332.06Q679.62 337.71 665.91 342.7 641.72 351.5 619.65 358.49 592.44 367.1 572.6 374.15A1.9 1.89-9.9 00571.34 375.93Q571.18 513.33 571.39 654.5 571.41 667.76 572.05 680.95"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M664.46 705.55Q662.11 704.49 659.7 703.75 657.6 703.1 655.67 702.18 653.66 701.22 651.42 700.83C647.87 700.21 644.58 699.9 641.14 698.5Q637.25 696.91 633.31 695.66 624.29 692.77 614.98 690.12 607.98 688.12 599.95 686.55 588.3 684.27 584.74 683.66 576.99 682.31 572.05 680.95"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M506.73 508.96Q507.23 508.97 507.24 509.47L507.61 567.73A1.71 1.71.0 00509.29 569.43L512.14 569.48Q513.67 569.51 513.68 567.99L514.06 509.31A.65.65.0 01514.72 508.66Q524.38 508.75 533.37 508.51 534.45 508.49 535.45 508.14 536.77 507.68 535.94 506.56 525.56 492.62 516.03 477.72 513.11 473.15 510.64 468.22A.71.71.0 00509.34 468.32Q508.89 469.68 508.14 470.81 499.59 483.62 490.59 498.33C488.69 501.42 486.13 503.98 484.7 507.4A.85.84-75.5 00485.38 508.57C492.34 509.35 499.77 508.84 506.73 508.96"/><path stroke="#e2f3ff" vector-effect="non-scaling-stroke" d="M323.4069 219.9496A.86.45 98.9 00323.9846 219.1696.86.45 98.9 00323.6731 218.2504.86.45 98.9 00323.0954 219.0304.86.45 98.9 00323.4069 219.9496"/><path stroke="#76a3c4" vector-effect="non-scaling-stroke" d="M562.87 105.64Q563.01 105.79 563.21 105.74 563.58 105.65 563.24 105.48 563.06 105.39 562.89 105.5A.09.09.0 00562.87 105.64"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M679.22 372.53C679.23 371.09 679.54 369.88 679.85 368.51A.54.54.0 00679.29 367.85Q677.1 368.03 675.2 368.64 662.08 372.86 652.04 375.23 641.91 377.62 633.09 380.61 616.35 386.29 597.27 393.54C595.19 394.33 594.11 394.37 594.1 396.75Q593.82 453.73 594.23 510.63A.53.53.0 00594.87 511.14C612.16 507.54 629.52 503.71 647.2 500.59Q662.96 497.81 678.69 494.94 679.2 494.85 679.2 494.33 679.02 429.9 679.22 372.53"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M679.1894 535.7817a14.73 13.11 84.9 0011.7487-15.8371 14.73 13.11 84.9 00-14.3675-13.5063 14.73 13.11 84.9 00-11.7487 15.8371 14.73 13.11 84.9 0014.3675 13.5063"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M653.47 677.48C653.58 677.65 653.78 677.81 653.97 677.85Q666.29 680.76 678.03 684.83A.8.79-79.7 00679.09 684.09C679.65 637.75 679.02 593.21 679.12 547.6Q679.12 546.36 677.91 546.11 673.94 545.3 670.08 544.24C662.1 542.05 657.76 536.87 655.27 529.33A.58.57 76.9 00654.64 528.93Q625.29 532.84 594.78 537.76A.97.97.0 00593.96 538.72L594.14 660.05A1.82 1.81-79.8 00595.31 661.75Q600.8 663.83 606.74 665.66 624.02 670.98 642.31 674.66 645.11 675.22 647.69 676.02 650.42 676.85 653.38 677.42 653.44 677.43 653.47 677.48"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M663.15 390.16A.99.99.0 00661.85 389.22l-51.99 17.14A.99.99.0 00609.19 407.31L609.77 491.24A.99.99.0 00610.99 492.19L662.55 480A.99.99.0 00663.31 479.04L663.15 390.16"/><path stroke="#93b0c4" vector-effect="non-scaling-stroke" d="M610.01 645.38C610.01 646.98 610.77 648.42 612.26 649.06 620.63 652.63 629.2 654.01 637.6 656.47Q649.19 659.86 661.88 663.03 663.27 663.38 663.33 661.95 663.43 659.77 663.43 657.69 663.36 600.71 663.09 550.52A1.49 1.48 1.9 00661.71 549.05Q658.24 548.79 654.88 548.95 640.98 549.6 624.11 551.2 617.1 551.87 609.98 552.02A.46.45-1.3 00609.53 552.48Q609.94 600.04 610.01 645.38"/></g><path fill="#276089" d="M255.43 337.58A1.16 1.15-8 00256.16 336.62Q256.94 329.44 256.97 321.89 257.01 312.67 258.49 300.83 260.97 280.96 264.63 264.23 267.08 253.08 270.94 243.18C272.28 239.75 274.57 236.93 276.22 233.52 282.54 220.44 289.18 206.77 297.09 195.08c14.64-21.65 32.53-44.29 51-59.85Q358.75 126.26 377.98 112.74 386.74 106.58 396.21 101.52q32.66-17.44 64.71-24.98C478.3 72.45 497.66 69.39 516.24 68.95Q539.13 68.4 559.76 70.68 603.35 75.49 639 92.39c15.7 7.44 31.16 15.56 45.33 25.63C708.06 134.9 728.25 153.79 745.77 178.17q28.53 39.69 41.12 83.29C789.89 271.86 792.34 283.71 793.66 294.66Q796.2 315.76 797.41 337.48A1.29 1.29.0 00798.69 338.7Q815.49 338.72 831.21 339.39C868.91 341 905.17 359.29 933.64 383.01 939.46 387.86 944.72 394.3 949.76 400.34 970.1 424.7 985.53 454.74 991.58 486.07Q997.12 514.79 994.49 540.6 989.42 590.5 960.66 630.97 946.97 650.24 931.32 664.82 918.69 676.6 899.38 686.96 880.83 696.92 863.47 701.77 836.07 709.42 806.25 710.24 774.38 711.1 736.61 711.19A1.97 1.96 7.1 00734.72 712.66C734.18 714.76 733.61 717.01 733.65 719.2 733.84 728.71 732.87 743.34 721.34 746.39Q718.5 747.14 716.12 748.82 715.67 749.14 715.13 749.15 713.55 749.18 711.03 748.73C690.73 745.11 671.12 739.21 651.67 733.55 640.94 730.43 629.8 726.69 618.56 723.66Q594.7 717.23 575.34 712.41 569.8 711.03 554.9 710.73C535.85 710.34 517.09 709.97 498.26 710.05Q426.4 710.36 354.01 711.11C327.54 711.39 300.74 711.31 273.96 711.36Q244.61 711.41 219.84 708.3 208.25 706.84 188 700.75 172.03 695.95 155.79 686.75 144.05 680.09 137 674.83c-19.35-14.45-34.77-33.51-48.28-53.75C85.29 615.94 82.26 610.27 79.9 604.58 72.57 586.93 66.35 568.74 63.94 550.49 62.68 540.98 61.35 531.56 61.65 521.49q1.04-35.65 13.88-70.2Q79.3 441.12 83.46 433.44q17.03-31.42 43.33-53.64c21.23-17.94 45.35-29.63 72.03-36.95C216.78 337.93 234.03 338.04 253.26 337.98Q254.42 337.98 255.43 337.58zM438.8 120.98Q435.57 121.88 434.78 122.21 431.12 123.7 423.21 127.52C416.56 130.57 409.18 133.39 403.28 136.68Q394.42 141.62 387.66 147.15 379.83 153.54 367.83 164.27C360.8 170.55 354.15 177.8 347.45 184.72L342.5 189.88Q342.21 190.18 341.84 190.38 341.07 190.8 341.03 191.71 341.01 192.11 340.65 191.92 340.53 191.86 340.4 191.9 339.91 192.07 339.71 192.6 339.03 194.41 337.73 195.89 337.39 196.28 337.81 195.97 337.86 195.93 337.92 195.9 338.54 195.6 338.12 196.15 335.04 200.12 332.21 203.99 332.03 204.23 331.79 204.04L331.46 203.78Q331.41 203.74 331.44 203.69 332.29 202.33 333.12 201.24 333.2 201.13 333.11 201 333.07 200.95 333.03 201 332.05 202.53 330.7 203.79 330.54 203.94 330.75 203.87 330.79 203.85 330.84 203.87 331.05 203.97 331.06 204.2 331.13 205.63 329.99 206.5A1.85 1.78 81.9 00329.4 207.32Q329.06 208.29 328.39 209.14 328.09 209.52 327.61 209.58 325.89 209.82 326 211.78A1.3 1.27-28 01325.72 212.66Q324.07 214.8 323.12 217.7L318.02 228.46Q313.27 234.86 311.76 237.75 309.37 242.33 305.99 252.05 304.46 256.44 305.93 254.25 305.62 255.63 304.89 256.82 304.77 257.01 304.97 257.12L305.2 257.24Q305.23 257.26 305.24 257.22 306.13 255.05 307.26 252.78 307.34 252.62 307.51 252.71L307.73 252.82Q307.75 252.84 307.74 252.86 306.25 255.22 305.41 257.9 304.19 261.82 302.64 265.97 302.35 266.75 301.89 267.38C300.98 268.59 301.07 270.27 300.39 271.68Q299.06 274.47 298.36 277.53 298.26 277.97 297.92 278.28 297.32 278.84 297.16 279.76 296.53 283.42 295.29 287.79C294.38 290.99 294.69 294.16 293.83 297.36 292.99 300.5 293.12 303.75 292.59 306.9Q290.82 317.42 290.83 332.15C290.83 348.21 291.88 362.54 296.59 377.96Q298.48 384.15 300.49 390.37 301.18 392.52 299.65 390.86 298.11 389.19 295.54 387.72 290.29 384.72 285.05 381.84 283.43 380.56 281.9 380.1C279.89 379.5 278.26 378.64 276.39 378.23 274.28 377.77 271.98 376.83 270.21 376.37Q255.65 372.58 240.43 373.13 233.74 372.8 227 373.57 218.25 374.57 209.52 375.73 205.54 376.26 202.03 377.1 198.41 377.96 194.65 378.96 194.3 379.05 194.13 379.39A.74.72-79.5 01193.55 379.8Q189.92 380.15 187.2 381.49 184.73 382.71 182.18 383.81 179.39 385.01 177.01 386.52q-10.2 6.5-21.71 15.23-11.53 8.75-19.24 19.06C135.77 421.2 135.78 421.58 135.55 421.95Q132.47 426.87 128.69 431.08 125.96 434.1 123.91 437.19 121.72 440.47 119.57 443.8 119.26 444.28 119.09 444.83 118.95 445.24 118.63 445.53 116.84 447.17 116 449.6A1.7 1.69 80.4 01115.47 450.35Q115.1 450.66 114.87 451.08 111.96 456.46 110.57 460.85 109.15 465.35 107.7 469.25 104.74 477.22 102.44 485.43 102.33 485.83 102.71 485.65 103.01 485.5 102.86 485.13 102.81 485.01 102.88 485.11 102.9 485.13 102.93 485.15 102.99 485.16 102.97 485.22 101.22 490.96 100.5 495.31 98.77 505.78 98.79 517.39 98.79 517.88 98.5 518.29 98.25 518.63 98.23 519.04 97.87 528.44 98.18 537.77 98.75 547.92 100.1 554.97q3.73 19.49 13.1 38.62 15.56 31.76 43.03 52.74Q162.21 650.9 172.97 656.97 173.4 657.21 173.93 657.11 174.27 657.04 174.47 657.33 175.25 658.44 176.62 658.35 176.74 658.34 176.63 658.37 176.5 658.41 176.38 658.48 176.21 658.58 176.36 658.71 179.72 661.6 184.36 663.69 193.12 667.64 200.92 670.96 203.51 672.06 206.39 672.09C213.79 672.17 220.75 674.59 227.85 675.5Q241.51 677.25 258.42 677.27 335.37 677.38 410.89 677.26 415.61 677.25 421.31 677.06A.94.94.0 00422.22 676.12L422.48 603.46C422.72 519.97 422.5 436.49 422.59 353Q422.59 348.1 423.66 344.48C424.85 340.39 429.55 336.76 433.9 336.21Q436.66 335.85 439.49 335.86 494.27 335.98 572.06 335.69 584.93 335.64 589.91 334.78 597.94 333.4 606.26 330.74C615.95 327.65 626.03 324.05 635.5 320.14Q646.37 315.66 657.62 312.96 667.09 310.69 676.08 307.82 691.68 302.85 706.51 297.5 712.77 295.24 718.01 296.26 725.51 299 729.94 305.03 734.73 311.55 735.73 318.39 736.01 320.31 736.08 332.62 736.25 364.24 736.19 397 736.19 399.08 736.23 400.97 735.9 449.45 735.46 497.75 735.19 527.79 736.15 604.08L736.67 675.56A2.19 2.19.0 00738.87 677.73Q767.94 677.54 795.44 677.62 817.97 677.68 841.39 674.15 847.16 673.28 852.49 671.66C860.03 669.38 868.01 666.67 874.77 663.04 886.51 656.73 899.29 648.52 907.95 640.2Q915.92 632.55 923.63 625.37 929.31 620.09 933.33 613.73C935.19 610.8 937.51 608.42 939.12 605.35 940.33 603.02 941.92 600.89 943.21 598.54Q943.45 598.12 943.29 597.67L943.16 597.31A.83.81 57.5 01943.33 596.5Q944.29 595.46 944.39 593.99A1.71 1.69-26.2 01944.69 593.13Q945.61 591.77 945.97 590.12 946.3 588.59 946.91 587.17 949.11 582.1 951.27 576.84 951.72 575.76 951.83 574.56 951.94 573.38 952.44 572.26 953.13 570.7 953.66 569.03 955.4 563.55 956.49 558.44 958.79 547.6 959.78 535.62 961.35 516.61 958.61 497.75C957.77 492.01 956.07 486.17 954.92 480.43Q954.15 476.64 952.59 472.89 950.98 469.01 950.1 465.43 949.18 461.64 947.3 458.42C946.62 457.26 946.43 456.23 946.02 455.01Q945.59 453.76 944.8 452.54 943.11 449.92 941.65 447.11C941.28 446.4 941.38 445.57 941.14 445Q940.04 442.39 934.75 436.96c-13.04-17.58-27.99-33.32-46.72-44.66Q882.24 387.36 875.24 384.36 875.2 384.34 875.22 384.3L875.35 384.08Q875.43 383.93 875.59 384L877.96 385.14Q877.99 385.16 878 385.13L878.15 384.9Q878.28 384.7 878.05 384.62 872.13 382.5 867.06 380.02 863.08 378.07 858.83 376.66 854.27 375.14 850.01 374.21 849.95 374.2 849.93 374.26L849.87 374.51A.03.03.0 00849.9 374.55Q857.11 375.83 861.77 378.39 864.48 379.88 861.51 379.04 859.01 378.34 856.67 377.6 852.48 376.26 846.15 375.67 846.1 375.67 846.08 375.63 846.06 375.57 846.12 375.55 846.17 375.54 846.21 375.55 847.25 375.84 848.13 375.69 848.82 375.58 848.13 375.43 844.1 374.56 840.02 375.3C831.63 374.33 823.73 372.69 814.84 373.31 813.35 373.41 812.06 372.84 810.51 372.87Q803.01 373.01 796.27 374.55C793.63 375.15 790.95 375.45 788.28 375.61Q787.88 375.64 787.61 375.92 787.23 376.32 786.68 376.4 780.74 377.31 775.04 379.37 770.87 380.88 764.64 384.8 759.7 387.91 754.7 391.19 756.26 383.46 757.81 375.98 759.76 366.58 760.51 360.7 763.46 337.48 761.63 314.17 760.99 306.01 758.91 294.37 757.01 283.7 754.89 272.75 752.59 260.84 747.54 249.46 745.67 245.25 743.7 240.2 741.38 234.25 736.66 226.75C735.76 225.32 735.24 223.86 734.21 222.51Q733.24 221.24 732.62 219.78C731.88 218.02 730.63 216.88 729.84 215.09 728.87 212.88 727.16 211.39 726.04 209.26Q724.69 206.7 722.92 204.55 721.11 202.35 719.49 200.03C716.95 196.39 714.67 192.59 711.27 189.61Q707.54 186.33 704.82 182.42C701.84 178.13 697.85 175.09 694.54 171.01 691.17 166.84 686.76 163.44 682.74 159.88 681.82 159.06 681.72 157.86 680.73 157.06Q677.63 154.54 674.69 152.45A.07.06-54.1 00674.6 152.47L674.46 152.68Q674.33 152.89 674.54 153.03 676.02 153.98 677.32 155.07 677.52 155.24 677.29 155.11C674.74 153.75 672.51 152.11 670.69 149.82Q669.3 148.07 667.31 146.74 660.44 142.14 653.7 138.48 648.98 135.92 644.35 132.84 639.79 129.81 632.39 126.59 617.15 119.97 605.94 116.26C604.1 115.65 602.23 115.81 600.47 115.15Q599.76 114.79 599.28 114.25 596.64 112.8 593.69 111.95 583.64 109.04 573.39 106.9 563.66 104.88 556.72 105.12 535.59 102.85 519.25 103.18 496.98 103.62 471.85 109.31C463.27 111.26 455.62 114.24 447.42 117.07Q446.79 117.29 446.29 117.73 445.73 118.22 445.1 118.66 444.28 119.23 443.25 119.55 441.01 120.23 438.8 120.98zM572.05 680.95Q573.46 683.34 577.75 683.35 578.25 683.35 578.66 683.64 580.2 684.7 582 685.13 584.37 685.69 585.95 686.1 588.82 686.85 591.3 687.21C595.8 687.86 600.29 689.82 604.84 691.11Q618.05 694.87 630.86 698.4 635.66 699.73 651.25 702.9 652.68 703.19 654.31 703.37 655.83 703.54 657.52 704.26 660.29 705.43 664.46 705.55L700.51 716.23A.45.45.0 00701.07 715.67Q700.51 713.85 700.53 711.75 701.4 620.4 700.42 518.5 700.28 504.3 700.93 458.5 701.46 420.35 700.4 335.5 700.38 334.25 700.52 333.01A.89.88 85.1 00699.4 332.06Q679.62 337.71 665.91 342.7 641.72 351.5 619.65 358.49 592.44 367.1 572.6 374.15A1.9 1.89-9.9 00571.34 375.93Q571.18 513.33 571.39 654.5 571.41 667.76 572.05 680.95zM506.73 508.96Q507.23 508.97 507.24 509.47L507.61 567.73A1.71 1.71.0 00509.29 569.43L512.14 569.48Q513.67 569.51 513.68 567.99L514.06 509.31A.65.65.0 01514.72 508.66Q524.38 508.75 533.37 508.51 534.45 508.49 535.45 508.14 536.77 507.68 535.94 506.56 525.56 492.62 516.03 477.72 513.11 473.15 510.64 468.22A.71.71.0 00509.34 468.32Q508.89 469.68 508.14 470.81 499.59 483.62 490.59 498.33C488.69 501.42 486.13 503.98 484.7 507.4A.85.84-75.5 00485.38 508.57C492.34 509.35 499.77 508.84 506.73 508.96z"/><path fill="#fff" d="M556.72 105.12Q564.58 106.17 572.15 108.42C574.83 109.21 577.17 109.07 579.82 109.64Q580.27 109.74 580.44 110.18 580.67 110.82 581.38 110.86 584.36 111.04 587.12 112.11C589.32 112.96 591.64 112.98 593.93 113.32Q594.18 113.36 596.46 114.17 597.76 114.63 599.28 114.25 599.76 114.79 600.47 115.15 594.24 113.95 588.04 112.66 587.87 112.62 587.83 112.79 587.79 112.96 587.95 113.01 608.88 119.22 628.21 129.72C633.49 132.58 638.52 136.35 642.99 140.24q14.51 12.64 31.59 30.96Q681.7 178.84 686.51 185.46 692.99 194.41 696.62 201.36q10.9 20.91 18.41 47.15Q719.1 262.72 719.73 277.51 719.97 283.23 720.2 288.75 720.33 291.8 718.01 296.26 712.77 295.24 706.51 297.5 691.68 302.85 676.08 307.82 667.09 310.69 657.62 312.96 646.37 315.66 635.5 320.14C626.03 324.05 615.95 327.65 606.26 330.74Q597.94 333.4 589.91 334.78 584.93 335.64 572.06 335.69 494.27 335.98 439.49 335.86 436.66 335.85 433.9 336.21C429.55 336.76 424.85 340.39 423.66 344.48Q422.59 348.1 422.59 353C422.5 436.49 422.72 519.97 422.48 603.46L422.19 604.18Q421.98 604.7 421.43 604.61 416.66 603.86 412.59 603.87 348.88 604.09 284.71 603.84 267.13 603.77 251.02 602.46q-26.06-2.13-48.84-16.86C192.75 579.51 184.08 570.63 176.23 562.27 168.02 553.53 162.76 544.13 157.62 533.43Q155.23 528.46 153.32 520.84 150.92 511.24 149.17 502.91 148.38 499.18 148.32 495.49 148.17 486.3 148.6 475.52 148.73 472.34 149.5 469.45C150.03 467.49 149.69 465.7 150.07 463.83Q151.96 454.51 155.02 444.09 155.48 442.53 153.86 442.72 152.56 442.88 151.06 444.55 146.57 449.55 141.46 455.04 139.5 457.14 138.35 459.6C134.82 467.17 129.7 474.41 125.5 481.29Q121.17 488.38 116.92 498.43q-5.45 12.9-6.99 23.22C108.92 528.49 108.26 535.39 107.3 542.31Q107.23 542.83 106.78 543.08C101.52 546 99.61 542.27 98.18 537.77Q97.87 528.44 98.23 519.04 98.25 518.63 98.5 518.29 98.79 517.88 98.79 517.39 98.77 505.78 100.5 495.31 101.22 490.96 102.97 485.22 102.99 485.16 102.93 485.15 102.9 485.13 102.88 485.11 102.81 485.01 102.86 485.13 103.01 485.5 102.71 485.65 102.33 485.83 102.44 485.43 104.74 477.22 107.7 469.25 109.15 465.35 110.57 460.85 111.96 456.46 114.87 451.08 115.1 450.66 115.47 450.35A1.7 1.69 80.4 00116 449.6Q116.84 447.17 118.63 445.53 118.95 445.24 119.09 444.83 119.26 444.28 119.57 443.8 121.72 440.47 123.91 437.19 125.96 434.1 128.69 431.08 132.47 426.87 135.55 421.95C135.78 421.58 135.77 421.2 136.06 420.81Q143.77 410.5 155.3 401.75 166.81 393.02 177.01 386.52 179.39 385.01 182.18 383.81 184.73 382.71 187.2 381.49 189.92 380.15 193.55 379.8A.74.72-79.5 00194.13 379.39Q194.3 379.05 194.65 378.96 198.41 377.96 202.03 377.1 205.54 376.26 209.52 375.73 218.25 374.57 227 373.57 233.74 372.8 240.43 373.13 248.72 374.13 256.93 375.23C258.7 375.47 260.5 375.38 262.22 375.92Q264.38 376.6 266.46 376.63 268.9 376.67 270.74 377.14 278.05 378.99 285.05 381.84 290.29 384.72 295.54 387.72 298.11 389.19 299.65 390.86 301.18 392.52 300.49 390.37 298.48 384.15 296.59 377.96C291.88 362.54 290.83 348.21 290.83 332.15Q290.82 317.42 292.59 306.9C293.12 303.75 292.99 300.5 293.83 297.36 294.69 294.16 294.38 290.99 295.29 287.79Q296.53 283.42 297.16 279.76 297.32 278.84 297.92 278.28 298.26 277.97 298.36 277.53 299.06 274.47 300.39 271.68C301.07 270.27 300.98 268.59 301.89 267.38Q302.35 266.75 302.64 265.97 304.19 261.82 305.41 257.9 306.25 255.22 307.74 252.86 307.75 252.84 307.73 252.82L307.51 252.71Q307.34 252.62 307.26 252.78 306.13 255.05 305.24 257.22 305.23 257.26 305.2 257.24L304.97 257.12Q304.77 257.01 304.89 256.82 305.62 255.63 305.93 254.25l12.09-25.79L323.12 217.7 323.73 217.65Q324.29 217.6 324.32 217.04 324.34 216.71 324.56 216.47 325.2 215.76 324.74 216.59 324.56 216.9 324.39 217.19 324.34 217.28 324.42 217.33 324.53 217.4 324.61 217.5 324.73 217.67 324.8 217.48L327.22 210.74Q327.33 210.44 327.62 210.57L327.88 210.69Q327.9 210.7 327.87 210.75L326.51 213.47Q326.35 213.8 326.68 213.96L326.95 214.1A.12.12.0 00327.11 214.04Q328.64 210.79 330.13 208.73 334.34 202.94 338.25 196.98C340.99 192.8 344.46 188.91 347.45 184.72 354.15 177.8 360.8 170.55 367.83 164.27q12-10.73 19.83-17.12Q394.42 141.62 403.28 136.68C409.18 133.39 416.56 130.57 423.21 127.52l11.43-4.11Q434.84 123.34 434.69 123.5 434.59 123.61 434.43 123.71 433.68 124.17 434.55 124.09 434.86 124.06 435.14 123.85 436.98 122.44 438.8 120.98 441.01 120.23 443.25 119.55 444.28 119.23 445.1 118.66 445.73 118.22 446.29 117.73 446.79 117.29 447.42 117.07C455.62 114.24 463.27 111.26 471.85 109.31q25.13-5.69 47.4-6.13Q535.59 102.85 556.72 105.12zM323.4069 219.9496A.86.45 98.9 00323.9846 219.1696.86.45 98.9 00323.6731 218.2504.86.45 98.9 00323.0954 219.0304.86.45 98.9 00323.4069 219.9496z"/><path fill="#c4e6ff" d="M599.28 114.25Q597.76 114.63 596.46 114.17 594.18 113.36 593.93 113.32C591.64 112.98 589.32 112.96 587.12 112.11Q584.36 111.04 581.38 110.86 580.67 110.82 580.44 110.18 580.27 109.74 579.82 109.64C577.17 109.07 574.83 109.21 572.15 108.42Q564.58 106.17 556.72 105.12 563.66 104.88 573.39 106.9 583.64 109.04 593.69 111.95 596.64 112.8 599.28 114.25zm-36.41-8.61Q563.01 105.79 563.21 105.74 563.58 105.65 563.24 105.48 563.06 105.39 562.89 105.5A.09.09.0 00562.87 105.64z"/><path fill="#276089" d="M562.87 105.64A.09.09.0 01562.89 105.5Q563.06 105.39 563.24 105.48 563.58 105.65 563.21 105.74 563.01 105.79 562.87 105.64z"/><path fill="#c4e6ff" d="M600.47 115.15C602.23 115.81 604.1 115.65 605.94 116.26Q617.15 119.97 632.39 126.59 639.79 129.81 644.35 132.84 648.98 135.92 653.7 138.48 660.44 142.14 667.31 146.74 669.3 148.07 670.69 149.82C672.51 152.11 674.74 153.75 677.29 155.11Q677.52 155.24 677.32 155.07 676.02 153.98 674.54 153.03 674.33 152.89 674.46 152.68L674.6 152.47A.07.06-54.1 01674.69 152.45Q677.63 154.54 680.73 157.06C681.72 157.86 681.82 159.06 682.74 159.88 686.76 163.44 691.17 166.84 694.54 171.01 697.85 175.09 701.84 178.13 704.82 182.42Q707.54 186.33 711.27 189.61C714.67 192.59 716.95 196.39 719.49 200.03Q721.11 202.35 722.92 204.55 724.69 206.7 726.04 209.26C727.16 211.39 728.87 212.88 729.84 215.09 730.63 216.88 731.88 218.02 732.62 219.78Q733.24 221.24 734.21 222.51C735.24 223.86 735.76 225.32 736.66 226.75Q741.38 234.25 743.7 240.2 745.67 245.25 747.54 249.46 752.59 260.84 754.89 272.75 757.01 283.7 758.91 294.37 760.99 306.01 761.63 314.17 763.46 337.48 760.51 360.7 759.76 366.58 757.81 375.98 756.26 383.46 754.7 391.19 747.41 397.76 741.58 399.89 740.39 400.32 736.23 400.97 736.19 399.08 736.19 397 736.25 364.24 736.08 332.62 736.01 320.31 735.73 318.39 734.73 311.55 729.94 305.03 725.51 299 718.01 296.26 720.33 291.8 720.2 288.75 719.97 283.23 719.73 277.51 719.1 262.72 715.03 248.51 707.52 222.27 696.62 201.36 692.99 194.41 686.51 185.46 681.7 178.84 674.58 171.2q-17.08-18.32-31.59-30.96C638.52 136.35 633.49 132.58 628.21 129.72q-19.33-10.5-40.26-16.71Q587.79 112.96 587.83 112.79 587.87 112.62 588.04 112.66 594.24 113.95 600.47 115.15z"/><path fill="#c4e6ff" d="M438.8 120.98Q436.98 122.44 435.14 123.85 434.86 124.06 434.55 124.09 433.68 124.17 434.43 123.71 434.59 123.61 434.69 123.5 434.84 123.34 434.64 123.41l-11.43 4.11Q431.12 123.7 434.78 122.21 435.57 121.88 438.8 120.98z"/><path fill="#c4e6ff" d="M347.45 184.72C344.46 188.91 340.99 192.8 338.25 196.98Q334.34 202.94 330.13 208.73 328.64 210.79 327.11 214.04A.12.12.0 01326.95 214.1L326.68 213.96Q326.35 213.8 326.51 213.47L327.87 210.75Q327.9 210.7 327.88 210.69L327.62 210.57Q327.33 210.44 327.22 210.74L324.8 217.48Q324.73 217.67 324.61 217.5 324.53 217.4 324.42 217.33 324.34 217.28 324.39 217.19 324.56 216.9 324.74 216.59 325.2 215.76 324.56 216.47 324.34 216.71 324.32 217.04 324.29 217.6 323.73 217.65L323.12 217.7Q324.07 214.8 325.72 212.66A1.3 1.27-28 00326 211.78Q325.89 209.82 327.61 209.58 328.09 209.52 328.39 209.14 329.06 208.29 329.4 207.32A1.85 1.78 81.9 01329.99 206.5Q331.13 205.63 331.06 204.2 331.05 203.97 330.84 203.87 330.79 203.85 330.75 203.87 330.54 203.94 330.7 203.79 332.05 202.53 333.03 201 333.07 200.95 333.11 201 333.2 201.13 333.12 201.24 332.29 202.33 331.44 203.69 331.41 203.74 331.46 203.78L331.79 204.04Q332.03 204.23 332.21 203.99 335.04 200.12 338.12 196.15 338.54 195.6 337.92 195.9 337.86 195.93 337.81 195.97 337.39 196.28 337.73 195.89 339.03 194.41 339.71 192.6 339.91 192.07 340.4 191.9 340.53 191.86 340.65 191.92 341.01 192.11 341.03 191.71 341.07 190.8 341.84 190.38 342.21 190.18 342.5 189.88L347.45 184.72z"/><ellipse fill="#c4e6ff" cx="0" cy="0" transform="translate(323.54,219.10) rotate(98.9)" rx=".86" ry=".45"/><path fill="#c4e6ff" d="M305.93 254.25Q304.46 256.44 305.99 252.05 309.37 242.33 311.76 237.75 313.27 234.86 318.02 228.46l-12.09 25.79z"/><path fill="#fff" d="M664.46 705.55Q662.11 704.49 659.7 703.75 657.6 703.1 655.67 702.18 653.66 701.22 651.42 700.83C647.87 700.21 644.58 699.9 641.14 698.5Q637.25 696.91 633.31 695.66 624.29 692.77 614.98 690.12 607.98 688.12 599.95 686.55 588.3 684.27 584.74 683.66 576.99 682.31 572.05 680.95 571.41 667.76 571.39 654.5 571.18 513.33 571.34 375.93A1.9 1.89-9.9 01572.6 374.15Q592.44 367.1 619.65 358.49 641.72 351.5 665.91 342.7 679.62 337.71 699.4 332.06A.89.88 85.1 01700.52 333.01Q700.38 334.25 700.4 335.5 701.46 420.35 700.93 458.5 700.28 504.3 700.42 518.5 701.4 620.4 700.53 711.75 700.51 713.85 701.07 715.67A.45.45.0 01700.51 716.23L664.46 705.55zm14.76-333.02C679.23 371.09 679.54 369.88 679.85 368.51A.54.54.0 00679.29 367.85Q677.1 368.03 675.2 368.64 662.08 372.86 652.04 375.23 641.91 377.62 633.09 380.61 616.35 386.29 597.27 393.54C595.19 394.33 594.11 394.37 594.1 396.75Q593.82 453.73 594.23 510.63A.53.53.0 00594.87 511.14C612.16 507.54 629.52 503.71 647.2 500.59Q662.96 497.81 678.69 494.94 679.2 494.85 679.2 494.33 679.02 429.9 679.22 372.53zM679.1894 535.7817a14.73 13.11 84.9 0011.7487-15.8371 14.73 13.11 84.9 00-14.3675-13.5063 14.73 13.11 84.9 00-11.7487 15.8371 14.73 13.11 84.9 0014.3675 13.5063zM653.47 677.48C653.58 677.65 653.78 677.81 653.97 677.85Q666.29 680.76 678.03 684.83A.8.79-79.7 00679.09 684.09C679.65 637.75 679.02 593.21 679.12 547.6Q679.12 546.36 677.91 546.11 673.94 545.3 670.08 544.24C662.1 542.05 657.76 536.87 655.27 529.33A.58.57 76.9 00654.64 528.93Q625.29 532.84 594.78 537.76A.97.97.0 00593.96 538.72L594.14 660.05A1.82 1.81-79.8 00595.31 661.75Q600.8 663.83 606.74 665.66 624.02 670.98 642.31 674.66 645.11 675.22 647.69 676.02 650.42 676.85 653.38 677.42 653.44 677.43 653.47 677.48z"/><path fill="#276089" d="M679.22 372.53Q679.02 429.9 679.2 494.33 679.2 494.85 678.69 494.94 662.96 497.81 647.2 500.59C629.52 503.71 612.16 507.54 594.87 511.14A.53.53.0 01594.23 510.63Q593.82 453.73 594.1 396.75C594.11 394.37 595.19 394.33 597.27 393.54Q616.35 386.29 633.09 380.61 641.91 377.62 652.04 375.23 662.08 372.86 675.2 368.64 677.1 368.03 679.29 367.85A.54.54.0 01679.85 368.51C679.54 369.88 679.23 371.09 679.22 372.53zM663.15 390.16A.99.99.0 00661.85 389.22l-51.99 17.14A.99.99.0 00609.19 407.31L609.77 491.24A.99.99.0 00610.99 492.19L662.55 480A.99.99.0 00663.31 479.04L663.15 390.16z"/><path fill="#fff" d="M840.02 375.3Q848.37 376.89 856.74 378.43 858.39 378.73 859.67 379.4 861.35 380.28 862.67 380.11 863.04 380.06 862.71 380.22 862.58 380.28 862.61 380.45A.15.15.0 00862.73 380.57Q866.19 381.33 869.24 383.34 871.62 384.91 874.77 386.12 881.6 388.74 888.03 392.3C906.76 403.64 921.71 419.38 934.75 436.96Q933.36 439.7 931.62 440.82 930.42 441.59 929.18 440.89C920.72 436.1 912.25 432.32 903.95 427.51Q895.85 422.81 887.81 419.18A.49.49.0 00887.11 419.62Q887.09 420.94 887.79 422.07C891.49 428.02 895.07 433.53 898.27 440Q900.43 444.36 901.68 448 905.05 457.86 905.65 470.46 906.19 481.77 906.47 492.77 906.79 505.08 902.92 519.5C901.13 526.18 898.98 532.57 895.88 538.78Q889.94 550.64 883.64 559.19 875.85 569.75 866.31 577.47 846.68 593.35 821.44 600.21C811.7 602.85 801.87 603.19 791.75 603.52Q762.45 604.46 736.15 604.08 735.19 527.79 735.46 497.75 735.9 449.45 736.23 400.97 740.39 400.32 741.58 399.89 747.41 397.76 754.7 391.19 759.7 387.91 764.64 384.8 770.87 380.88 775.04 379.37 780.74 377.31 786.68 376.4 787.23 376.32 787.61 375.92 787.88 375.64 788.28 375.61C790.95 375.45 793.63 375.15 796.27 374.55Q803.01 373.01 810.51 372.87C812.06 372.84 813.35 373.41 814.84 373.31 823.73 372.69 831.63 374.33 840.02 375.3z"/><path fill="#c4e6ff" d="M285.05 381.84Q278.05 378.99 270.74 377.14 268.9 376.67 266.46 376.63 264.38 376.6 262.22 375.92C260.5 375.38 258.7 375.47 256.93 375.23Q248.72 374.13 240.43 373.13 255.65 372.58 270.21 376.37C271.98 376.83 274.28 377.77 276.39 378.23 278.26 378.64 279.89 379.5 281.9 380.1Q283.43 380.56 285.05 381.84z"/><path fill="#c4e6ff" d="M888.03 392.3Q881.6 388.74 874.77 386.12 871.62 384.91 869.24 383.34 866.19 381.33 862.73 380.57A.15.15.0 01862.61 380.45Q862.58 380.28 862.71 380.22 863.04 380.06 862.67 380.11 861.35 380.28 859.67 379.4 858.39 378.73 856.74 378.43 848.37 376.89 840.02 375.3 844.1 374.56 848.13 375.43 848.82 375.58 848.13 375.69 847.25 375.84 846.21 375.55 846.17 375.54 846.12 375.55 846.06 375.57 846.08 375.63 846.1 375.67 846.15 375.67 852.48 376.26 856.67 377.6 859.01 378.34 861.51 379.04 864.48 379.88 861.77 378.39 857.11 375.83 849.9 374.55A.03.03.0 01849.87 374.51L849.93 374.26Q849.95 374.2 850.01 374.21 854.27 375.14 858.83 376.66 863.08 378.07 867.06 380.02 872.13 382.5 878.05 384.62 878.28 384.7 878.15 384.9L878 385.13Q877.99 385.16 877.96 385.14L875.59 384Q875.43 383.93 875.35 384.08L875.22 384.3Q875.2 384.34 875.24 384.36q7 3 12.79 7.94z"/><path fill="#fff" d="M663.15 390.16 663.31 479.04A.99.99.0 01662.55 480L610.99 492.19A.99.99.0 01609.77 491.24L609.19 407.31A.99.99.0 01609.86 406.36l51.99-17.14A.99.99.0 01663.15 390.16z"/><path fill="#c4e6ff" d="M934.75 436.96Q940.04 442.39 941.14 445C941.38 445.57 941.28 446.4 941.65 447.11Q943.11 449.92 944.8 452.54 945.59 453.76 946.02 455.01C946.43 456.23 946.62 457.26 947.3 458.42Q949.18 461.64 950.1 465.43 950.98 469.01 952.59 472.89 954.15 476.64 954.92 480.43C956.07 486.17 957.77 492.01 958.61 497.75Q961.35 516.61 959.78 535.62 958.79 547.6 956.49 558.44 955.4 563.55 953.66 569.03 953.13 570.7 952.44 572.26 951.94 573.38 951.83 574.56 951.72 575.76 951.27 576.84 949.11 582.1 946.91 587.17 946.3 588.59 945.97 590.12 945.61 591.77 944.69 593.13A1.71 1.69-26.2 00944.39 593.99Q944.29 595.46 943.33 596.5A.83.81 57.5 00943.16 597.31L943.29 597.67Q943.45 598.12 943.21 598.54C941.92 600.89 940.33 603.02 939.12 605.35 937.51 608.42 935.19 610.8 933.33 613.73Q929.31 620.09 923.63 625.37 915.92 632.55 907.95 640.2C899.29 648.52 886.51 656.73 874.77 663.04 868.01 666.67 860.03 669.38 852.49 671.66Q847.16 673.28 841.39 674.15 817.97 677.68 795.44 677.62 767.94 677.54 738.87 677.73A2.19 2.19.0 01736.67 675.56L736.15 604.08Q762.45 604.46 791.75 603.52C801.87 603.19 811.7 602.85 821.44 600.21Q846.68 593.35 866.31 577.47 875.85 569.75 883.64 559.19 889.94 550.64 895.88 538.78C898.98 532.57 901.13 526.18 902.92 519.5Q906.79 505.08 906.47 492.77 906.19 481.77 905.65 470.46 905.05 457.86 901.68 448 900.43 444.36 898.27 440C895.07 433.53 891.49 428.02 887.79 422.07Q887.09 420.94 887.11 419.62A.49.49.0 01887.81 419.18Q895.85 422.81 903.95 427.51C912.25 432.32 920.72 436.1 929.18 440.89Q930.42 441.59 931.62 440.82 933.36 439.7 934.75 436.96z"/><path fill="#c4e6ff" d="M422.48 603.46 422.22 676.12A.94.94.0 01421.31 677.06Q415.61 677.25 410.89 677.26 335.37 677.38 258.42 677.27 241.51 677.25 227.85 675.5C220.75 674.59 213.79 672.17 206.39 672.09Q203.51 672.06 200.92 670.96 193.12 667.64 184.36 663.69 179.72 661.6 176.36 658.71 176.21 658.58 176.38 658.48 176.5 658.41 176.63 658.37 176.74 658.34 176.62 658.35 175.25 658.44 174.47 657.33 174.27 657.04 173.93 657.11 173.4 657.21 172.97 656.97 162.21 650.9 156.23 646.33q-27.47-20.98-43.03-52.74Q103.83 574.46 100.1 554.97 98.75 547.92 98.18 537.77C99.61 542.27 101.52 546 106.78 543.08Q107.23 542.83 107.3 542.31C108.26 535.39 108.92 528.49 109.93 521.65Q111.47 511.33 116.92 498.43q4.25-10.05 8.58-17.14C129.7 474.41 134.82 467.17 138.35 459.6Q139.5 457.14 141.46 455.04 146.57 449.55 151.06 444.55 152.56 442.88 153.86 442.72 155.48 442.53 155.02 444.09 151.96 454.51 150.07 463.83C149.69 465.7 150.03 467.49 149.5 469.45Q148.73 472.34 148.6 475.52 148.17 486.3 148.32 495.49 148.38 499.18 149.17 502.91 150.92 511.24 153.32 520.84 155.23 528.46 157.62 533.43C162.76 544.13 168.02 553.53 176.23 562.27 184.08 570.63 192.75 579.51 202.18 585.6q22.78 14.73 48.84 16.86Q267.13 603.77 284.71 603.84 348.88 604.09 412.59 603.87 416.66 603.86 421.43 604.61 421.98 604.7 422.19 604.18L422.48 603.46z"/><path fill="#fff" d="M506.73 508.96C499.77 508.84 492.34 509.35 485.38 508.57A.85.84-75.5 01484.7 507.4C486.13 503.98 488.69 501.42 490.59 498.33q9-14.71 17.55-27.52Q508.89 469.68 509.34 468.32A.71.71.0 01510.64 468.22Q513.11 473.15 516.03 477.72 525.56 492.62 535.94 506.56 536.77 507.68 535.45 508.14 534.45 508.49 533.37 508.51 524.38 508.75 514.72 508.66A.65.65.0 00514.06 509.31L513.68 567.99Q513.67 569.51 512.14 569.48L509.29 569.43A1.71 1.71.0 01507.61 567.73L507.24 509.47Q507.23 508.97 506.73 508.96z"/><ellipse fill="#276089" cx="0" cy="0" transform="translate(677.88,521.11) rotate(84.9)" rx="14.73" ry="13.11"/><path fill="#276089" d="M653.38 677.42Q650.42 676.85 647.69 676.02 645.11 675.22 642.31 674.66 624.02 670.98 606.74 665.66 600.8 663.83 595.31 661.75A1.82 1.81-79.8 01594.14 660.05L593.96 538.72A.97.97.0 01594.78 537.76Q625.29 532.84 654.64 528.93A.58.57 76.9 01655.27 529.33C657.76 536.87 662.1 542.05 670.08 544.24Q673.94 545.3 677.91 546.11 679.12 546.36 679.12 547.6C679.02 593.21 679.65 637.75 679.09 684.09A.8.79-79.7 01678.03 684.83Q666.29 680.76 653.97 677.85C653.78 677.81 653.58 677.65 653.47 677.48Q653.44 677.43 653.38 677.42zm-43.37-32.04C610.01 646.98 610.77 648.42 612.26 649.06 620.63 652.63 629.2 654.01 637.6 656.47Q649.19 659.86 661.88 663.03 663.27 663.38 663.33 661.95 663.43 659.77 663.43 657.69 663.36 600.71 663.09 550.52A1.49 1.48 1.9 00661.71 549.05Q658.24 548.79 654.88 548.95 640.98 549.6 624.11 551.2 617.1 551.87 609.98 552.02A.46.45-1.3 00609.53 552.48Q609.94 600.04 610.01 645.38z"/><path fill="#fff" d="M612.26 649.06C610.77 648.42 610.01 646.98 610.01 645.38Q609.94 600.04 609.53 552.48A.46.45-1.3 01609.98 552.02Q617.1 551.87 624.11 551.2 640.98 549.6 654.88 548.95 658.24 548.79 661.71 549.05A1.49 1.48 1.9 01663.09 550.52Q663.36 600.71 663.43 657.69 663.43 659.77 663.33 661.95 663.27 663.38 661.88 663.03 649.19 659.86 637.6 656.47C629.2 654.01 620.63 652.63 612.26 649.06z"/><path fill="#c4e6ff" d="M664.46 705.55Q660.29 705.43 657.52 704.26 655.83 703.54 654.31 703.37 652.68 703.19 651.25 702.9 635.66 699.73 630.86 698.4 618.05 694.87 604.84 691.11C600.29 689.82 595.8 687.86 591.3 687.21Q588.82 686.85 585.95 686.1 584.37 685.69 582 685.13 580.2 684.7 578.66 683.64 578.25 683.35 577.75 683.35 573.46 683.34 572.05 680.95 576.99 682.31 584.74 683.66 588.3 684.27 599.95 686.55 607.98 688.12 614.98 690.12 624.29 692.77 633.31 695.66 637.25 696.91 641.14 698.5C644.58 699.9 647.87 700.21 651.42 700.83Q653.66 701.22 655.67 702.18 657.6 703.1 659.7 703.75 662.11 704.49 664.46 705.55z"/></svg></span><span class=navbar-brand__name>Apache OpenServerless™</span></a><div class="td-navbar-nav-scroll ms-md-auto" id=main_navbar><ul class=navbar-nav><li class=nav-item><a class=nav-link href=/about/><span>About</span></a></li><li class=nav-item><a class=nav-link href=/blog/><span>Blog</span></a></li><li class=nav-item><a class="nav-link active" href=/docs/><span>Docs</span></a></li><li class=nav-item><a class=nav-link href=/community/><span>Community</span></a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" role=button data-bs-toggle=dropdown aria-haspopup=true aria-expanded=false href><span>Apache Software Foundation</span></a><ul class=dropdown-menu><li><a class=dropdown-item href=https://www.apache.org/>Apache Homepage</a></li><li><a class=dropdown-item href=https://www.apache.org/licenses/>License</a></li><li><a class=dropdown-item href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a></li><li><a class=dropdown-item href=https://www.apache.org/foundation/thanks.html>Thanks</a></li><li><a class=dropdown-item href=https://www.apache.org/security/>Security</a></li><li><a class=dropdown-item href=https://privacy.apache.org/policies/privacy-policy-public.html>Privacy</a></li><li><a class=dropdown-item href=https://www.apache.org/events/current-event>Events</a></li></ul></li></ul></div></div></nav></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-xl-nowrap"><main class="col-12 col-md-9 col-xl-8 ps-md-5" role=main><div class=td-content><div class="pageinfo pageinfo-primary d-print-none"><p>This is the multi-page printable view of this section. |
| <a href=# onclick="return print(),!1">Click here to print</a>.</p><p><a href=/docs/installation/>Return to the regular view of this page</a>.</p></div><h1 class=title>Installation</h1><div class=lead>How to and where install OpenServerless</div><ul><li>1: <a href=#pg-8c3f05165c53384fa59c1453a0fb9b64>Quick Start</a></li><ul></ul><li>2: <a href=#pg-1642ee41003decf99634e3d9c714851c>Download</a></li><ul></ul><li>3: <a href=#pg-d88677d4167778f5d3ca8a81629227c5>Prerequisites</a></li><ul><li>3.1: <a href=#pg-0224021be1c39f3dd5683066e33d007c>Local Docker</a></li><ul></ul><li>3.2: <a href=#pg-b0ef4b2e79b17c0bf42df9cbc4da7029>Linux Server</a></li><ul><li>3.2.1: <a href=#pg-c8f8a7091cc35f968fc5e121e51c459b>SSH and Sudo</a></li><ul></ul><li>3.2.2: <a href=#pg-7de93c022dce0399d0fb529ba96bc7e6>Server on AWS</a></li><ul></ul><li>3.2.3: <a href=#pg-3a59e283e51e41b6d5b36b0ca31c690c>Server on Azure</a></li><ul></ul><li>3.2.4: <a href=#pg-8e157365d16cb8fe54ef2c7d50505022>Install K3S</a></li><ul></ul><li>3.2.5: <a href=#pg-b4e9b33b69177f5f056217b0d67c2031>Install MicroK8S</a></li><ul></ul></ul><li>3.3: <a href=#pg-f32ce604d7868701850b6029ab564835>Kubernetes Cluster</a></li><ul><li>3.3.1: <a href=#pg-1fd119711d8fba54dc56350b34daad88>Amazon EKS</a></li><ul></ul><li>3.3.2: <a href=#pg-c5304e0f61e6fb87af4b9940c2922fec>Azure AKS</a></li><ul></ul><li>3.3.3: <a href=#pg-e0ed70c138e5d50c8207cdcc1a07f4e0>Generic Kubernetes</a></li><ul></ul></ul></ul><li>4: <a href=#pg-f6b9a66f9506e4a7437691a389daca4f>Configure OpenServerless</a></li><ul><li>4.1: <a href=#pg-be207599c3aa71cb110feb062b890918>DNS and SSL</a></li><ul></ul><li>4.2: <a href=#pg-29e1dfdb1ff6aee88ce1de74e2c1f27d>Services</a></li><ul></ul></ul><li>5: <a href=#pg-234d738d46569ad9a8a7ae7fed565a21>Install OpenServerless</a></li><ul><li>5.1: <a href=#pg-468eb1c803501e0c8fee24ddc1d4914c>Docker</a></li><ul></ul><li>5.2: <a href=#pg-2a348e473e676744aeb27b6b290fa85c>Linux Server</a></li><ul></ul><li>5.3: <a href=#pg-e2ad6ea02f40220590e02be2e3387f01>Kubernetes cluster</a></li><ul></ul></ul><li>6: <a href=#pg-c7d6e75a293d35b4ca7156b87967599c>Troubleshooting</a></li><ul></ul></ul><div class=content><h2 id=installation>Installation</h2><h3 id=overview>Overview</h3><p>If you are in hurry and you think this guide is TL;DR (too long, don’t |
| read), please read at least our <a href=/docs/installation/quickstart/>Quick Start</a> |
| single page installation guide.</p><p>It gives you an overview of the installation process, omitting some more |
| advanced details. It can be enough to get you started and install |
| OpenServerless.</p><p>Once you want to know more, you can come back.</p><p>If you instead want the read the full documentation first, please read |
| on.</p><h3 id=steps-to-follow>Steps to follow</h3><p>OpenServerless can be installed in many environments, using our powerful |
| command line interface <code>ops</code>.</p><p>So you should start downloading the CLI <a href=/docs/installation/download/>from this |
| page</a>.</p><p>Once you installed <code>ops</code>, before installing you need to <a href=/docs/installation/prereq/>check the |
| prerequisites</a> for the installation, and satisfy |
| them</p><p>If the the prerequisites are OK, you can make your choices of what you |
| want to <a href=/docs/installation/configure/>Configure</a> your OpenServerless |
| installation.</p><p>Finally, once you have:</p><ol><li><p>downloaded <code>ops</code></p></li><li><p>satisfied the prerequisites</p></li><li><p>configured your installation</p></li></ol><p>you can choose where to install, either:</p><ul><li><p>in your <a href=/docs/installation/install/docker/>Local machine</a></p></li><li><p>in a <a href=/docs/installation/install/server/>Linux server</a></p></li><li><p>in a <a href=/docs/installation/install/cluster/>Kubernetes cluster</a></p></li></ul><h3 id=post-installation>Post Installation</h3><p>After the installation, you can change later the configuration and |
| update the system.</p><h3 id=support>Support</h3><p>If you have issues, please check:</p><ul><li><p>the <a href=/docs/installation/debug/>Troubleshooting</a> page</p></li><li><p>our <a href=http://nuvolaris.discourse.group>Discussion forum</a></p></li></ul></div></div><div class=td-content style=page-break-before:always><h1 id=pg-8c3f05165c53384fa59c1453a0fb9b64>1 - Quick Start</h1><div class=lead>Fast path to install a self-hosted OpenServerless</div><h2 id=quick-start>Quick Start</h2><p>This is a quick start guide to the installation process, targeting |
| experienced users in a hurry.</p><p>It provides a high-level overview of the installation process, omitting |
| advanced of details. The missing pieces are covered in the rest of the |
| documentation.</p><p>Of course, if this guide is not enough and things fail, you can always |
| apply the rule: “if everything fails, read the manual”.</p><h2 id=prerequisites>Prerequisites</h2><p>Start ensuring the prerequsites are satisfied:</p><ul><li><p><a href=/docs/installation/download/>Download and install</a> <code>ops</code>, the |
| OpenServerless CLI, picking version suitable for your environment. |
| We support 64-bit versions of recent Windows, MacOS and major Linux |
| distributions.</p></li><li><p>Check that ops is correctly installed: open the terminal and write:</p><p>ops -info</p></li><li><p>Configure the services you want to enable. By default, |
| OpenServerless will install only the serverless engine, accessible |
| in http with no services enabled.</p></li></ul><p>If you want to enable all the services, use:</p><pre><code>ops config enable --all |
| </code></pre><p>otherwise pick the services you want, among <code>--redis</code>, <code>--mongodb</code>, |
| <code>--minio</code>, <code>--cron</code>, <code>--postgres</code>. Note that <code>--mongodb</code> is actually |
| <a href=https://www.ferretdb.com/>FerretDB</a> and requires Postgres which is |
| implicitly also enabled. More details <a href=/docs/installation/configure/>here</a>.</p><p>Now, choose where to install OpenServerless.</p><p>Your options are:</p><ul><li><p><a href=/docs/installation/quickstart/#locally>locally</a> in your workstation;</p></li><li><p>in a Linux <a href=/docs/installation/quickstart/#server>server</a> in your intranet</p></li><li><p>in a Linux <a href=/docs/installation/quickstart/#internet-server>server</a> available on Internet</p></li><li><p>in a Kubernetes <a href=/docs/installation/quickstart/#cluster>cluster</a> in your intranet</p></li><li><p>in <a href=/docs/installation/quickstart/#cloud-cluster>cloud</a>, where you can provision a Kubernetes |
| cluster</p></li></ul><h2 id=local-installation>Local Installation</h2><p>If you have a <strong>decent</strong> workstation (with at least 16GB of memory) |
| running a <strong>recent</strong> <strong>64-bit</strong> operating system, you can install |
| <a href=https://www.docker.com/products/docker-desktop/>Docker Desktop</a> and |
| then install OpenServerless in it. Once you have:</p><ol><li><p>installed the CLI</p></li><li><p>configured the services</p></li><li><p>installed Docker Desktop</p></li></ol><p>Make sure Docker Desktop its running before the next operation. Install OpenServerless and its services in Docker with just this |
| command:</p><pre><code>ops setup devcluster |
| </code></pre><p>Once it is installed, you can proceed to read the |
| <a href=/docs/installation/quickstart/#../../tutorial/index.adoc>tutorial</a> to learn how to code with it.</p><p>NOTE: At least 16GB of memory is ideal, but if you know what you’re |
| doing and can tolerate inefficiency, you can install with less using:</p><pre><code>export PREFL_NO_MEM_CHECK=1 |
| export PLEFL_NO_CPU_CHECK=1 |
| </code></pre><h2 id=internet-server-configuration>Internet Server Configuration</h2><p>If you have access to a server on the Internet, you will know its <strong>IP |
| address</strong>.</p><p>Many cloud providers also give you a DNS name usually derived by the IP |
| and very hard to remember such as |
| <code>ec2-12-34-56-78.us-west-2.compute.amazonaws.com</code>.</p><p>Once you got the IP address and the DNS name, you can give to your |
| server a bettername <a href=https://en.wikipedia.org/wiki/List_of_managed_DNS_providers>using a domain name |
| provider</a>. |
| We cannot give here precise instructions as there are many DNS providers |
| and each has different rules to do the setup. Check with your chosen |
| domain name provider.</p><p>If you have this name, configure it and enable DNS with:</p><pre><code>ops config apihost <dns-name> --tls=<email-address> |
| </code></pre><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=important><p class=quote-title>❗ <strong>IMPORTANT</strong></p><p>Replace the <code><dns-name></code> with the actual DNS name, without using prefixes like <code>http://</code> or suffixes like <code>:443</code>. Also, |
| replace <email-address>` with your actual email address.</p></blockquote><p>then proceed with the server installation.</p><h2 id=server-installation>Server Installation</h2><p>Once you got access to a Linux server with:</p><ol><li><p>An IP address or DNS name, referred to as <code><server></code></p></li><li><p>Passwordless access with <code>ssh</code> to a Linux user <code><user></code></p></li><li><p>At least 8GB of memory and 50GB of disk space available</p></li><li><p>The user <code><user></code> has passwordless <code>sudo</code> rights</p></li><li><p>The firewall that allows traffic to ports 80, 443 and 6443</p></li><li><p><strong>Without</strong> any Docker or Kubernetes installed</p></li><li><p><strong>Without</strong> any Web server or Web application installed</p></li></ol><p>then you can install OpenServerless in it.</p><p>The server can be physical or virtual. We need Kubernetes in it but the |
| installer takes care of installing also a flavor of Kubernetes, |
| <a href=https://k3s.io>K3S</a>, courtesy of |
| <a href=https://github.com/alexellis/k3sup>K3Sup</a>.</p><p>To install OpenServerless, first check you have access to the server |
| with:</p><pre><code>ssh <user>@<server> sudo hostname |
| </code></pre><p>You should see no errors and read the internal hostname of your server.</p><p>If you do not receive errors, you can proceed to install OpenServerless |
| with this command:</p><pre><code>ops setup server <server> <user> |
| </code></pre><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=important><p class=quote-title>❗ <strong>IMPORTANT</strong></p><p>Replace in the commands <code><server></code> with the address of your server, and |
| <code><user></code> with the actual user to use in your server. The <code><server></code> can |
| be the same as <code><dns-name></code> you have configured in the previous |
| paragraph, if you did so, or simply the IP address of a server on your |
| intranet.</p></blockquote><p>Now wait until the installation completes. Once it is installed, you can |
| proceed to read the <a href=/docs/installation/quickstart/#tutorial:index.adoc>tutorial</a> to learn how to |
| code with it.</p><h2 id=cloud-cluster-provisioning>Cloud Cluster Provisioning</h2><p>If you have access to a cloud provider, you can set up a Kubernetes |
| cluster in it. The Kubernetes cluster needs to satisfy certain |
| <a href=/docs/installation/quickstart/#../prereq/kubernetes/cluster/index.adoc>prerequisites</a> to be able to |
| install OpenServerless with no issues.</p><p>We provide the support to easily configure and install a compliant |
| Kubernetes cluster for the following clouds:</p><ul><li><p><a href=/docs/installation/quickstart/#aws>Amazon AWS</a></p></li><li><p><a href=/docs/installation/quickstart/#azure>Microsoft Azure</a></p></li><li><p><a href=/docs/installation/quickstart/#gcloud>Google Cloud</a></p></li></ul><p>At the end of the installation you will have available and accessible a |
| Kubernetes Cluster able to install OpenServerless, so proceed with a |
| <a href=/docs/installation/quickstart/#cluster>cluster installation</a>.</p><h3 id=amazon-aws>Amazon AWS</h3><p>Configure and install an Amazon EKS cluster on Amazon AWS with:</p><pre><code>ops config eks |
| ops cloud eks create |
| </code></pre><p>then <a href=/docs/installation/quickstart/#cluster>install the cluster</a>.</p><h3 id=azure-aks>Azure AKS</h3><p>Configure and install an Azure AKS cluster on Microsoft Azure with:</p><pre><code>ops config aks |
| ops cloud aks create |
| </code></pre><p>then <a href=/docs/installation/quickstart/#cluster>install the cluster</a>.</p><h3 id=google-cloud-gke>Google Cloud GKE</h3><p>Configure and install a Google Cloud GKE with:</p><pre><code>ops config gke |
| ops cloud gke create |
| </code></pre><p>then <a href=/docs/installation/quickstart/#cluster>install the cluster</a>.</p><h2 id=cluster-install>Cluster Install</h2><p>In short, if you have access to kubernetes cluster, you can install |
| OpenServerless with:</p><pre><code>ops setup cluster |
| </code></pre><p>For a slightly longer discussion, checking prerequisites before |
| installing, read on.</p><h3 id=prerequisites-to-install>Prerequisites to install</h3><p>If you have access to a Kubernetes cluster with:</p><ol><li><p>Access to the <code>cluster-admin</code> role</p></li><li><p>Block storage configured as the default storage class</p></li><li><p>The <code>nginx-ingress</code> installed</p></li><li><p>Knowledge of the IP address of your <code>nginx-ingress</code> controller</p></li></ol><p>you can install OpenServerless in it. You can read <a href=/docs/installation/quickstart/#../prereq/kubernetes/cluster/index.adoc>more details |
| here</a>.</p><p>You can get this access either by provisioning a Kubernetes cluster in |
| <a href=/docs/installation/quickstart/#cloud-cluster>cloud</a> or getting access to it from your system |
| administrator.</p><p>Whatever the way you get access to your Kubernetes cluster, you will end |
| up with a configuration file which is usually stored in a file named |
| <code>.kube/config</code> in your home directory. This file will give access to the |
| Kubernetes cluster to install OpenServerless.</p><h3 id=performing-the-installation>Performing the installation</h3><p>To install, first, verify you have actually access to the Kubernetes |
| cluster, by running this command:</p><pre><code>ops debug kube info |
| </code></pre><p>You should get information about your cluster, something like this:</p><p>Kubernetes control plane is running at |
| <code>\https://api.nuvolaris.osh.n9s.cc:6443</code></p><p>Now you can finally install OpenServerless with the command:</p><pre><code>ops setup cluster |
| </code></pre><p>Wait until the process is complete and if there are no errors, |
| OpenServerless is installed and ready to go.</p><p>Once it is installed, you can proceed to read the |
| <a href=/docs/installation/quickstart/#../../tutorial/index.adoc>Tutorial</a> to learn how to code with it.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-1642ee41003decf99634e3d9c714851c>2 - Download</h1><div class=lead>Download OpenServerless with ops CLI</div><h2 id=download-and-install-ops>Download and Install <code>ops</code></h2><h3 id=what-is-ops>What is <code>ops</code>?</h3><p>As you can guess it helps with operations: ops is the <strong>OP</strong>en<strong>S</strong>erverless CLI.</p><p>It is a task executor on steroids.</p><ul><li>it embeds task, wsk and a lot of other utility commands (check with ops -help)</li><li>automatically download and update command line tools, prerequisites and tasks</li><li>taskfiles are organized in commands and subcommands, hierarchically and are powered by docopt</li><li>it supports plugins</li></ul><p>The predefined set of tasks are all you need to install and manage an OpenServerless cluster.</p><h3 id=download-links>Download links</h3><p>You can install OpenServerless using its Command Line Interface, <code>ops</code>.</p><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=warning><p class=quote-title>⚠ <strong>WARNING</strong></p><p>Since we are in a preview phase, this is not an official link approved by the Apache Software Foundation.</p></blockquote><p>Quick install in Linux, MacOS and Windows with WSL or GitBash:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>curl -sL bit.ly/get-ops <span style=color:#000;font-weight:700>|</span> bash |
| </span></span></code></pre></div><p>Quick install in Windows with PowerShell</p><p>Open a powershell. Then give these commands:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-powershell data-lang=powershell><span style=display:flex><span><span style=color:#204a87>Set-ExecutionPolicy</span> <span style=color:#000>Bypass</span> <span style=color:#000>-Scope</span> <span style=color:#204a87;font-weight:700>Process</span> <span style=color:#000>-Force</span> |
| </span></span><span style=display:flex><span><span style=color:#204a87>irm </span><span style=color:#000>bit</span><span style=color:#000;font-weight:700>.</span><span style=color:#000>ly</span><span style=color:#000;font-weight:700>/</span><span style=color:#204a87>get-ops</span><span style=color:#000>-exe</span> <span style=color:#000;font-weight:700>|</span> <span style=color:#204a87>iex |
| </span></span></span></code></pre></div><h3 id=after-the-installation>After the installation</h3><p>Once installed, in the first run <code>ops</code> will tell to update the tasks |
| executing:</p><p><code>ops -update</code></p><p>This command updates the OpenServerless “tasks” (its internal logic) to the |
| latest version. This command should be also executed frequently, as the |
| tasks are continuously evolving and expanding.</p><p><code>ops</code> will suggest when to update them (at least once a day).</p><p>You normally just need to update the tasks but sometimes you also need |
| to update <code>ops</code> itself. The system will detect when it is the case and |
| tell you what to do.</p><h3 id=where-to-find-more-details>Where to find more details:</h3><p>For more details, please visit the Github page of <a href=https://github.com/apache/openserverless-cli>Openserverless Cli</a></p></div><div class=td-content style=page-break-before:always><h1 id=pg-d88677d4167778f5d3ca8a81629227c5>3 - Prerequisites</h1><h2 id=prerequisites-to-install-openserverless>Prerequisites to install OpenServerless</h2><p>This page lists the prerequisites to install OpenServerless in various |
| environments.</p><p>You can install OpenServerless:</p><ul><li><p>for <strong>development</strong> in a <a href=/docs/installation/prereq/#single-node-development-installation>single node</a> environment, |
| either in your local machine or in a Linux server.</p></li><li><p>for <strong>production</strong>, in a <a href=/docs/installation/prereq/#multi-node-production-installation>multi node</a> environment |
| provided by a Kubernetes cluster.</p></li></ul><h3 id=single-node-development-installation>Single Node development installation</h3><p>For <strong>development</strong> purposes, you can install a single node |
| OpenServerless deployment in the following environments as soon as the |
| following requirements are satisfied:</p><ul><li><p>To install in your <a href=/docs/installation/install/local/>local machine</a>, you need |
| <a href=/docs/installation/prereq/docker/>Docker Desktop</a></p></li><li><p>To install in a <strong>single node</strong> |
| <a href=/docs/installation/install/server/>Linux server</a>, you need a server with <a href=/docs/installation/prereq/server/>passwordless ssh access and sudo</a>.</p></li></ul><p>Our installer can automatically install a Kubernetes environment, using |
| <a href=https://k3s.io>K3S</a>, but if you prefer you can install a single-node |
| Kubernetes instance by yourself.</p><p>If you choose to install Kubernetes on your server, we provide support |
| for:</p><ul><li><p><a href=/docs/installation/prereq/k3s/>SuSE K3S</a></p></li><li><p><a href=/docs/installation/prereq/mk8s>Canonical MicroK8S</a></p></li></ul><h3 id=multi-node-production-installation>Multi Node production installation</h3><p>For <strong>production</strong> purposes, you need a multi-node Kubernetes cluster |
| that satisfies <a href=/docs/installation/prereq/kubernetes/>those requirements</a>, |
| accessible with its <code>kubeconfig</code> file.</p><p>If you have such a cluster, you can install |
| <a href=/docs/installation/install/cluster/>OpenServerless in a Kubernetes cluster</a></p><p>If you do not have a cluster and you need to setup one, we provide |
| support for provisioning a suitable cluster that satisfied our |
| requirements for the following Kubernetes environments:</p><ul><li><p><a href=/docs/installation/prereq/kubernetes/eks/>EKS in Amazon AWS</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/aks/>AKS in Microsoft Azure</a></p></li><li><p><a href>GKE in Google Cloud</a></p></li><li><p><a href>RedHat OpenShift</a></p></li></ul><p>Once you have a suitable Kubernetes cluster, you can proceed |
| <a href=/docs/installation/install/>installing OpenServerless</a>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-0224021be1c39f3dd5683066e33d007c>3.1 - Local Docker</h1><div class=lead>Install OpenServerless with Docker locally</div><h2 id=prerequisites-to-install-openserverless-with-docker>Prerequisites to install OpenServerless with Docker</h2><p>You can install OpenServerless on your local machine using Docker. This |
| page lists the prerequisits.</p><p>First and before all you need a computer with at least 16 GB of memory |
| and 30GB of available space.</p><blockquote><p>❗ <strong>IMPORTANT</strong></p><p>8GB are definitely <strong>not enough</strong> to run OpenServerless on your local |
| machine.</p></blockquote><p>Furthermore, you need to install Docker. Let’s see the which one to |
| install and configure if you have:</p><ol><li><a href=/docs/installation/prereq/docker/#windows>Windows</a></li><li><a href=/docs/installation/prereq/docker/#macos>MacOS</a></li><li><a href=/docs/installation/prereq/docker/#linux>Linux</a></li></ol><h3 id=windows>Windows</h3><p>You require the 64 bit edition in Intel Architecture of a recent version |
| of Windows (at least version 10). The installer <code>ops</code> does not run on 32 |
| bit versions nor in the ARM architecture.</p><p>Download and install <a href=https://www.docker.com/products/docker-desktop/>Docker |
| Desktop</a> for Windows.</p><p>Once installed, you can proceed |
| <a href=/docs/installation/configure/>configuring OpenServerless</a> for the |
| installation.</p><h3 id=macos>MacOS</h3><p>You require a recent version of MacOS (at least version 11.xb BigSur). |
| The installer <code>ops</code> is available both for Intel and ARM.</p><p>Download and install <a href=https://www.docker.com/products/docker-desktop/>Docker |
| Desktop</a> for MacOS.</p><p>Since MacOS uses a virtual machine for Docker with a constrained memory. |
| you also need also to reserve at least 8GB.</p><blockquote><p>❗ <strong>IMPORTANT</strong></p><p>On MacOS, Docker defaults to 2GB memoery and they are definitely <strong>not enough</strong> to run |
| OpenServerless on your local machine.</p></blockquote><p><img src=/docs/installation/images/install_docker_desktop.png alt></p><p>Instructions to increase the memory reserved to Docker Desktopo on |
| MacOS:</p><ul><li><p>click on the Docker Desktop icon in the menu</p></li><li><p>select Preferences</p></li><li><p>click on Resources</p></li><li><p><em>increase the reserved memory up to (at least) 8GB</em></p></li><li><p>click on <code>Apply & Restart</code></p></li></ul><p>Once installed, you can proceed |
| <a href=/docs/installation/configure/>configuring OpenServerless</a> for the installation.</p><h3 id=linux>Linux</h3><p>Docker Desktop is available also on Linux, however we advice to install |
| instead the <a href=https://docs.docker.com/engine/install/#server>Server Docker |
| Engine</a></p><p>On Linux, the Docker Engine for the server does not run in a virtual |
| machine, so it is faster and uses less memory.</p><p>Once installed, you can proceed |
| <a href=/docs/installation/configure/>configuring OpenServerless</a> for the installation.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-b0ef4b2e79b17c0bf42df9cbc4da7029>3.2 - Linux Server</h1><div class=lead>Install OpenServerless in a Linux server</div><h2 id=prerequisites-to-install-openserverless-in-a-linux-server>Prerequisites to install OpenServerless in a Linux server</h2><p>You can install OpenServerless on any server either in your intranet or |
| on in Internet running a Linux distribution, with the following |
| requirements:</p><ol><li><p>You know the <strong>IP address or DNS name</strong> of the server on Internet or |
| in your Intranet.</p></li><li><p>The server requires at least 8GB of memory and 30GB of disk space |
| available.</p></li><li><p>It should be running a Linux distribution <a href=https://docs.k3s.io/installation/requirements>supported by |
| K3S</a>.</p></li><li><p>You must open the firewall to access ports 80, 443 and 6443 (for |
| K3S) or 16443 (for MicroK8S) from your machine.</p></li><li><p>You have to install a |
| <a href=/docs/installation/prereq/server/generic/#ssh>public ssh key</a> to access it |
| without a password.</p></li><li><p>You have to configure |
| <a href=/docs/installation/prereq/server/generic/#sudo>sudo</a> to execute root |
| commands without a password.</p></li></ol><p>You can:</p><ul><li><p>get a server on any cloud provider or even install by yourself and |
| then <a href=/docs/installation/prereq/server/generic/>configure it</a></p></li><li><p>provision such a server with <code>ops</code> |
| <a href=/docs/installation/prereq/server/aws/>on Amazon Web Services</a></p></li><li><p>provision such a server with <code>ops</code> on |
| <a href>on Google Cloud Platform</a></p></li></ul><p>Once you have such a server you can optionally (it is not required) |
| install <a href=/docs/installation/prereq/server/k3s/>K3S</a> or |
| <a href=/docs/installation/prereq/server/mk8s/>MicroK8S</a> in it.</p><p>Once you have configured you server, you can proceed |
| <a href=/docs/installation/configure/>configuring OpenServerless</a> for the installation.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-c8f8a7091cc35f968fc5e121e51c459b>3.2.1 - SSH and Sudo</h1><div class=lead>General prerequisites to install OpenServerless</div><h2 id=configure-a-generic-linux-server-to-install-openserverless>Configure a generic Linux server to install OpenServerless</h2><p>If you have access to a generic Linux server, to be able to install |
| OpenServerless it needs to:</p><ol><li><p>be accessible without a password with <code>ssh</code></p></li><li><p>be able to run root commands without a password with <code>sudo</code></p></li><li><p>open the ports 80, 443 and 6443 or 16443</p></li></ol><p>If your server does not already satisfy those requirements, read below |
| for information how to create a <a href=/docs/installation/prereq/server/generic/#sshkey>sshkey</a>, |
| <a href=/docs/installation/prereq/server/generic/#sudo>configure sudo</a> and <a href=/docs/installation/prereq/server/generic/#firewall>open the firewall</a></p><h3 id=sshkey>Installing a public SSH key</h3><p>To connect to a server without a password using <code>openssh</code> (used by the |
| installer), you need a couple of files called <strong>ssh keys</strong>.</p><p>You can generate them on the command line using this command:</p><pre><code>ssh-keygen |
| </code></pre><p>It will create a couple of files, typically called:</p><ul><li><p><code>~/.ssh/id_rsa</code></p></li><li><p><code>~/.ssh/id_rsa.pub</code></p></li></ul><p>where <code>~</code> is your home directory.</p><p>You have to keep secret the <code>id_rsa</code> file because it is the private key |
| and contains the information to identify you uniquely. Think to is as |
| your password.</p><p>You can copy the <code>id_rsa.pub</code> in the server or even share it publicly, |
| as it is the public key. Think to it as your login name, and adding this |
| file to the server adds you to the users who can login into it.</p><p>Once you have generated the public key, access your server, then edit |
| the file <code>~/.ssh/authorized_keys</code> adding the public key to it.</p><p>It is just one line, contained in the <code>id_rsa.pub</code> file.</p><p>Create the file if it does not exist. Append the line to the file (as a |
| single line) if it already exists. Do not remove other lines if you do |
| not want to remove access to other users.</p><h3 id=sudo>Configure Sudo</h3><p>You normally access Linux servers using a user that is <strong>not</strong> <code>root</code> |
| (the system administrator with unlimited power on the system).</p><p>Depending on the system, the user to use to access be <code>ubuntu</code>, |
| <code>ec2-user</code>, <code>admin</code> or something else entirely. However if you have |
| access to the server, the information of which user to use should have |
| been provided, including a way to access to the <code>root</code> user.</p><p>You need to give this user the right to execute commands as <code>root</code> |
| without a password, and you do this by configuring the command <code>sudo</code>.</p><p>You usually have either access to root with the <code>su</code> command, or you can |
| execute <code>sudo</code> with a password.</p><p>Type either <code>su</code> or <code>sudo bash</code> to become root and edit the file |
| <code>/etc/sudoers</code> adding the following line:</p><pre><code><user> ALL=(ALL) NOPASSWD:ALL |
| </code></pre><p>where <code><user></code> is the user you use to log into the system.</p><h3 id=firewall>Open the firewall</h3><p>You need to open the following ports in the firewall of the server:</p><ul><li><p>443 for HTTPS</p></li><li><p>80 for HTTP and provisioning certificates</p></li><li><p>6443 (K3S) or 16443 (MicroK8S) for Kubernetes</p></li></ul><p>For information on how to open the firewall, please consult the |
| documentation of your cloud provider or contact your system |
| administrator, as there are no common procedures and they depends on the |
| cloud provider.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-7de93c022dce0399d0fb529ba96bc7e6>3.2.2 - Server on AWS</h1><div class=lead>Prerequisites to install OpenServerless in AWS</div><h2 id=provision-a-linux-server-in-amazon-web-services>Provision a Linux server in Amazon Web Services</h2><p>You can provision a server suitable to install OpenServerless in cloud |
| provider <a href=https://aws.amazon.com/>Amazon Web Services</a> |
| <a href=/docs/installation/prereq/server/aws/#download.adoc>ops</a> as follows:</p><ol><li><p>install <code>aws</code>, the <a href=/docs/installation/prereq/server/aws/#install-cli>AWS CLI</a></p></li><li><p>get <a href=/docs/installation/prereq/server/aws/#get-credentials>Access and Secret Key</a></p></li><li><p><a href=/docs/installation/prereq/server/aws/#configure>configure AWS</a></p></li><li><p><a href=/docs/installation/prereq/server/aws/#provision>provision a server</a></p></li><li><p>retrieve the <a href=/docs/installation/prereq/server/aws/#retrieve-ip>ip address</a> to configure a DNS name</p></li></ol><p>Once you have a Linux server up and running you can proceed |
| <a href=/docs/installation/configure/>configuring</a> and |
| <a href=/docs/installation/install/cluster/>installing OpenServerless</a>.</p><h3 id=install-cli>Installing the AWS CLI</h3><p>Our cli <code>ops</code> uses under the hood the <a href=https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html>AWS CLI version |
| 2</a>, |
| so you need to dowload and install it <a href=https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html>following those |
| instructions</a>.</p><p>Once installed, ensure it is available on the terminal executing the |
| following command:</p><pre><code>aws --version |
| </code></pre><p>you should receive something like this:</p><pre><code>aws-cli/2.9.4 Python/3.9.11 Linux/5.19.0-1025-aws exe/x86_64.ubuntu.22 prompt/off |
| </code></pre><p>Ensure the version is at least 2.</p><h3 id=get-credentials>Getting the Access and Secret key</h3><p>Next step is to retrieve credentials, in the form of an access key and a |
| secret key.</p><p>So you need to:</p><ul><li>access the AWS console |
| <a href=https://repost.aws/knowledge-center/create-access-key>following those instructions</a> |
| create an access key and secret key;</li><li>give to the credentials the minimum required permissions |
| <a href=https://eksctl.io/usage/minimum-iam-policies/>as described here</a> to build an |
| EKS cluster.</li></ul><p>You will end up with a couple of string as follows:</p><pre><code>Sample AWS Access Key ID: AKIAIOSFODNN7EXAMPLE Sample AWS Secret Access |
| Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
| </code></pre><p>Take note of them as you need them for configuring out CLI.</p><h3 id=configure>Configure AWS to provision a server</h3><p>Before you can provision a Linux server you have to configure AWS typing |
| the command:</p><pre><code>ops config aws |
| </code></pre><p>The system will then ask the following questions:</p><pre><code>*** Please, specify AWS Access Id and press enter. |
| AKIAIOSFODNN7EXAMPLE |
| |
| *** Please, specify AWS Secret Key and press enter. |
| wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
| *** Please, specify AWS Region to use and press enter. |
| To get a list of valid values use: |
| aws ec2 describe-regions --output table |
| |
| Just press enter for default [us-east-1]: |
| |
| *** Please, specify AWS public SSH key and press enter. |
| If you already have a public SSH key in AWS, provide its name here. |
| If you do not have it, generate a key pair with the following command: |
| ssh-keygen |
| The public key defaults to ~/.ssh/id_rsa.pub and you can import with: |
| aws ec2 import-key-pair --key-name nuvolaris-key --public-key-material --region=<your-region> fileb://~/.ssh/id_rsa.pub |
| |
| Just press enter for default [devkit-74s]: |
| |
| *** Please, specify AWS Image to use for VMs and press enter. |
| The suggested image is an Ubuntu 22 valid only for us-east-1 |
| Please check AWS website for alternative images in other zones |
| |
| Just press enter for default [ami-052efd3df9dad4825]: |
| |
| *** Please, specify AWS Default user for image to use for VMs and press enter. |
| Default user to access the selected image. |
| |
| Just press enter for default [ubuntu]: |
| |
| *** Please, specify AWS Instance type to use for VMs and press enter. |
| The suggested instance type has 8GB and 2vcp |
| To get a list of valid values, use: |
| aws ec2 describe-instance-types --query 'InstanceTypes[].InstanceType' --output table |
| |
| Just press enter for default [t3a.large]: |
| |
| *** Please, specify AWS Disk Size to use for VMs and press enter. |
| Just press enter for default [100]: |
| </code></pre><h3 id=provision>Provision a server</h3><p>You can provision one or more servers using <code>ops</code>. The servers will use |
| the parameters you have just configured.</p><p>You can create a new server with:</p><pre><code>ops cloud aws vm-create <server-name> |
| </code></pre><blockquote><p>❗ <strong>IMPORTANT</strong></p><p>Replace <code><server-name></code> with a name you choose, for example |
| <code>ops-server</code></p></blockquote><p>The command will create a new server in AWS with the parameters you |
| specified in configuration.</p><p>You can also:</p><ol><li><p>list servers you created with <code>ops cloud aws vm-list</code></p></li><li><p>delete a server you created and you do not need anymore with |
| <code>ops cloud aws vm-delete <server-name></code></p></li></ol><h3 id=retrieve-ip>Retrieve IP</h3><p>The server will be provisioned with an IP address assigned by AWS.</p><p>You can read the IP address of your server with</p><pre><code>ops cloud aws vm-getip <server-name> |
| </code></pre><p>You need this IP when <a href=/docs/installation/configure/dns/>configuring a DNS name</a> for |
| the server.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-3a59e283e51e41b6d5b36b0ca31c690c>3.2.3 - Server on Azure</h1><div class=lead>Prerequisites to install OpenServerless in Azure</div><h2 id=provision-a-linux-server-in-azure-cloud-platform>Provision a Linux server in Azure Cloud Platform</h2><p>You can provision a server suitable to install OpenServerless in cloud |
| provider <a href=https://azure.microsoft.com/>Azure</a> |
| <a href=/docs/installation/prereq/server/azure/#download.adoc>ops</a> as follows:</p><ol><li><p>install <code>az</code>, the <a href=/docs/installation/prereq/server/azure/#install-cli>Azure CLI</a></p></li><li><p>get <a href=/docs/installation/prereq/server/azure/#connect-subscription>Access and Secret Key</a></p></li><li><p><a href=/docs/installation/prereq/server/azure/#configure>configure Azure</a></p></li><li><p><a href=/docs/installation/prereq/server/azure/#provision>provision a server</a></p></li><li><p>retrieve the <a href=/docs/installation/prereq/server/azure/#retrieve-ip>ip address</a> to configure a DNS name</p></li></ol><p>Once you have a Linux server up and running you can proceed |
| <a href=/docs/installation/configure/>configuring</a> and |
| <a href=/docs/installation/install/cluster/>installing OpenServerless</a>.</p><h3 id=install-cli>Installing the Azure CLI</h3><p>Our cli <code>ops</code> uses under the hood the <a href=https://learn.microsoft.com/en-us/cli/azure>az</a>, |
| command so you need to dowload and install it <a href=https://learn.microsoft.com/en-us/cli/azure/install-azure-cli>following those |
| instructions</a>.</p><p>Once installed, ensure it is available on the terminal executing the |
| following command:</p><pre><code>az version |
| </code></pre><p>you should receive something like this:</p><pre><code>{ |
| "azure-cli": "2.64.0", |
| "azure-cli-core": "2.64.0", |
| "azure-cli-telemetry": "1.1.0", |
| "extensions": { |
| "ssh": "2.0.5" |
| } |
| } |
| </code></pre><p>Ensure the version is at least 2.64.0</p><h3 id=connect-subscription>Connect a subscription</h3><p>Next step is to connect <code>az</code> to a valid Azure subscription. Azure |
| supports <a href=https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli>several authentication methods</a>: check |
| which one you prefer.</p><p>The easiest is the one described in <a href=https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli-interactively>Sign in interactively</a>:</p><p>az login</p><p>This will open a browser and you will asked to login to you azure account. Once logged in, the <code>az</code> command will be |
| automatically connected to the choosen subscription.</p><p>To check if the <code>az</code> command is properly connected to your subscription, check the output of this command:</p><pre tabindex=0><code> $ az account list --query "[].{subscriptionId: id, name: name, user: user.name}" --output table |
| |
| SubscriptionId Name User |
| ------------------------------------ --------------------------- ------------------------- |
| xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx Microsoft Azure Sponsorship openserverless@apache.org |
| </code></pre><h3 id=configure>Configuring Azure to provision a server</h3><p>Before you can provision a Linux server you have to configure Openserverless for Azure typing |
| the command:</p><pre><code>ops config azcloud |
| </code></pre><p>The system will then ask the following questions:</p><pre tabindex=0><code> *** Please, specify Azure Project Id and press enter. |
| Azure Project Id: openserverless-k3s |
| *** Please, specify Azure Zone and press enter. |
| To get a list of valid values use: |
| az account list-locations -o table |
| |
| Just press enter for default [eastus]: |
| Azure Zone: |
| |
| *** Please, specify Azure virtual machine type and press enter. |
| To get a list of valid values, use: |
| az vm list-sizes --location <location> -o table |
| where <location> is your current location. |
| |
| Just press enter for default [Standard_B4ms]: |
| Azure virtual machine type: |
| |
| *** Please, specify Azure vm disk size in gigabyte and press enter. |
| Just press enter for default [50]: |
| Azure vm disk size in gigabyte: |
| |
| *** Please, specify Azure Cloud public SSH key and press enter. |
| If you already have a public SSH key provide its path here. If you do not have it, generate a key pair with the following command: |
| ssh-keygen |
| The public key defaults to ~/.ssh/id_rsa.pub. |
| |
| Just press enter for default [~/.ssh/id_rsa.pub]: |
| Azure Cloud public SSH key: |
| |
| *** Please, specify Azure Cloud VM image and press enter. |
| Just press enter for default [Ubuntu2204]: |
| Azure Cloud VM image: |
| </code></pre><h3 id=provision>Provision a server</h3><p>You can provision one or more servers using <code>ops</code>. The servers will use |
| the parameters you have just configured.</p><p>You can create a new server with:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span> ops cloud azcloud vm-create <server-name> |
| </span></span></code></pre></div><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=important><p class=quote-title>❗ <strong>IMPORTANT</strong></p><p>Replace <code><server-name></code> with a name you choose, for example |
| <code>ops-server</code></p></blockquote><p>The command will create a new server in Azure Cloud with the parameters |
| you specified in configuration.</p><p>You can also:</p><ol><li><p>list servers you created with <code>ops cloud azcloud vm-list</code></p></li><li><p>delete a server you created and you do not need anymore with |
| <code>ops cloud azcloud vm-delete <server-name></code></p></li></ol><h3 id=retrieve-ip>Retrieve IP</h3><p>The server will be provisioned with an IP address assigned by Azure |
| Cloud.</p><p>You can read the IP address of your server with</p><pre><code>ops cloud azcloud vm-getip <server-name> |
| </code></pre><p>You need this IP when <a href=/docs/installation/configure/dns/>configuring a DNS name</a> for |
| the server.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-8e157365d16cb8fe54ef2c7d50505022>3.2.4 - Install K3S</h1><div class=lead>Prerequisites to install OpenServerless in K3S</div><h2 id=install-k3s-in-a-server>Install K3S in a server</h2><p>You can install OpenServerless as <a href=/docs/installation/prereq/server/k3s/#../../../install/server/index.adoc>described |
| here</a>, and you do not need to |
| install any Kubernetes in it, as it is installed as part of the |
| procedure. In this case it installs <a href=https://k3s.io>K3S</a>.</p><p>Or you can <a href=/docs/installation/prereq/server/k3s/#installing-k3s>install K3S in advance</a>, and then proceed |
| <a href=/docs/installation/prereq/server/k3s/#../../../configure/index.adoc>configuring</a> and then installing |
| OpenServerless <a href=/docs/installation/prereq/server/k3s/#../../../install/cluster/index.adoc>as in any other Kubernetes |
| cluster</a>.</p><h3 id=installing-k3s>Installing K3S in a server</h3><p>Before installing ensure you have <a href=/docs/installation/prereq/server/k3s/#../../../prereq/index.adoc>satified the |
| prerequisites</a>, most notably:</p><ol><li><p>you know the <strong>IP address or DNS name</strong></p></li><li><p>your server operating system satisfies the <a href=https://docs.k3s.io/installation/requirements>K3S |
| requirements</a></p></li><li><p>you have passwordless access with ssh</p></li><li><p>you have a user with passwordless sudo rights</p></li><li><p>you have opened the port 6443 in the firewall</p></li></ol><p>Then you can use the following subcommand to install in the server:</p><pre><code>ops cloud k3s create <server> [<username>] |
| </code></pre><p>where <code><server></code> is the <strong>IP address or DNS name</strong> to access the server, |
| and the optional <code><username></code> is the user you use to access the server: |
| if <username>is not specified, the <code>root</code> username will be used.</p><p>Those pieces of information should have been provided when provisioning |
| the server.</p><blockquote><p>❗ <strong>IMPORTANT</strong></p><p>If you installed a Kubernetes cluster in the server this way, you should |
| proceed installing OpenServerless as in |
| <a href=/docs/installation/install/cluster/>a Kubernetes cluster</a>, <strong>not</strong> |
| as a server.</p></blockquote><p>The installation retrieves also a Kubernetes configuration file, so you |
| can proceed to installing it without any other step involved.</p><h3 id=additional-commands>Additional Commands</h3><p>In addition to <code>create</code> the following subcommands are also available:</p><ul><li><p><code>ops cloud k3s delete <server> [<username>]</code>: |
| uninstall K3S from the server</p></li><li><p><code>ops cloud k3s kubeconfig <server> [<username>]</code>: |
| retrieve the kubeconfig from the K3S server</p></li><li><p><code>ops cloud k3s info</code>: some information about the server</p></li><li><p><code>ops cloud k3s status</code>: status of the server</p></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-b4e9b33b69177f5f056217b0d67c2031>3.2.5 - Install MicroK8S</h1><div class=lead>Prerequisites to install OpenServerless in K8S</div><h2 id=install-microk8s-in-a-server>Install MicroK8S in a server</h2><p>You can install OpenServerless as |
| <a href=/docs/installation/install/server/>described here</a> and you do not need to |
| install any Kubernetes in it, as it is installed as part of the procedure. In |
| this case it installs K3S.</p><p>But you can <a href=/docs/installation/prereq/server/mk8s/#install-k8s>install MicroK8S</a> instead, if you |
| prefer. Check here for <a href=https://microk8s.io/>informations about MicroK8S</a>.</p><p>If you install MicroK8S in your server, you can then proceed |
| <a href=/docs/installation/configure/>configuring</a> and then installing OpenServerless |
| <a href=/docs/installation/install/cluster/>as in any other Kubernetes cluster</a>.</p><h3 id=install-k8s>Installing MicroK8S in a server</h3><p>Before installing ensure you have |
| <a href=/docs/installation/prereq/server/>satisfied the prerequisites</a>, most notably:</p><ol><li><p>you know the <strong>IP address or DNS name</strong></p></li><li><p>you have passwordless access with ssh</p></li><li><p>you have an user with passwordless sudo rights</p></li><li><p>you have opened the port <strong>16443</strong> in the firewall</p></li></ol><p>Furthermore, since MicroK8S is installed using <code>snap</code>, you also need to |
| <a href=https://snapcraft.io/docs/installing-snapd>install <code>snap</code></a>.</p><blockquote><p>💡 <strong>NOTE</strong></p><p>While <code>snap</code> is available for many linux distributions, it is typically |
| pre-installed and well supported in in Ubuntu and its derivatives. So we |
| recommend MicroK8S only if you are actually using an Ubuntu-like Linux |
| distribution.</p></blockquote><p>If you system is suitable to run MicroK8S you can use the following |
| subcommand to install in the server:</p><pre><code>ops cloud mk8s create SERVER=<server> USERNAME=<username> |
| </code></pre><p>where <code><server></code> is <strong>IP address or DNS name</strong> to access the server, and |
| <code><username></code> is the user you use to access the server.</p><p>Those informations should have been provided when provisioning the |
| server.</p><blockquote><p>❗ <strong>IMPORTANT</strong></p><p>If you installed a Kubernetes cluster in the server in this way, you |
| should proceed installing OpenServerless as in |
| <a href=/docs/installation/install/cluster/>a Kubernetes cluster</a>, <strong>not</strong> as a server.</p></blockquote><p>The installation retrieves also a kubernets configuration file so you |
| can proceed to installing it without any other step involved.</p><h3 id=additional-commands>Additional Commands</h3><p>In addition to <code>create</code> you have available also the following |
| subcommands:</p><ul><li><p><code>ops cloud mk8s delete SERVER=<server> USERNAME=<username></code>: |
| uninstall K3S from the server</p></li><li><p><code>ops cloud mk8s kubeconfig SERVER=<server> USERNAME=<username></code>: |
| retrieve the kubeconfig from the MicroK8S server</p></li><li><p><code>ops cloud mk8s info</code>: informations about the server</p></li><li><p><code>ops cloud mk8s status</code>: status of the server</p></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-f32ce604d7868701850b6029ab564835>3.3 - Kubernetes Cluster</h1><div class=lead>Install OpenServerless in a Kubernetes cluster</div><h2 id=prerequisites-to-install-openserverless-in-a-kubernetes-cluster>Prerequisites to install OpenServerless in a Kubernetes cluster</h2><p>You can install OpenServerless in any Kubernetes cluster which |
| <a href=/docs/installation/prereq/kubernetes/cluster/>satisfy some requirements</a>.</p><p>Kubernetes clusters are available pre-built from a variety of cloud |
| providers. We provide with our <code>ops</code> tool the commands to install a |
| Kubernetes cluster ready for OpenServerless in the following |
| environments:</p><ul><li><p><a href=/docs/installation/prereq/kubernetes/eks/>Amazon EKS</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/aks/>Azure AKS</a></p></li><li><p><a href>Google GKE</a></p></li><li><p><a href>RedHat OpenShift</a></p></li></ul><p>You can also provision a suitable cluster by yourself, in any cloud or |
| on premises, ensuring the prerequites are satisfied.</p><p>Once provisioned, you will receive a configuration file to access the |
| cluster, called <code>kubeconfig</code>.</p><p>This file should be placed in <code>~/.kube/config</code> to give access to the |
| cluster</p><p>If you have this file, you can check if you have access to the cluster |
| with the command:</p><pre><code>ops debug kube info |
| </code></pre><p>You should see something like this:</p><pre><code>Kubernetes control plane is running at https://xxxxxx.yyy.us-east-1.eks.amazonaws.com |
| </code></pre><p>Once you have got access to the Kubernetes cluster, either installing |
| one with out commands or provisioning one by yourself, you can proceed |
| <a href=/docs/installation/configure/>configuring the installation</a> and then |
| <a href=/docs/installation/install/cluster/>installing OpenServerless</a> in the |
| cluster.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-1fd119711d8fba54dc56350b34daad88>3.3.1 - Amazon EKS</h1><div class=lead>Prerequisites for Amazon EKS</div><h2 id=prerequisites-to-install-openserverless-in-an-amazon-eks-cluster>Prerequisites to install OpenServerless in an Amazon EKS Cluster</h2><p><a href=https://aws.amazon.com/eks/>Amazon EKS</a> is a pre-built Kubernetes |
| cluster offered by the cloud provider <a href=https://aws.amazon.com/>Amazon Web |
| Services</a>.</p><p>You can create an EKS Cluster in Amazon AWS for installing using |
| OpenServerless using <a href=/docs/installation/download/>ops</a> as follows:</p><ol><li><p>install <code>aws</code>, the <a href=/docs/installation/prereq/kubernetes/eks/#install-cli>AWS CLI</a></p></li><li><p>get <a href=/docs/installation/prereq/kubernetes/eks/#get-credentials>Access and Secret Key</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/eks/#configure>configure EKS</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/eks/#provision>provision EKS</a></p></li><li><p>optionally, retrieve the <a href=/docs/installation/prereq/kubernetes/eks/#retrieve-lb>load balancer address</a> to |
| configure a DNS name</p></li></ol><p>Once you have EKS up and running you can proceed |
| <a href=/docs/installation/prereq/kubernetes/eks/#configure.adoc>configuring</a> and <a href=/docs/installation/prereq/kubernetes/eks/#install-cluster.adoc>installing |
| OpenServerless</a>.</p><h3 id=install-cli>Installing the AWS CLI</h3><p>Our cli <code>ops</code> uses under the hood the <a href=https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html>AWS CLI version |
| 2</a>, |
| so you need to dowload and install it <a href=https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html>following those |
| instructions</a>.</p><p>Once installed, ensure it is available on the terminal executing the |
| following command:</p><pre><code>aws --version |
| </code></pre><p>you should receive something like this:</p><pre><code>aws-cli/2.9.4 Python/3.9.11 Linux/5.19.0-1025-aws exe/x86_64.ubuntu.22 prompt/off |
| </code></pre><p>Ensure the version is at least 2.</p><h3 id=get-credentials>Getting the Access and Secret key</h3><p>Next step is to retrieve credentials, in the form of an access key and a |
| secret key.</p><p>So you need to: * access the AWS console <a href=https://repost.aws/knowledge-center/create-access-key>following those |
| instructions</a> |
| create an access key and secret key, * give to the credentials the |
| minimum required permissions <a href=https://eksctl.io/usage/minimum-iam-policies/>as described |
| here</a> to build an EKS |
| cluster.</p><p>You will end up with a couple of string as follows:</p><pre><code>Sample AWS Access Key ID: AKIAIOSFODNN7EXAMPLE Sample AWS Secret Access |
| Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
| </code></pre><p>Take note of them as you need them for configuring out CLI.</p><h3 id=configure>Configuring Amazon EKS</h3><p>Once you have the access and secret key you can configure EKS with the |
| command <code>ops config eks</code> answering to all the questions, as in the |
| following example:</p><pre><code>$ ops config eks |
| *** Please, specify AWS Access Id and press enter. |
| AKIAIOSFODNN7EXAMPLE |
| *** Please, specify AWS Secret Key and press enter. |
| wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
| *** Please, specify AWS Region to use and press enter. |
| To get a list of valid values use: |
| aws ec2 describe-regions --output table |
| |
| Just press enter for default [us-east-2]: |
| |
| *** Please, specify AWS public SSH key and press enter. |
| If you already have a public SSH key in AWS, provide its name here. |
| If you do not have it, generate a key pair with the following command: |
| ssh-keygen |
| The public key defaults to ~/.ssh/id_rsa.pub and you can import with: |
| aws ec2 import-key-pair --key-name nuvolaris-key --public-key-material --region=<your-region> fileb://~/.ssh/id_rsa.pub |
| |
| Just press enter for default [nuvolaris-key]: |
| |
| *** Please, specify EKS Name for Cluster and Node Group and press enter. |
| Just press enter for default [nuvolaris]: |
| |
| *** Please, specify EKS region and press enter. |
| To get a list of valid values use: |
| aws ec2 describe-regions --output table |
| |
| Just press enter for default [us-east-1]: |
| |
| *** Please, specify EKS number of worker nodes and press enter. |
| Just press enter for default [3]: |
| |
| *** Please, specify EKS virtual machine type and press enter. |
| To get a list of valid values, use: |
| aws ec2 describe-instance-types --query 'InstanceTypes[].InstanceType' --output table |
| |
| Just press enter for default [m5.xlarge]: |
| |
| *** Please, specify EKS disk size in gigabyte and press enter. |
| Just press enter for default [50]: |
| |
| *** Please, specify EKS Kubernetes Version and press enter. |
| Just press enter for default [1.25]: |
| </code></pre><h3 id=provision>Provisioning Amazon EKS</h3><p>Once you have configured it, you can create the EKS cluster with the |
| command:</p><pre><code>ops cloud eks create |
| </code></pre><p>It will take around 20 minutes to be ready. Please be patient.</p><p>At the end of the process, you will have access directly to the created |
| Kubernetes cluster for installation.</p><h3 id=retrieve-lb>Retrieving the Load Balancer DNS name</h3><p>Once the cluster is up and running, you need to retrieve the DNS name of |
| the load balancer.</p><p>You can read this with the command:</p><pre><code>ops cloud eks lb |
| </code></pre><p>Take note of the result as it is required for |
| <a href=/docs/installation/configure/dns/>configuring a dns name</a> for your cluster.</p><h3 id=additional-commands>Additional Commands</h3><p>You can delete the created cluster with: <code>ops cloud eks delete</code></p><p>You can extract again the cluster configuration, if you lose it, |
| reconfiguring the cluster and then using the command |
| <code>ops cloud eks kubeconfig</code>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-c5304e0f61e6fb87af4b9940c2922fec>3.3.2 - Azure AKS</h1><div class=lead>Prerequisites for Azure AKS</div><h2 id=prerequisites-to-install-openserverless-in-an-azure-aks-cluster>Prerequisites to install OpenServerless in an Azure AKS Cluster</h2><p><a href=https://aws.amazon.com/eks/>Azure AKS</a> is a pre-built Kubernetes |
| cluster offered by the cloud provider <a href=https://azure.microsoft.com/>Microsoft Azure</a>.</p><p>You can create an AKS Cluster in Microsoft Azure for installing using |
| OpenServerless using <a href=/docs/installation/prereq/kubernetes/aks/#download.adoc>ops</a> as follows:</p><ol><li><p>install <code>az</code>, the <a href=/docs/installation/prereq/kubernetes/aks/#install-cli>Azure CLI</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/aks/#configure>configure AKS</a></p></li><li><p><a href=/docs/installation/prereq/kubernetes/aks/#provision>provision AKS</a></p></li><li><p>optionally, retrieve the <a href=/docs/installation/prereq/kubernetes/aks/#retrieve-lb>load balancer address</a> to |
| configure a DNS name</p></li></ol><p>Once you have AKS up and running you can proceed |
| <a href=/docs/installation/prereq/kubernetes/aks/#configure.adoc>configuring</a> and <a href=/docs/installation/prereq/kubernetes/aks/#install-cluster.adoc>installing |
| OpenServerless</a>.</p><h3 id=install-cli>Installing the Azure CLI</h3><p>Our CLI <code>ops</code> uses under the hood the <a href=https://learn.microsoft.com/en-us/cli/azure/>Azure |
| CLI</a>, so you need to |
| dowload and install it |
| <a href=https://learn.microsoft.com/en-us/cli/azure/install-azure-cli>following those instructions</a>.</p><p>Once installed, ensure it is available on the terminal executing the |
| following command:</p><pre><code>az version |
| </code></pre><p>you should receive something like this:</p><pre><code>{ |
| "azure-cli": "2.51.0", |
| "azure-cli-core": "2.51.0", |
| "azure-cli-telemetry": "1.1.0", |
| "extensions": {} |
| } |
| </code></pre><h3 id=configure>Configuring Azure AKS</h3><p>Before provisioning your AKS cluster you need to configure AKS with the |
| command <code>ops config aks</code> answering to all the questions, as in the |
| following example:</p><pre><code>$ ops config aks |
| *** Please, specify AKS Name for Cluster and Resource Group and press enter. |
| Just press enter for default [nuvolaris]: |
| |
| *** Please, specify AKS number of worker nodes and press enter. |
| Just press enter for default [3]: |
| |
| *** Please, specify AKS location and press enter. |
| To get a list of valid values use: |
| az account list-locations -o table |
| |
| Just press enter for default [eastus]: |
| |
| *** Please, specify AKS virtual machine type and press enter. |
| To get a list of valid values use: |
| az vm list-sizes --location <location> -o table |
| where <location> is your current location. |
| |
| Just press enter for default [Standard_B4ms]: |
| |
| *** Please, specify AKS disk size in gigabyte and press enter. |
| Just press enter for default [50]: |
| |
| *** Please, specify AKS public SSH key in AWS and press enter. |
| If you already have a public SSH key provide its path here. If you do not have it, generate a key pair with the following command: |
| ssh-keygen |
| The public key defaults to ~/.ssh/id_rsa.pub. |
| |
| Just press enter for default [~/.ssh/id_rsa.pub]: |
| </code></pre><h3 id=provision>Provisioning Azure AKS</h3><p>Once you have configured it, you can create the AKS cluster with the |
| command:</p><pre><code>ops cloud aks create |
| </code></pre><p>It will take around 10 minutes to be ready. Please be patient.</p><p>At the end of the process, you will have access directly to the created |
| Kubernetes cluster for installation.</p><h3 id=retrieve-lb>Retrieving the Load Balancer DNS name</h3><p>Once the cluster is up and running, you need to retrieve the DNS name of |
| the load balancer.</p><p>You can read this with the command:</p><pre><code>ops cloud aks lb |
| </code></pre><p>Take note of the result as it is required for |
| <a href=/docs/installation/configure/dns/>configuring a dns name</a> for your cluster.</p><h3 id=additional-commands>Additional Commands</h3><p>You can delete the created cluster with: <code>ops cloud aks delete</code></p><p>You can extract again the cluster configuration, if you lose it, |
| reconfiguring the cluster and then using the command |
| <code>nuv cloud aks kubeconfig</code>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-e0ed70c138e5d50c8207cdcc1a07f4e0>3.3.3 - Generic Kubernetes</h1><div class=lead>Prerequisites for all Kubernetes</div><h2 id=kubernetes-cluster-requirements>Kubernetes Cluster requirements</h2><p>OpenServerless installs in any Kubernetes cluster which satisfies the |
| following requirements:</p><ul><li><p><code>cluster-admin</code> access</p></li><li><p>at least 3 worker nodes with 4GB of memory each</p></li><li><p>support for block storage configured as default storage class</p></li><li><p>support for LoadBalancer services</p></li><li><p>the <a href=https://github.com/kubernetes/ingress-nginx>nginx ingress</a> |
| already installed</p></li><li><p>the <a href=https://cert-manager.io/>cert manager</a> already installed</p></li></ul><p>Once you have such a cluster, you need to retrieve the IP address of the |
| Load Balancer associated with the Nginx Ingress. In the default |
| installation, it is installed in the namespace <code>nginx-ingress</code> and it is |
| called <code>ingress-nginx-controller</code>.</p><p>In the default installation you can read the IP address with the |
| following command:</p><pre><code>kubectl -n ingress-nginx get svc ingress-nginx-controller |
| </code></pre><p>If you have installed it in some other namespace or with another name, |
| change the command accordingly.</p><p>The result should be something like this:</p><pre><code>NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
| ingress-nginx-controller LoadBalancer 10.0.9.99 20.62.156.19 80:30898/TCP,443:31451/TCP 4d1h |
| </code></pre><p>Take note of the value under <strong>EXTERNAL-IP</strong> as you need it in the next |
| step of installation, <a href=/docs/installation/configure/dns/>configuring DNS</a>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-f6b9a66f9506e4a7437691a389daca4f>4 - Configure OpenServerless</h1><h2 id=configuring-openserverless-installation>Configuring OpenServerless Installation</h2><p>This section guides configuring the OpenServerless installation.</p><p>Note that you can also skip this configuration, and install |
| OpenServerless without any configuration.</p><p>Once you configure the installation, you can proceed to |
| <a href=/docs/installation/install/>Install OpenServerless</a>.</p><p>You can then reconfigure the system later.</p><h3 id=minimal-configuration>Minimal Configuration</h3><p>Without any configuration, you get a minimal OpenServerless:</p><ul><li><p>only the serverless engine, no extra services</p></li><li><p>accessible is only in <code>http</code></p></li></ul><p>You can:</p><ul><li><p><a href=/docs/installation/configure/dns/>configure a DNS name or wildcard</a> for your server |
| or cluster, thus enabling SSL and static publishing.</p></li><li><p><a href=/docs/installation/configure/services/>enable some or all</a> of the integrated |
| services:</p><ul><li><p><a href=/docs/installation/configure/services/#static>Static</a>, publishing of static |
| content</p></li><li><p><a href=/docs/installation/configure/services/#redis>REDIS</a>, a powerful key-value store</p></li><li><p><a href=/docs/installation/configure/services/#minio>MinIO</a>, an object storage</p></li><li><p><a href=/docs/installation/configure/services/#postgres>Postgres</a>, a powerful SQL |
| database</p></li><li><p><a href=/docs/installation/configure/services/#ferretdb>FerretDB</a> a NO-SQL, MongoDB |
| compatible adapter for Postgres</p></li></ul></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-be207599c3aa71cb110feb062b890918>4.1 - DNS and SSL</h1><div class=lead>Configuring DNS and SSL</div><h2 id=dns-and-ssl>Configuring DNS and SSL</h2><p>You can use OpenServerless as just as a serverless engine, and use the |
| default IP or DNS provided when provisioned your server or cluster. If |
| you do so, only http is avaialble, and it is not secure.</p><p>If you want your server or cluster is available with a well-known |
| internet name, you can associate the <strong>IP address</strong> or the “ugly” |
| default DNS name of serveres or clusters to a DNS name of your choice, |
| to use it also to publish the static front-end of your server.</p><p>Furthermore, once you decided for a DNS name for your server, you can |
| enable the provisioning of an SSL certificate so you server will be |
| accessible with <code>https</code>.</p><p>In order to configure the DNS and the SSL the steps are:</p><ol><li><p><a href=/docs/installation/configure/dns/#ip-or-dns>retrieve the IP address or the the DNS name</a> of your |
| server or cluster</p></li><li><p><a href=/docs/installation/configure/dns/#register-dns>register a DNS name</a> of your choice with your |
| registration name provider</p></li><li><p><a href=/docs/installation/configure/dns/#configure-apihost>configure OpenServerless</a> so he knows of the DNS and |
| SSL and can use it</p></li></ol><h3 id=ip-or-dns>Retrieving the IP address or the DNS name</h3><p>If OpenServerless is installed in your local machine with Docker, cannot |
| configure any DNS nor SSL, so you can proceed <a href=/docs/installation/configure/services/>configuring the |
| services</a>.</p><p>If OpenServerless is installed in a single server, after you |
| <a href=/docs/installation/prereq/server/>satisfied the server prerequisites</a> you will |
| know the <strong>IP address or DNS name of you server</strong>.</p><p>If OpenServerless is installed in a Kubernetes cluster, after you |
| <a href=/docs/installation/prereq/server/>satisfied the server cluster</a> prerequisites |
| you know either the <strong>IP address or the DNS name of the load balancer</strong>.</p><h3 id=register-dns>Register a DNS name or wildcard</h3><p>Using the address of your server or cluster, you need either to |
| configure a DNS name your already own or <a href=https://www.icann.org/en/accredited-registrars>contact a domain name |
| registrar</a> to register a |
| new DNS name dedicated to your server or cluster.</p><p>You need at least one DNS name in a domain you control, for example |
| <code>nuvolaris.example.com</code> that points to you IP or address.</p><p>Note that:</p><ul><li><p>If you have an IP address to your load balancer you need to |
| configure an <code>A</code> record mapping <code>nuvolaris.example.com</code> to the IP |
| address of your server.</p></li><li><p>If you have a DNS name to your load balancer, you need to configure |
| a <code>CNAME</code> record mapping <code>nuvolaris.example.com</code> to the DNS name of |
| your server.</p></li></ul><blockquote><p>💡 <strong>NOTE</strong></p><p>If you are registering a dedicated domain name for your cluster, you are |
| advised to register wildcard name (<code>*</code>) for every domain name in |
| <code>example.com</code> will resolve to your server.</p></blockquote><p>Registering a wildcard is required to get a different website for for |
| multiple users.</p><h3 id=configure-apihost>Configure OpenServerless to use your DNS and and enable SSL</h3><p>Once you registrered a single DNS (for example <code>openserverless.example.com</code>) |
| or a wildcard DNS name (for example <code>*.example.com</code>) you can communicate |
| to the installer what is the main DNS name of your cluster or server, as |
| it is not able to detect it automatically. We call this the <code><apihost></code></p><blockquote><p>💡 <strong>NOTE</strong></p><p>If you have registered a single DNS name, like <code>openserverless.example.com</code> |
| use this name as <code><apihost></code>.</p><p>If you have registered a wildcard DNS name, you have to choose a DNS |
| name to be used as <code><apihost></code>.</p><p>We recommended you use a name starting with <code>api</code> since to avoid |
| clashes, user and domain names starting with <code>api</code> are reserved. So if |
| you have a <code>*.example.com</code> wildcard DNS available, use <code>api.example.com</code> |
| as your <code><apihost></code></p></blockquote><p>Once you decided what is your API host, you can configure this as |
| follows:</p><pre><code>ops config apihost <apihost> |
| </code></pre><p>This configuration will assign a well know DNS name as access point of |
| your OpenServerless cluster. However note it does <strong>NOT</strong> enable SSL. |
| Accessing to your cluster will happen using HTTP.</p><p>Since requests contain sensitive information like security keys, this is |
| <strong>highly insecure</strong>. You hence do this only for development or testing |
| but <strong>never</strong> for production.</p><p>Once you have a DNS name, enabling <code>https</code> is pretty easy, since we can |
| do it automatically using the free service <code>Let's Encrypt</code>. We have |
| however to provide a valid email address <code><email></code>.</p><p>Once you know your <code><apihost></code> and the <code><email></code> to receive |
| communications from Let’s Encrypt (mostly, when a domain name is |
| invalidated and needs to be renewed), you can configure your apihost and |
| enable SSL as follows:</p><pre><code>ops config apihost <apihost> --tls=<email> |
| </code></pre><p>Of course, replace the <code><apihost></code> with the actual DNS name you |
| registered, and <code><email></code> with your email address</p></div><div class=td-content style=page-break-before:always><h1 id=pg-29e1dfdb1ff6aee88ce1de74e2c1f27d>4.2 - Services</h1><div class=lead>Configure OpenServerless services</div><h2 id=configuring-openserverless-services>Configuring OpenServerless services</h2><p>After you satisfied the <a href=/docs/installation/configure/services/#../../prereq/index.adoc>prerequisites</a> and |
| before you actually <a href=/docs/installation/configure/services/#../../install/index.adoc>install</a> OpenServerless, you |
| have to select which services you want to install:</p><ul><li><p><a href=/docs/installation/configure/services/#static>Static</a>, publishing of static assets</p></li><li><p><a href=/docs/installation/configure/services/#redis>Redis</a>, a storage service</p></li><li><p><a href=/docs/installation/configure/services/#minio>MinIO</a> an object storage service</p></li><li><p><a href=/docs/installation/configure/services/#postgres>Postgres</a> a relational SQL database</p></li><li><p><a href=/docs/installation/configure/services/#ferretdb>FerretDB</a> A MongoDB-compatible adapter for Postgres</p></li></ul><p>You can enable all the services with:</p><pre><code>ops config enable --all |
| </code></pre><p>or disable all of them with:</p><pre><code>ops config disable --all |
| </code></pre><p>Or select the services you want, as follows.</p><h3 id=static>Static Asset Publishing</h3><p>The static service allows you to publish static asset.</p><blockquote><p>💡 <strong>NOTE</strong></p><p>you need to setup a <a href=/docs/installation/configure/dns/#register-dns>a wildcard DNS name</a> |
| to be able to access them from Internet.</p></blockquote><p>You can enable the Static service with:</p><pre><code>ops config enable --static |
| </code></pre><p>and disable it with:</p><pre><code>ops config disable --static |
| </code></pre><h3 id=redis>Redis</h3><p><a href=https://redis.io>Redis</a>, is a fast, in-memory key-value store, usually |
| used as cache, but also in some cases as a (non-relational) database.</p><p>Enable REDIS:</p><pre><code>ops config enable --redis |
| </code></pre><p>Disable REDIS:</p><pre><code>ops config disable --redis |
| </code></pre><h3 id=minio>MinIO</h3><p><a href=https://min.io>MinIO</a> is an object storage service</p><p>Enable minio:</p><pre><code>ops config enable --minio |
| </code></pre><p>Disable minio:</p><pre><code>ops config disable --minio |
| </code></pre><h3 id=postgres>Postgres</h3><p><a href=https://www.postgresql.org>Postgres</a> is an SQL (relational) database.</p><p>Enable postgres:</p><pre><code>ops config enable --postgres |
| </code></pre><p>Disable postgres:</p><pre><code>ops config disable --postgres |
| </code></pre><h3 id=ferret>FerretDB</h3><p><a href=https://www.ferretdb.io>FerretDB</a> is a MongoDB-compatible adapter for |
| Postgres. It created a document-oriented database service on top of |
| Postgres.</p><blockquote><p>💡 <strong>NOTE</strong></p><p>Since FerretDB uses Postgres as its storage, if you enable it, also the |
| service Postgresql will be enabled as it is required.</p></blockquote><p>Enable MongoDB api with FerretDB:</p><pre><code>ops config enable --mongodb |
| </code></pre><p>Disable MongoDB api with FerretDB:</p><pre><code>ops config disable --mongodb |
| </code></pre></div><div class=td-content style=page-break-before:always><h1 id=pg-234d738d46569ad9a8a7ae7fed565a21>5 - Install OpenServerless</h1><h2 id=installation-overview>Installation Overview</h2><p>This page provides an overview of the installation process.</p><h3 id=before-installation>Before installation</h3><p>Please ensure you have:</p><ul><li><a href=/docs/installation/download/>downloaded the installer</a></li><li><a href=/docs/installation/prereq/>satisfied the prerequisites</a></li><li><a href=/docs/installation/configure/>configured your installation</a></li></ul><h3 id=core-installation>Core Installation</h3><p>Once you have completed the preparation steps, you can proceed with:</p><ul><li>a local installation on your |
| <a href=/docs/installation/install/docker/>local machine</a></li><li>a single server installation on a |
| <a href=/docs/installation/install/server/>Linux server</a></li><li>a clustered installation on a |
| <a href=/docs/installation/install/cluster/>Kubernetes cluster</a>.</li></ul><blockquote><p>💡 <strong>NOTE</strong></p><p>The install process will notify nuvolaris creators with the type of installation (for example: clustered or server installation), no other info will be submitted. If you want to disable the notification, you can execute the following command before the setup command:</p></blockquote><pre><code>ops -config DO_NOT_NOTIFY_NUVOLARIS=1 |
| </code></pre><h3 id=post-installation>Post installation</h3><p>After the installation, you can consult the development guide |
| for informations how to reconfigure and update the system.</p><h3 id=support>Support</h3><p>If something goes wrong, you can check:</p><ul><li>the <a href=/docs/installation/debug/>Troubleshooting</a> page</li><li>our online <a href=http://nuvolaris.discourse.group>Forum</a></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-468eb1c803501e0c8fee24ddc1d4914c>5.1 - Docker</h1><div class=lead>Install OpenServerless on a local machine</div><h2 id=local-docker-installation>Local Docker installation</h2><p>This page describes how to install OpenServerless on your local machine. The |
| services are limited and not accessible from the outside so it is an |
| installation useful only for <b>development purposes</b>.</p><h3 id=prerequisites>Prerequisites</h3><p>Before installing, you need to:</p><ul><li><p>install <a href=/docs/installation/prereq/docker/>Docker</a>.</p></li><li><p>install <a href=/docs/installation/download/>ops</a>.</p></li></ul><p>Furthermore you will need a decent PC / Mac.</p><p>Docker will need 4 Gb Ram and almost 40Gb of free space to run the cluster |
| locally.</p><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=info><p class=quote-title>💡 <strong>NOTE</strong></p><p>We introduced a special domain called <code>miniops.me</code>: this domain will always |
| resolve to 127.0.0.1. |
| This way the static service for the default namespace nuvolaris will be |
| linking the <code>http://miniops.me</code> to the nuvolaris web bucket.<br>Adding new users will add an ingress with host set to |
| <code>http://<namespace>.miniops.me</code>.</p></blockquote><style>blockquote.warning{border-color:#b91900!important}blockquote.important{border-color:#e7c416!important}</style><blockquote class=warning><p class=quote-title>⚠ <strong>WARNING</strong></p><p>You cannot have <code>https</code> in a local installation. |
| If you enable it, the configuration will be ignored.</p></blockquote><h3 id=installation>Installation</h3><p>The following command will perform a full local installation:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>ops setup mini |
| </span></span></code></pre></div><p>Behind the scene, this command will write a cluster configuration file called |
| <code>~/.ops/config.json</code> activating these services: <code>static</code>, <code>redis</code>, <code>postgres</code>, |
| <code>ferretdb</code>, <code>minio</code>, <code>cron</code>, <code>milvus</code> constituting the common baseline for |
| development tasks.</p><p>Wait until the command terminates. It will take minutes to complete, so be |
| patient.</p><p>The installation will ends showing these informations:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>*** Configuring Access to OpenServerless *** |
| </span></span><span style=display:flex><span><span style=color:#000>apihost</span><span style=color:#ce5c00;font-weight:700>=</span>http://miniops.me <span style=color:#000>username</span><span style=color:#ce5c00;font-weight:700>=</span>devel |
| </span></span><span style=display:flex><span>Logging in http://miniops.me as devel |
| </span></span><span style=display:flex><span>Successfully logged in as devel. |
| </span></span><span style=display:flex><span>ok: whisk auth set. Run <span style=color:#4e9a06>'wsk property get --auth'</span> to see the new value. |
| </span></span><span style=display:flex><span>ok: whisk API host <span style=color:#204a87>set</span> to http://miniops.me |
| </span></span><span style=display:flex><span>OpenServerless host and auth <span style=color:#204a87>set</span> successfully. You are now ready to use ops! |
| </span></span><span style=display:flex><span><span style=color:#ce5c00;font-weight:700>==================</span><span style=color:#000;font-weight:700>|</span> UPLOAD RESULTS <span style=color:#000;font-weight:700>|</span><span style=color:#ce5c00;font-weight:700>==================</span> |
| </span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> FILES : <span style=color:#0000cf;font-weight:700>4</span> |
| </span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> COMPLETED : <span style=color:#0000cf;font-weight:700>4</span> |
| </span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> ERRORS : <span style=color:#0000cf;font-weight:700>0</span> |
| </span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> SKIPPED : <span style=color:#0000cf;font-weight:700>0</span> |
| </span></span><span style=display:flex><span><span style=color:#000;font-weight:700>|</span> EXEC. TIME : 46.70 <span style=color:#000>ms</span> |
| </span></span><span style=display:flex><span><span style=color:#ce5c00;font-weight:700>======================================================</span> |
| </span></span><span style=display:flex><span>Login with: ops ide login devel https://miniops.me |
| </span></span><span style=display:flex><span>Password is saved in: /Users/openserverless/.ops/devel.password |
| </span></span><span style=display:flex><span>Web URL is: http://devel.miniops.me |
| </span></span></code></pre></div><h3 id=try-your-devel-user>Try your devel user</h3><p>At the end of the setup, you’ll have a local OpenServerless installation |
| with a <code>devel</code> user.</p><p>Open a browser to <a href=http://devel.miniops.me>http://devel.miniops.me</a>. You will see a page like this:</p><img src=/welcome-mini.webp width=700 alt="Welcome Mini"><p>Take a minute to share on Linkedin your experience with the setup and to join |
| us on <a href=https://discord.com/invite/PkD7CcHgGP>Discord</a>.</p><h3 id=troubleshooting>Troubleshooting</h3><p>Usually the setup completes without errors.</p><p>However, if <code>ops</code> is unable to complete the setup, you may see this message at |
| the end:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-text data-lang=text><span style=display:flex><span>ops: Failed to run task "create": exit status 1 |
| </span></span><span style=display:flex><span>task execution error: ops: Failed to run task "create": exit status 1 |
| </span></span><span style=display:flex><span>ops: Failed to run task "devcluster": exit status 1 |
| </span></span><span style=display:flex><span>task execution error: ops: Failed to run task "devcluster": exit status 1 |
| </span></span></code></pre></div><p>If this is your case, try to perform a uninstall / reinstall:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>ops setup devcluster --uninstall |
| </span></span><span style=display:flex><span>ops config reset |
| </span></span></code></pre></div><p>If this will not solve, please contact the community.</p><h3 id=post-install>Post install</h3><p><a href=/docs/tutorial/>Check the tutorial</a> to learn how to use it.</p><h3 id=uninstall-and-remove-devcluster>Uninstall and remove devcluster</h3><p>This will actually remove the ops namespace and all the services from kind. |
| Useful to re-try an installation when something gone wrong.</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>ops setup devcluster --uninstall |
| </span></span><span style=display:flex><span>ops config reset |
| </span></span></code></pre></div></div><div class=td-content style=page-break-before:always><h1 id=pg-2a348e473e676744aeb27b6b290fa85c>5.2 - Linux Server</h1><div class=lead>Install on a Linux Server</div><h2 id=server-installation>Server Installation</h2><p>This page describes how to install OpenServerless on a Linux server |
| accessible with SSH.</p><p>This is a single node installation, so it is advisable only for |
| development purposes.</p><h3 id=prerequisites>Prerequisites</h3><p>Before installing, you need to:</p><ol><li><p>install the OpenServerless CLI <a href=/docs/installation/download/>ops</a>;</p></li><li><p>provision a <a href=/docs/installation/prereq/server/>server running a Linux operating system</a>, |
| either a virtual machine or a physical server, and you know its IP address |
| or DNS name;</p></li><li><p>configure it to have <a href=/docs/installation/prereq/server/generic/>passwordless ssh access and sudo rights</a>;</p></li><li><p>open the firewall to have access to ports 80, 443 and 6443 or 16443 |
| from your client machine;</p></li><li><p><a href=/docs/installation/configure/dns/>configure</a> the DNS name for the server and choose |
| the services you want to enable;</p></li></ol><h3 id=installation>Installation</h3><p>If the prerequisites are satisfied, execute the dommand:</p><pre><code>ops setup server <server> <user> |
| </code></pre><blockquote><p>❗ <strong>IMPORTANT</strong></p><p>Replace in the command before <code><server></code> with the IP address or DNS name |
| used to access the server, and <code><user></code> with the username you have to |
| use to access the server</p></blockquote><p>Wait until the command completes and you will have OpenServerless up and |
| running.</p><h3 id=post-install>Post Install</h3><ul><li><p><a href=/docs/tutorial/>Check the tutorial</a> to learn how to use it.</p></li><li><p>To uninstall, execute the command:</p></li></ul><pre tabindex=0><code>ops setup server <server> <user> --uninstall |
| </code></pre></div><div class=td-content style=page-break-before:always><h1 id=pg-e2ad6ea02f40220590e02be2e3387f01>5.3 - Kubernetes cluster</h1><div class=lead>Install OpenServerless on a Kubernetes Cluster</div><h2 id=cluster-installation>Cluster Installation</h2><p>This section describes how to install OpenServerless on a Kubernetes Cluster</p><h3 id=prerequisites>Prerequisites</h3><p>Before installing, you need to:</p><ul><li><p><a href=/docs/installation/prereq/kubernetes/>Provision</a> a Kubernetes Cluster</p></li><li><p><a href=/docs/installation/configure/>Configure</a> the installation</p></li><li><p>install <a href=/docs/installation/download/>Download and install</a> OpenServerless CLI, <code>ops</code>.</p></li></ul><h3 id=installation>Installation</h3><p>If you have a Kubernetes cluster directly accessible with its |
| configuration, or you provisioned a cluster in some cloud using <code>ops</code> |
| embedded tools, you just need to type:</p><pre><code>ops setup cluster |
| </code></pre><p>Sometimes the kubeconfig includes access to multiple Kubernetes |
| instances, each one identified by a different <code><context></code> name. You can |
| install the OpenServerless cluster in a specified <code><context></code> with:</p><pre><code>ops setup cluster <context> |
| </code></pre><h3 id=post-install>Post Install</h3><ul><li><p><a href=/docs/tutorial/>Check the tutorial</a> to learn how to use it.</p></li><li><p>To uninstall, execute the command:</p></li></ul><pre tabindex=0><code>ops setup cluster --uninstall |
| </code></pre></div><div class=td-content style=page-break-before:always><h1 id=pg-c7d6e75a293d35b4ca7156b87967599c>6 - Troubleshooting</h1><div class=lead>How to diagnose and solve issues</div><h2 id=debug>Debug</h2><p>This document gives you hints for diagnostics and solving issues, using |
| the (hidden) subcommand <code>debug</code>.</p><p>Note it is technical and assumes you have some knowledge of how |
| Kubernetes operates.</p><h3 id=watching>Watching</h3><p>While installing, you can watch the installation (opening another |
| terminal) with the command:</p><pre><code>ops debug watch |
| </code></pre><p>Check that no pods will go in error while deploying.</p><h3 id=configuration>Configuration</h3><p>You can inspect the configuration with the <code>ops debug subcommand</code></p><ul><li><p><strong>API host</strong>: <code>ops debug apihost</code></p></li><li><p><strong>Static Configuration</strong>: <code>ops debug config</code>.</p></li><li><p><strong>Current Status</strong>: <code>ops debug status</code></p></li><li><p><strong>Runtimes</strong>: <code>ops debug runtimes</code></p></li><li><p><strong>Load Balancer</strong>: <code>ops debug lb</code></p></li><li><p><strong>Images</strong>: <code>ops debug images</code></p></li></ul><h3 id=logs>Logs</h3><p>You can inspect logs with <code>ops debug log</code> subcommand. Logs you can show:</p><ul><li><p><strong>operator</strong>: <code>ops debug log operator</code> (continuously: |
| <code>ops debug log foperator</code>)</p></li><li><p><strong>controller</strong>: <code>ops debug log controller</code> (continuously: |
| <code>ops debug log fcontroller</code>)</p></li><li><p><strong>database</strong>: <code>ops debug log couchdb</code> (continuously: |
| <code>ops debug log fcouchdb</code>)</p></li><li><p><strong>certificate manager</strong>: <code>ops debug log certman</code> |
| (continuously: <code>ops debug log fcertmap</code>)</p></li></ul><h3 id=kubernetes>Kubernetes</h3><p>You can detect which Kubernetes are you using with:</p><p><code>ops debug detect</code></p><p>You can then inspect Kubernetes objects with:</p><ul><li><p><strong>namespaces</strong>: <code>ops debug kube ns</code></p></li><li><p><strong>nodes</strong>: <code>ops debug kube nodes</code></p></li><li><p><strong>pod</strong>: <code>ops debug kube pod</code></p></li><li><p><strong>services</strong>: <code>ops debug kube svc</code></p></li><li><p><strong>users</strong>: <code>ops debug kube users</code></p></li></ul><p>You can enter a pod by name (use <code>kube pod</code> to find the name) with:</p><pre><code>ops debug kube exec P=<pod-name> |
| </code></pre><h3 id=kubeconfig>Kubeconfig</h3><p>Usually, <code>ops</code> uses a hidden kubeconfig so does not override your |
| Kubernetes configuration.</p><p>If you want to go more in-depth and you are knowledgeable of Kubernetes, |
| you can export the kubeconfig with <code>ops debug export F=<file></code>.</p><p>You can <strong>overwrite your kubeconfig</strong> (be aware there is no backup) with |
| <code>ops debug export F=-</code>.</p></div></main></div></div><footer class="td-footer row d-print-none"><div class=container-fluid><div class="disclaimer text-center"><div class="row mx-md-2"><div class="td-footer__left col-6 col-sm-2 order-sm-1"> </div><div class="td-footer__right col-6 col-sm-2 order-sm-3"> </div><div class="td-footer__center col-12 col-sm-8 py-2 order-sm-2"><p>Apache Openserverless™ is an effort undergoing incubation at The Apache Software Foundation (ASF), |
| sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a |
| further review indicates that the infrastructure, communications, and decision making process |
| have stabilized in a manner consistent with other successful ASF projects. While incubation |
| status is not necessarily a reflection of the completeness or stability of the code, it does |
| indicate that the project has yet to be fully endorsed by the ASF.</p><br><br><p>Copyright © 2024 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. |
| Apache Openserverless, the names of other Apache projects, and the ASF logo are either |
| registered trademarks or trademarks of the Apache Software Foundation in the United States |
| and/or other countries.</p></div></div><div class="row mx-md-2"><div class="td-footer__left col-6 col-sm-4 order-sm-1"> </div><div class="td-footer__right col-6 col-sm-4 order-sm-3"> </div><div class="td-footer__center col-12 col-sm-4 py-2 order-sm-2"><a href=https://www.apache.org/><img class="asf-logo rounded-image" src=/images/asf.webp width=256 height=104> |
| </a><a href=https://incubator.apache.org/projects/openserverless.html><img class="asf-logo rounded-image" src=/images/apache_incubator.webp width=256 height=104></a></div></div></div></div><div class=container-fluid><div class="row mx-md-2"><div class="td-footer__left col-6 col-sm-4 order-sm-1"><ul class=td-footer__links-list><li class=td-footer__links-item data-bs-toggle=tooltip title="Developer mailing list" aria-label="Developer mailing list"><a target=_blank rel=noopener href=mailto:dev-subscribe@openserverless.apache.org aria-label="Developer mailing list"><i class="fa fa-envelope"></i></a></li><li class=td-footer__links-item data-bs-toggle=tooltip title=X.com aria-label=X.com><a target=_blank rel=noopener href=https://x.com/open_serverless aria-label=X.com><i class="fab fa-x-twitter"></i></a></li><li class=td-footer__links-item data-bs-toggle=tooltip title=Reddit aria-label=Reddit><a target=_blank rel=noopener href=https://reddit.com/r/openserverless aria-label=Reddit><i class="fab fa-reddit"></i></a></li></ul></div><div class="td-footer__right col-6 col-sm-4 order-sm-3"><ul class=td-footer__links-list><li class=td-footer__links-item data-bs-toggle=tooltip title=GitHub aria-label=GitHub><a target=_blank rel=noopener href=https://github.com/apache/openserverless aria-label=GitHub><i class="fab fa-github"></i></a></li><li class=td-footer__links-item data-bs-toggle=tooltip title=Discord aria-label=Discord><a target=_blank rel=noopener href=https://discord.com/invite/PkD7CcHgGP aria-label=Discord><i class="fab fa-discord"></i></a></li><li class=td-footer__links-item data-bs-toggle=tooltip title=Slack aria-label=Slack><a target=_blank rel=noopener href=https://the-asf.slack.com/archives/C07B6K5R3F0 aria-label=Slack><i class="fab fa-slack"></i></a></li></ul></div><div class="td-footer__center col-12 col-sm-4 py-2 order-sm-2"><span class=td-footer__copyright>© |
| 2024–2025 |
| <span class=td-footer__authors>The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</span></span><span class=td-footer__all_rights_reserved>All Rights Reserved</span></div></div></div></footer><div id=theme-toggler-container><button id=theme-toggler class="btn btn-light-dark" aria-label="Toggle theme"> |
| <span id=theme-icon class="fa fa-sun"></span></button></div><script>const themeToggler=document.getElementById("theme-toggler"),themeIcon=document.getElementById("theme-icon"),currentTheme=localStorage.getItem("theme")||"light";themeToggler.addEventListener("click",()=>{document.documentElement.classList.toggle("dark-mode");const e=document.documentElement.classList.contains("dark-mode");themeIcon.classList.toggle("fa-sun",!e),themeIcon.classList.toggle("fa-moon",e),localStorage.setItem("theme",e?"dark":"light")})</script><style>#theme-toggler-container{position:fixed;bottom:70px;right:20px;z-index:1000}.btn-light-dark{background:#fff;border:1px solid #ddd;border-radius:50%;width:50px;height:50px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 6px rgba(0,0,0,.1);cursor:pointer;transition:background-color .3s,transform .2s}.btn-light-dark:hover{background:#f0f0f0;transform:scale(1.1)}.dark-mode .btn-light-dark{background:#333;color:#fff;border-color:#444}</style></div><script src=/js/main.min.90902a026ed2aee7ed45d85797f4c790b240ba148ac6f8a6f194cb1981ffecf5.js integrity="sha256-kJAqAm7SruftRdhXl/THkLJAuhSKxvim8ZTLGYH/7PU=" crossorigin=anonymous></script><script src=/js/prism.js></script><script src=/js/tabpane-persist.js></script></body></html> |