Environment setup for ISD-Argo

Pre-requisites

You should have internet access and should be able to access github.com, docker.io, and quay.io. You should have the following tools installed on your system.

  • curl

  • git

  • kubectl-cli

  • kubectl-helm

  • choco package manager (only for windows)

  • In addition, you need to create a GitHub repository

Setup Laptop/machine used for ISD installation

Follow the instructions that are specific to your laptop/machine operating system.

Mac:

  • curl, git : Mac comes preinstalled with these commands

  • kubectl: Install using instructions here, using homebrew is generally easier

  • Helm: Install using instructions here, using homebrew is generally easier

Windows:

  • Execute the following command in Powershell (running in administrator mode)

    Set-ExecutionPolicy Bypass -Scope Process -Force; `iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  • curl: Execute this command at the power shell prompt: choco install curl

  • git: Execute this command at the power shell prompt: choco install git

  • kubectl: Execute the following command at the power shell prompt:

    choco install Kubernetes-cli
  • helm: Execute the following command at the power shell prompt:

    choco install kubernetes-helm

Ubuntu/Linux:

  • Curl: install using instructions here

  • git: Install using instructions here

  • kubectl: Install using instructions here, go with “using native package manager” if you are not sure.

  • Helm: Install helm using the instructions here, using a package manager is generally easier

Verification:

Execute the following commands to verify that the commands are functional:

curl -version
git -version
kubectl version
helm version

Ensure working “kubectl” command:

Execute the following commands to make sure whether “Kubectl” command is working

kubectl get no # to see the nodes
kubectl get ns # to see the namespaces

These commands should show some output. Kubeconfig file is not in the right place If you get the following error:

"The connection to the server localhost:8080 was refused - did you specify the right host or port?"

Rename the kubeconfig file as "config" and copy to /.kube folder in your machine. If that still does not work, try giving the –kubeconfig option to all kubectl commands. For example, refer to the following command.

kubectl -kubeconfig <full path to the kubeconfig file> get no

Creating a GitHub repo (“<gitops-repo>”)

Github.com provides a free account for personal use. If you don’t have an account, create an account on Github by following the instructions mentioned here.

Login to GitHub (github.com) with your own credentials.

  • Create a new private repository, instructions are here. While creating:

    • Choose Private

    • Check “Add a README file”

    • Rename “main” branch as “master” branch by following the instructions here.

  • Generate a personal access token by following the instructions here. Save this token to be updated in values.yaml later.

Note: If the token contains ‘/’ or ‘\’, please generate another token as these special characters may create an issue during installation.

Installing nginx ingress controller

If you are using any other ingress controller such as one provided by the cloud provider, you can skip this section.

  • kubectl create ns ingress-nginx

  • helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

  • helm repo update

  • helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress-nginx

  • Check whether it is installed correctly or not, use$kubectl get svc -n ingress-nginx

  • Note down the IP Address (or hostname) of the “ingress-nginx-controller” service in the output of the command above. This is required for making DNS or host entries as mentioned in the section below.

Installing cert-manager

If you create your own TLS certificates or the cluster does not have inbound port 80 access, you can skip this section.

  • kubectl create namespace cert-manager

  • helm repo add jetstack https://charts.jetstack.io

  • helm repo update

  • helm install cert-manager jetstack/cert-manager --set installCRDs=true -n cert-manager

Adding entries to “hosts” file

Using DNS to map URL-hostnames to IP addresses is the preferred method. However, in case you don’t have access to a DNS server, for trial purposes, we can access the ISD by manually adding the IP->host mapping in the “hosts” file as follows:

Mac/Ubuntu/Linux

This section provides instructions for modifying your hosts file

  1. Follow the instructions here.

  2. Create three entries as follows. The IP address is the “ingress-nginx-controller” service external IP address (as mentioned in the Nginx section above) and map them to the hostnames you defined for ISD.

    • Ip-address oes.com

    • Ip-address oes-gate.com

    • Ip-address spin...com [Example: oes.opsmx-isd.opsmx.com]

  3. If you skipped the step in defining host names, create these entries, replacing the “ip-address” as explained above:

    • Ip-address oes.isd-pov.example.com

    • Ip-address oes-gate.isd-pov.example.com

    • Ip-address spin.isd-pov.example.com

Windows

If you do NOT have DNS, follow the instructions here to add lines in hosts file as shown below:

  • Create and add these three lines replacing the “ip-address” with the IP-address is the “ingress-nginx-controller” service external IP address

    • Ip-address oes.isd-pov.example.com

    • Ip-address oes-gate.isd-pov.example.com

    • Ip-address spin.isd-pov.example.com [Example: 35.22.105.22 oes.isd-pov.example.com]

  • If using DNS, follow the instructions here to add the entries in host file as shown below:

    • Create three entries as follows. The IP address is the “ingress-nginx-controller” service external IP address (as mentioned in the Nginx section above) and maps them to the hostnames you defined for ISD.

      • Ip-address oes.com

      • Ip-address oes-gate.com

Last updated