Deploy a new environment

Objective


You are about to deploy a new environment that contains an nginx. The Nginx default port is 80 and is already allocated by the Dashboard Nginx in the Dashboard Environment. Learn how to create a new Catalog Recipe and use it when you deploy an Nginx in a new environment.

Steps


  1. Create Nginx Catalog Recipe
  2. Deploy Nginx


Step 1


Go to Module Develop → Catalog Recipes, you will find that the installer already created a recipe named Dashboard Nginx Recipe. The catalog recipes modules provides the ability to create new entries from other recipes.

  1. Create a new recipe from Dashboard Nginx Recipe
    1. Give it a new name
    2. Change the port configuration
      1. Change the values named published of both http and https ports
        1. Reference Link: Catalog Recipes#nginxRecipe 
      2. Configure the environment variables


Full Demo Dev Nginx Sample with full env list
{
	"_id": '5919bf91645d410044f137a1',
	"name": "Dev Nginx Recipe",
	"type": "nginx",
	"description": "This is the nginx catalog recipe used to deploy the nginx in the dev environment.",
	"recipe": {
		"deployOptions": {
			"image": {
				"prefix": "soajsorg",
				"name": "nginx",
				"tag": "latest",
				"pullPolicy": "Always"
			},
			"readinessProbe": {
				"httpGet": {
					"path": "/",
					"port": "http"
				},
				"initialDelaySeconds": 5,
				"timeoutSeconds": 2,
				"periodSeconds": 5,
				"successThreshold": 1,
				"failureThreshold": 3
			},
			"restartPolicy": {
				"condition": "",
				"maxAttempts": 0
			},
			"container": {
				"network": "",
				"workingDir": ""
			},
			"voluming": {
				"volumes": [{
					"Type": "volume",
					"Source": "soajs_log_volume",
					"Target": "/var/log/soajs/"
				}]
			},
			"ports": [{
					"name": "http",
					"target": 80,
					"isPublished": true,
					"published": 81			//port 80 is exposed as 81
				},
				{
					"name": "https",
					"target": 443,
					"isPublished": true,
					"published": 444		//port 443 is exposed as 444
				}
			]
		},
		"buildOptions": {
			"env": {
				"SOAJS_ENV": {
					"type": "computed",
					"value": "$SOAJS_ENV"
				},
				//domain of the environment
				"SOAJS_NX_DOMAIN": {
					"type": "computed",
					"value": "$SOAJS_NX_DOMAIN"
				},
				//domain of the DEV API in nginx
				"SOAJS_NX_API_DOMAIN": {
					"type": "computed",
					"value": "$SOAJS_NX_API_DOMAIN"
				},
				//domain of the DEV UI frontend widget in nginx
				//domain is mapped to custom env variable (petstore)
				"SOAJS_PETSTORE_DOMAIN": {
					"type": "computed",
					"value": "$SOAJS_NX_SITE_DOMAIN"
				},
				//number of controllers the nginx should upstream to
				"SOAJS_NX_CONTROLLER_NB": {
					"type": "computed",
					"value": "$SOAJS_NX_CONTROLLER_NB"
				},
				//IP values of the controllers the nginx should upstream to
				"SOAJS_NX_CONTROLLER_IP": {
					"type": "computed",
					"value": "$SOAJS_NX_CONTROLLER_IP_N"
				},
				//Port values of the controllers the nginx should upstream to
				"SOAJS_NX_CONTROLLER_PORT": {
					"type": "computed",
					"value": "$SOAJS_NX_CONTROLLER_PORT"
				},
				//the HA deployment mode based on drivers: swarm - kubernetes
				"SOAJS_DEPLOY_HA": {
					"type": "computed",
					"value": "$SOAJS_DEPLOY_HA"
				},
				//the HA deployment name based on drivers: swarm - kubernetes
				"SOAJS_HA_NAME": {
					"type": "computed",
					"value": "$SOAJS_HA_NAME"
				},
				//Git repo name containing the custom UI code of the frontend widget
				"SOAJS_GIT_REPO": {
					"type": "userInput",
					"default": "soajs.petstore.ui",
					"label": "Git Repo"
				},
				//Git repo owner that owns the custom ui repo
				"SOAJS_GIT_OWNER": {
					"type": "userInput",
					"default": "SOAJS-Demos",
					"label": "Git Repo"
				},
				//Git repo branch of ui repo to pull the code from
				"SOAJS_GIT_BRANCH": {
					"type": "userInput",
					"default": "master",
					"label": "Git Branch"
				},
				//Git repo path of ui repo in branch (default: "/" ) 
				"SOAJS_GIT_PATH": {
					"type": "userInput",
					"default": "/widget",
					"label": "Git Path"
				},
				//Custom Git repo for advanced Nginx configuration
				//this repo contains advanced configuration that tells the SOAJS deployer in nginx image to create a virtual host
				//for the petstore ui and map the nginx ui widget domain to env variable SOAJS_PETSTORE_DOMAIN ( see above )
				//in addition the nginx configuration file of this host is custom since it provides clean URL rules for nginx and angular js
				//Provider of custom git repo
				"SOAJS_CONFIG_REPO_PROVIDER": {
					"type": "static",
					"value": "github"
				},
				//Domain of custom git repo
				"SOAJS_CONFIG_REPO_DOMAIN": {
					"type": "static",
					"value": "github.com"
				},
				//owner of custom git repo
				"SOAJS_CONFIG_REPO_OWNER": {
					"type": "static",
					"value": "SOAJS-Demos"
				},
				//branch of custom git repo
				"SOAJS_CONFIG_REPO_BRANCH": {
					"type": "static",
					"value": "master"
				},
				//name of custom git repo
				"SOAJS_CONFIG_REPO_NAME": {
					"type": "static",
					"value": "soajs.petstore.config"
				}
			},
			"cmd": {
				"deploy": {
					"command": [
						"bash",
						"-c"
					],
					"args": [
						"node index.js -T nginx"
					]
				}
			}
		}
	}
}




Step 2


  1. Go to Deploy → Clouds & Deployments
  2. Click on Deploy environment
    1. for the Nginx section, pick the recipe you created
  3. Fill the rest of the form inputs
  4. Submit

Your environment will deploy in a few minutes where the Nginx is configured to use the recipe you created last.