Environment setup for ISD-Argo

Pre-requisites

  • Kubernetes cluster 1.22.0 or later with at least 4 cores and 16 GB memory with 1 node

  • Helm 3 is setup on the client system with 3.10.3 or later

  • Access: Admin access to ONE namespace

  • Compute:

    • Minimum: 4CPU, 16GB, 1 node

    • Preferred: 8CPU/32 GB Ram 2 Nodes

  • You should have internet access and should be able to access github.com, docker.io, and quay.io.

  • Ensure that the URLs of ISD, KeyCloak, Vela are reachable from your browser. Either the DNS name server record must exist or "hosts" file must be updated. The following 3 URLs need to exist in DNS and point to Loadbalancer IP of the NGINX ingress controller.

    • Ip-address ISD.REPLACE.THIS.WITH.YOURCOMPANY.COM

    • Ip-address KEYCLOAK.REPLACE.THIS.WITH.YOURCOMPANY.COM

    • Ip-address *.VELA.REPLACE.THIS.WITH.YOURCOMPANY.COM

      For example, “isd.isd-argo.opsmx.com”

      Note: For "ISD-Argo Installation with Argo CD and Argo Rollouts", the Argo CD URL in the DNS name server record must exist or "hosts" file must be updated.

      • Ip-address ARGO.REPLACE.THIS.WITH.YOURCOMPANY.COM

  • Vela Service requires the “Wild-card ingress” and “Wild-card TLS certificates to be provided to the ingress”. If you are using the cert-manager, please use this blog to create a Wild-card TLS certificate. Else please contact your certificate provider for the certificates for your URL equivalent for "*.VELA.REPLACE.THIS.WITH.YOURCOMPANY.COM".

  • An additional host URL may be required depending on your requirements.

    • Controller host URL

    • ArgoCD host URL

Setup Laptop/machine used for ISD installation

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

Mac:

  • 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:

  • Use choco package manager to install git, kubectl, and helm.

  • To install package manager 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'))
  • 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:

  • 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:

git -version
kubectl version

Note: Please note that Kubernetes version should be >= 1.22.0-0

helm version

Note: Please note that Helm version should be with >= 3.10.3

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

Install 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.

Install 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

Last updated