ISD Installation Guide
Installing ISD on a kubernetes cluster
This document provides the step-by-step instructions for installing ISD on a kubernetes cluster. Some basic knowledge of command-line interface is required.
Before you start, it might be helpful to go through these documents:
-
Routing Web URLs to ISD services - Refer here
-
ISD On-Prem POV Infrastructure requirements - Refer here
-
ISD - Commonly used Commands - Refer here
-
ISD Service Catalogue - Refer here
Pre-requisites
-
A laptop/machine being used to install that has the required software mentioned here
-
A kubeconfig file to access the kubernetes cluster
-
A working “kubectl” command. Execute the command below:
kubectl get no
# to see the nodeskubectl get ns
# to see the namespaces
-
These commands should show some output. If required, rename the kubeconfig file as "config" and copy to .kube folder in your machine
-
A github repo, and a “personal access token”. Instructions for creating these can be found here.
-
NGINX Ingress Controller and cert-manager(if using https) in the cluster. If not already installed, install by using the instructions here
-
Access to a DNS server. If you do not have access to a DNS server, you can add the host-names to “hosts” file on your machine by following the instructions here
Pre-installation steps
-
Decide on the host names that will be used to access ISD
-
Clone the standard-git-ops repository and copy the contents to your github repository
-
Select a “values.yaml” file from the SAMPLES/values-yamls folder in your github repository, and edit the contents
-
Prepare helm for installation
-
Install ISD using the helm command
-
Login to the ISD instance created
Installation steps
Setup URLs
-
Host names that will be used to access ISD: Three host-names are required as mentioned below:
-
oes.< subdomain>.company.com
-
spin.< subdomain>.company.com
-
oes-gate.< subdomain>.company.com
For Example: oes.isd-from-opsmx.opsmx.com
-
-
Run the following command to get the IP address of the ingress controller
kubectl get ingress -n ingress-nginx
-
If you have access to a DNS server, add the three host names from step 1 to the DNS server pointing them to the IP Address in step 2 above. If you do not have access to a DNS server, follow the instructions here to add them locally to your laptop.
Prepare gitops repo
Prepare your gitops repository as follows:
-
Create a working directory in your local system
mkdir opsmx-isd #create a working directory for your installation
-
Clone standard-gitops-repo repository from appropriate branch
3. Clone your gitops repo using the following command:git clone https://github.com/OpsMx/standard-gitops-repo.git -b 3.10
4. Copy files from standard-gitops-repo to your gitops repogit clone https://github.com/<your-id>/<gitops-repo> For Example: git clone https://github.com/ravigorremuchu/oes-repo.git
5. Push the changes back to the githup repocp -R ./standard-gitops-repo/config ./<gitops-repo>/config cp -R ./standard-gitops-repo/halyard.yaml ./<oes-repo>/halyard.yaml cp -R ./standard-gitops-repo/default ./<oes-repo>/default cp -R ./standard-gitops-repo/SAMPLES ./<oes-repo>/SAMPLES
cd <oes-repo> git add -A git commit -m “Opsmx standard gitops repo” git push
Prepare values file
-
cd ./<gitops-repo>/SAMPLES/values-yamls
and select a template values file. Start with “easy-values.yaml
” for a very simply insecure installation. -
Edit the value.yaml file selected as follows:
-
For spinDeck, spinGate, oesUI and oesGate: change the hostnames decided in step 1, which will be used for accessing the OES/Spinnaker
For Example:
host: spin.oes.opsmx.net host:
oes.oes.opsmx.net host:
oes-gate-ldap.oes.opsmx.net
-
Go to gitopsHalyard section and update gitops repo information:
repo: type: git baseUrlHostName: github.com organization: <org> # e.g “srini” in https://github.com/srini/isd-repo repository: <your cloned repo name> #Eg: isd-repo dynamicAccRepository: <your cloned repo name> #Eg: isd-repo username: your-git-id # https://github.com/srini/isd-repo token: your-git-token # Access token corresponding to above login-id
-
Install ISD
-
Add helm repo and create namespace
helm repo list helm repo add opsmx https://helmcharts.opsmx.com/ helm repo update kubectl create namespace opsmx-isd #[create a namespace]
-
Navigate to the directory where values.yaml is saved/modified and begin the installation. This may take up to 30 min depending on the network speed.
helm upgrade –install isd opsmx/oes -f easy-values.yaml -n opsmx-isd --timeout 30m
-
Keep monitoring the pods being created using
kubectl get po -n opsmx-isd -w
-
Once all the pods show 1/1 or 2/2 or “0/1 completed” status, open your browser and navigate to “oes..company.com”, the host name selected in step 1
-
Login with user name ‘admin’ and password as “opsmxadmin123”
-
Click on “set-up” on the bottom right corner, and proceed to “cloud accounts”
-
Create a kubernetes account, and name it as “default”
Common Issues during helm installation
Most common issues during installation are related to incorrect values in *-values.yaml. Should you realize that there is a mistake, it is easy to correct it.
-
Update the easy-values.yaml (or which ever file name you are using)
-
Wait for the helm install to error out, it is best to not break the process
-
Simply re-execute the “helm upgrade –install …” command given:
helm upgrade –install isd opsmx/oes -f easy-values.yaml -n opsmx-isd --timeout 30m
Should this not work, please follow the instructions for “Cleaning up” below and start-over.
Cleaning up
Use the following commands to delete the entire installation from kubernetes
Option 1
Issue this command, replace -n option with the namespace
helm uninstall isd -n opsmx-isd
Option 2
Issue these commands, replace -n option with the namespace
kubectl -n opsmx-isd delete deploy --all
kubectl -n opsmx-isd delete sts --all
kubectl -n opsmx-isd delete svc --all
kubectl -n opsmx-isd delete ing --all
kubectl -n opsmx-isd delete cm --all
kubectl -n opsmx-isd delete secrets --all
kubectl -n opsmx-isd delete role --all
kubectl -n opsmx-isd delete rolebinding --all
kubectl delete ns opsmx-isd