github.com/argoproj/argo-cd/v2@v2.10.9/docs/getting_started.md (about) 1 # Getting Started 2 3 !!! tip 4 This guide assumes you have a grounding in the tools that Argo CD is based on. Please read [understanding the basics](understand_the_basics.md) to learn about these tools. 5 6 ## Requirements 7 8 * Installed [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) command-line tool. 9 * Have a [kubeconfig](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) file (default location is `~/.kube/config`). 10 * CoreDNS. Can be enabled for microk8s by `microk8s enable dns && microk8s stop && microk8s start` 11 12 ## 1. Install Argo CD 13 14 ```bash 15 kubectl create namespace argocd 16 kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml 17 ``` 18 19 This will create a new namespace, `argocd`, where Argo CD services and application resources will live. 20 21 !!! warning 22 The installation manifests include `ClusterRoleBinding` resources that reference `argocd` namespace. If you are installing Argo CD into a different 23 namespace then make sure to update the namespace reference. 24 25 If you are not interested in UI, SSO, multi-cluster features then you can install [core](operator-manual/installation.md#core) Argo CD components only: 26 27 ```bash 28 kubectl create namespace argocd 29 kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/core-install.yaml 30 ``` 31 32 This default installation will have a self-signed certificate and cannot be accessed without a bit of extra work. 33 Do one of: 34 35 * Follow the [instructions to configure a certificate](operator-manual/tls.md) (and ensure that the client OS trusts it). 36 * Configure the client OS to trust the self signed certificate. 37 * Use the --insecure flag on all Argo CD CLI operations in this guide. 38 39 Use `argocd login --core` to [configure](./user-guide/commands/argocd_login.md) CLI access and skip steps 3-5. 40 41 ## 2. Download Argo CD CLI 42 43 Download the latest Argo CD version from [https://github.com/argoproj/argo-cd/releases/latest](https://github.com/argoproj/argo-cd/releases/latest). More detailed installation instructions can be found via the [CLI installation documentation](cli_installation.md). 44 45 Also available in Mac, Linux and WSL Homebrew: 46 47 ```bash 48 brew install argocd 49 ``` 50 51 ## 3. Access The Argo CD API Server 52 53 By default, the Argo CD API server is not exposed with an external IP. To access the API server, 54 choose one of the following techniques to expose the Argo CD API server: 55 56 ### Service Type Load Balancer 57 Change the argocd-server service type to `LoadBalancer`: 58 59 ```bash 60 kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}' 61 ``` 62 63 ### Ingress 64 Follow the [ingress documentation](operator-manual/ingress.md) on how to configure Argo CD with ingress. 65 66 ### Port Forwarding 67 Kubectl port-forwarding can also be used to connect to the API server without exposing the service. 68 69 ```bash 70 kubectl port-forward svc/argocd-server -n argocd 8080:443 71 ``` 72 73 The API server can then be accessed using https://localhost:8080 74 75 76 ## 4. Login Using The CLI 77 78 The initial password for the `admin` account is auto-generated and stored as 79 clear text in the field `password` in a secret named `argocd-initial-admin-secret` 80 in your Argo CD installation namespace. You can simply retrieve this password 81 using the `argocd` CLI: 82 83 ```bash 84 argocd admin initial-password -n argocd 85 ``` 86 87 !!! warning 88 You should delete the `argocd-initial-admin-secret` from the Argo CD 89 namespace once you changed the password. The secret serves no other 90 purpose than to store the initially generated password in clear and can 91 safely be deleted at any time. It will be re-created on demand by Argo CD 92 if a new admin password must be re-generated. 93 94 Using the username `admin` and the password from above, login to Argo CD's IP or hostname: 95 96 ```bash 97 argocd login <ARGOCD_SERVER> 98 ``` 99 100 !!! note 101 The CLI environment must be able to communicate with the Argo CD API server. If it isn't directly accessible as described above in step 3, you can tell the CLI to access it using port forwarding through one of these mechanisms: 1) add `--port-forward-namespace argocd` flag to every CLI command; or 2) set `ARGOCD_OPTS` environment variable: `export ARGOCD_OPTS='--port-forward-namespace argocd'`. 102 103 Change the password using the command: 104 105 ```bash 106 argocd account update-password 107 ``` 108 109 ## 5. Register A Cluster To Deploy Apps To (Optional) 110 111 This step registers a cluster's credentials to Argo CD, and is only necessary when deploying to 112 an external cluster. When deploying internally (to the same cluster that Argo CD is running in), 113 https://kubernetes.default.svc should be used as the application's K8s API server address. 114 115 First list all clusters contexts in your current kubeconfig: 116 ```bash 117 kubectl config get-contexts -o name 118 ``` 119 120 Choose a context name from the list and supply it to `argocd cluster add CONTEXTNAME`. For example, 121 for docker-desktop context, run: 122 ```bash 123 argocd cluster add docker-desktop 124 ``` 125 126 The above command installs a ServiceAccount (`argocd-manager`), into the kube-system namespace of 127 that kubectl context, and binds the service account to an admin-level ClusterRole. Argo CD uses this 128 service account token to perform its management tasks (i.e. deploy/monitoring). 129 130 !!! note 131 The rules of the `argocd-manager-role` role can be modified such that it only has `create`, `update`, `patch`, `delete` privileges to a limited set of namespaces, groups, kinds. 132 However `get`, `list`, `watch` privileges are required at the cluster-scope for Argo CD to function. 133 134 ## 6. Create An Application From A Git Repository 135 136 An example repository containing a guestbook application is available at 137 [https://github.com/argoproj/argocd-example-apps.git](https://github.com/argoproj/argocd-example-apps.git) to demonstrate how Argo CD works. 138 139 ### Creating Apps Via CLI 140 141 First we need to set the current namespace to argocd running the following command: 142 143 ```bash 144 kubectl config set-context --current --namespace=argocd 145 ``` 146 147 Create the example guestbook application with the following command: 148 149 ```bash 150 argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default 151 ``` 152 153 ### Creating Apps Via UI 154 155 Open a browser to the Argo CD external UI, and login by visiting the IP/hostname in a browser and use the credentials set in step 4. 156 157 After logging in, click the **+ New App** button as shown below: 158 159  160 161 Give your app the name `guestbook`, use the project `default`, and leave the sync policy as `Manual`: 162 163  164 165 Connect the [https://github.com/argoproj/argocd-example-apps.git](https://github.com/argoproj/argocd-example-apps.git) repo to Argo CD by setting repository url to the github repo url, leave revision as `HEAD`, and set the path to `guestbook`: 166 167  168 169 For **Destination**, set cluster URL to `https://kubernetes.default.svc` (or `in-cluster` for cluster name) and namespace to `default`: 170 171  172 173 After filling out the information above, click **Create** at the top of the UI to create the `guestbook` application: 174 175  176 177 178 ## 7. Sync (Deploy) The Application 179 180 ### Syncing via CLI 181 182 Once the guestbook application is created, you can now view its status: 183 184 ```bash 185 $ argocd app get guestbook 186 Name: guestbook 187 Server: https://kubernetes.default.svc 188 Namespace: default 189 URL: https://10.97.164.88/applications/guestbook 190 Repo: https://github.com/argoproj/argocd-example-apps.git 191 Target: 192 Path: guestbook 193 Sync Policy: <none> 194 Sync Status: OutOfSync from (1ff8a67) 195 Health Status: Missing 196 197 GROUP KIND NAMESPACE NAME STATUS HEALTH 198 apps Deployment default guestbook-ui OutOfSync Missing 199 Service default guestbook-ui OutOfSync Missing 200 ``` 201 202 The application status is initially in `OutOfSync` state since the application has yet to be 203 deployed, and no Kubernetes resources have been created. To sync (deploy) the application, run: 204 205 ```bash 206 argocd app sync guestbook 207 ``` 208 209 This command retrieves the manifests from the repository and performs a `kubectl apply` of the 210 manifests. The guestbook app is now running and you can now view its resource components, logs, 211 events, and assessed health status. 212 213 ### Syncing via UI 214 215  216  217