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

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

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

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

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:

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

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

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.

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