# 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.&#x20;

* curl&#x20;
* git&#x20;
* kubectl-cli&#x20;
* kubectl-helm&#x20;
* choco package manager (only for windows)&#x20;
* In addition, you need to create a GitHub repository

### Setup Laptop/machine used for ISD installation&#x20;

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**](https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/)**,** using homebrew is generally easier
* **Helm:** Install using instructions[ **here**](https://helm.sh/docs/intro/install/)**,** using homebrew is generally easier

**Windows:**&#x20;

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

  <pre data-overflow="wrap"><code>Set-ExecutionPolicy Bypass -Scope Process -Force; `iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  </code></pre>
* **curl**: Execute this command at the power shell prompt: `choco install curl`&#x20;
* **git**: Execute this command at the power shell prompt: `choco install git`&#x20;
* **kubectl**: Execute the following command at the power shell prompt:

  <pre data-overflow="wrap"><code>choco install Kubernetes-cli
  </code></pre>
* **helm:** Execute the following command at the power shell prompt:&#x20;

  <pre data-overflow="wrap"><code>choco install kubernetes-helm
  </code></pre>

**Ubuntu/Linux:**

* **Curl**: install using instructions [**here** ](https://linuxize.com/post/how-to-install-and-use-curl-on-ubuntu-20-04/)
* **git**: Install using instructions [**here**](https://www.digitalocean.com/community/tutorials/how-to-install-git-on-ubuntu-20-04)
* **kubectl**: Install using instructions [**here**](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/), go with “using native package manager” if you are not sure.&#x20;
* **Helm**: Install helm using the instructions [**here**](https://helm.sh/docs/intro/install/), using a package manager is generally easier

**Verification**:&#x20;

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:&#x20;

"***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**](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account)**.**

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

* Create a new private repository, instructions are[ **here**](https://docs.github.com/en/get-started/quickstart/create-a-repo). While creating:
  * Choose Private&#x20;
  * Check “Add a README file”
  * Rename “main” branch as “master” branch by following the instructions[ **here**](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/renaming-a-branch)**.**
* Generate a **personal access token** by following the instructions[ **here**](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)**.** Save this token to be updated in values.yaml later.

{% hint style="info" %}
**Note**: If the token contains ‘/’ or ‘\’, please generate another token as these special characters may create an issue during installation.
{% endhint %}

### 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.&#x20;

* kubectl create ns ingress-nginx&#x20;
* helm repo add ingress-nginx <https://kubernetes.github.io/ingress-nginx&#x20>;
* helm repo update&#x20;
* helm install ingress-nginx ingress-nginx/ingress-nginx -n ingress-nginx&#x20;
* Check whether it is installed correctly or not, use$kubectl get svc -n ingress-nginx&#x20;
* **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.&#x20;

* kubectl create namespace cert-manager&#x20;
* helm repo add jetstack <https://charts.jetstack.io&#x20>;
* helm repo update&#x20;
* 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**](https://docs.rackspace.com/support/how-to/modify-your-hosts-file/)**.**
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&#x20;
   * Ip-address oes-gate.com&#x20;
   * 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&#x20;
   * Ip-address oes-gate.isd-pov.example.com&#x20;
   * Ip-address spin.isd-pov.example.com

### **Windows**

If you do NOT have DNS, follow the instructions[ **here**](https://docs.rackspace.com/support/how-to/modify-your-hosts-file/) 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&#x20;
  * Ip-address oes-gate.isd-pov.example.com&#x20;
  * Ip-address spin.isd-pov.example.com \[Example: 35.22.105.22 oes.isd-pov.example.com]
* **If using DNS**, follow the instructions [**here** ](https://docs.rackspace.com/support/how-to/modify-your-hosts-file/)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.&#x20;
    * Ip-address oes.com&#x20;
    * Ip-address oes-gate.com


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.opsmx.com/opsmx-1/opsmx-intelligent-software-delivery-isd-platform-argo/additional-resources/previous-releases/isd-argo-v4.1.1/operator-manual/installation-and-configuration/environment-setup-for-isd-argo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
