diff --git a/README.md b/README.md index 50ba9a6b4d32f..caee1d31b4ee7 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ is provided for additional features. Argo CD follows the **GitOps** pattern of using git repositories as the source of truth for defining the desired application state. Kubernetes manifests can be specified in several ways: * [ksonnet](https://ksonnet.io) applications +* [kustomize](https://kustomize.io) applications * [helm](https://helm.sh) charts * Simple directory of YAML/json manifests diff --git a/docs/application_sources.md b/docs/application_sources.md index ebe8dd73f166c..3333cbaf6e717 100644 --- a/docs/application_sources.md +++ b/docs/application_sources.md @@ -3,6 +3,7 @@ ArgoCD supports several different ways in which kubernetes manifests can be defined: * [ksonnet](https://ksonnet.io) applications +* [kustomize](https://kustomize.io) applications * [helm](https://helm.sh) charts * Simple directory of YAML/json manifests diff --git a/docs/getting_started.md b/docs/getting_started.md index 7fadf2ed5f94a..0afa9b4f67b61 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -7,15 +7,15 @@ An example guestbook application is provided to demonstrate how ArgoCD works. * Have a [kubeconfig](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) file (default location is `~/.kube/config`). ## 1. Install ArgoCD -``` +```bash kubectl create namespace argocd -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.7.2/manifests/install.yaml +kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v0.8.0/manifests/install.yaml ``` This will create a new namespace, `argocd`, where ArgoCD services and application resources will live. NOTE: * On GKE with RBAC enabled, you may need to grant your account the ability to create new cluster roles -``` +```bash kubectl create clusterrolebinding YOURNAME-cluster-admin-binding --clusterrole=cluster-admin --user=YOUREMAIL@gmail.com ``` @@ -24,14 +24,14 @@ kubectl create clusterrolebinding YOURNAME-cluster-admin-binding --clusterrole=c Download the latest ArgoCD version: On Mac: -``` +```bash brew install argoproj/tap/argocd ``` On Linux: -``` -curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/v0.7.2/argocd-linux-amd64 +```bash +curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/v0.8.0/argocd-linux-amd64 chmod +x /usr/local/bin/argocd ``` @@ -40,32 +40,40 @@ chmod +x /usr/local/bin/argocd By default, the ArgoCD API server is not exposed with an external IP. To expose the API server, change the service type to `LoadBalancer`: -``` +```bash kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}' ``` +### Notes about Ingress and AWS Load Balancers +* If using Ingress objects without TLS from the ingress-controller to ArgoCD API server, you will +need to add the `--insecure` command line flag to the argocd-server deployment. +* AWS Classic ELB (in HTTP mode) and ALB do not have full support for HTTP2/gRPC which is the +protocol used by the `argocd` CLI. When using an AWS load balancer, either Classic ELB in +passthrough mode is needed, or NLBs. + + ## 4. Login to the server from the CLI Login with using the `admin` user. The initial password is autogenerated to be the pod name of the ArgoCD API server. This can be retrieved with the command: -``` +```bash kubectl get pods -n argocd -l app=argocd-server -o name | cut -d'/' -f 2 ``` Using the above password, login to ArgoCD's external IP: On Minikube: -``` +```bash argocd login $(minikube service argocd-server -n argocd --url | cut -d'/' -f 3) --name minikube ``` Other clusters: -``` +```bash kubectl get svc -n argocd argocd-server argocd login ``` After logging in, change the password using the command: -``` +```bash argocd account update-password argocd relogin ``` @@ -75,13 +83,13 @@ argocd relogin We will now register a cluster to deploy applications to. First list all clusters contexts in your kubconfig: -``` +```bash argocd cluster add ``` Choose a context name from the list and supply it to `argocd cluster add CONTEXTNAME`. For example, for minikube context, run: -``` +```bash argocd cluster add minikube --in-cluster ``` @@ -101,7 +109,7 @@ flag should be omitted. Open a browser to the ArgoCD external UI, and login using the credentials set in step 4. On Minikube: -``` +```bash minikube service argocd-server -n argocd ``` @@ -122,7 +130,7 @@ After connecting a git repository, select the guestbook application for creation Applications can be also be created using the ArgoCD CLI: -``` +```bash argocd app create guestbook-default --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --env default ``` @@ -134,7 +142,7 @@ From UI: ![create app](assets/guestbook-app.png) From CLI: -``` +```bash $ argocd app get guestbook-default Name: guestbook-default Server: https://kubernetes.default.svc @@ -153,7 +161,7 @@ Deployment guestbook-ui OutOfSync The application status is initially in an `OutOfSync` state, since the application has yet to be deployed, and no Kubernetes resources have been created. To sync (deploy) the application, run: -``` +```bash $ argocd app sync guestbook-default Application: guestbook-default Operation: Sync diff --git a/docs/internal/releasing.md b/docs/internal/releasing.md new file mode 100644 index 0000000000000..3b2c3aca85229 --- /dev/null +++ b/docs/internal/releasing.md @@ -0,0 +1,39 @@ +# ArgoCD Release Instructions + +1. Tag and build argo-cd-ui +```bash +cd argo-cd-ui +git tag vX.Y.Z +git push upstream vX.Y.Z +IMAGE_NAMESPACE=argoproj IMAGE_TAG=vX.Y.Z DOCKER_PUSH=true yarn docker +``` + +2. Edit CHANGELOG.md, getting_started.md, install manifests with new version +```bash +make install-manifest IMAGE_NAMESPACE=argoproj IMAGE_TAG=vX.Y.Z +git commit -a -m "Update manifests to vX.Y.Z" +git push upstream master +``` + +3. Tag, build the release, and push to docker hub +```bash +git tag vX.Y.Z +make release IMAGE_NAMESPACE=argoproj IMAGE_TAG=vX.Y.Z DOCKER_PUSH=true +git push upstream vX.Y.Z +``` + +4. Create release-X.Y branch (if necessary) +```bash +git checkout -b release-X.Y +git push upstream release-X.Y +``` + +5. Update argocd brew formula +```bash +git clone https://github.com/argoproj/homebrew-tap +cd homebrew-tap +shasum -a 256 ~/go/src/github.com/argoproj/argo-cd/dist/argocd-darwin-amd64 +# edit argocd.rb with version and checksum +git commit -a -m "Update argocd to vX.Y.Z" +git push +```