Links

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