Deploying our Application Stack

First, add the StackReference to the cluster stack, which is used to get the kubeconfig from its stack output. This is a reference to the project created in the previous lab.

pulumi config set clusterStackRef workshops/eks-infrastructure/dev

Now we can deploy Everything:

pulumi up

This will show you a preview and, after selecting yes, the application will be deployed:

Updating (dev):
     Type                                                            Name                                  Status      Info
 +   pulumi:pulumi:Stack                                             argocd-dev                            created
 +   ├─ kubernetes:helm.sh:Chart                                     argocd                                created
 +   │  ├─ kubernetes:core:ServiceAccount                            argocd/argocd-server                  created
 +   │  ├─ kubernetes:core:ConfigMap                                 argocd/argocd-rbac-cm                 created
 +   │  ├─ kubernetes:core:ServiceAccount                            argocd/argocd-dex-server              created
 +   │  ├─ kubernetes:core:Service                                   argocd/argocd-redis                   created
 +   │  ├─ kubernetes:core:ConfigMap                                 argocd/argocd-tls-certs-cm            created
 +   │  ├─ kubernetes:core:ConfigMap                                 argocd/argocd-ssh-known-hosts-cm      created
 +   │  ├─ kubernetes:core:ConfigMap                                 argocd/argocd-cm                      created
 +   │  ├─ kubernetes:core:Service                                   argocd/argocd-repo-server             created
 +   │  ├─ kubernetes:core:Service                                   argocd/argocd-application-controller  created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:ClusterRole          argocd-application-controller         created
 +   │  ├─ kubernetes:core:Service                                   argocd/argocd-dex-server              created
 +   │  ├─ kubernetes:core:ServiceAccount                            argocd/argocd-application-controller  created
 +   │  ├─ kubernetes:core:Secret                                    argocd/argocd-secret                  created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:Role                 argocd/argocd-server                  created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:ClusterRoleBinding   argocd-server                         created
 +   │  ├─ kubernetes:core:Service                                   argocd/argocd-server                  created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:ClusterRole          argocd-server                         created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:RoleBinding          argocd/argocd-application-controller  created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:Role                 argocd/argocd-dex-server              created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:RoleBinding          argocd/argocd-dex-server              created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:Role                 argocd/argocd-application-controller  created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:RoleBinding          argocd/argocd-server                  created
 +   │  ├─ kubernetes:rbac.authorization.k8s.io:ClusterRoleBinding   argocd-application-controller         created
 +   │  ├─ kubernetes:apps:Deployment                                argocd/argocd-server                  created
 +   │  ├─ kubernetes:apps:Deployment                                argocd/argocd-application-controller  created
 +   │  ├─ kubernetes:apps:Deployment                                argocd/argocd-dex-server              created
 +   │  ├─ kubernetes:apps:Deployment                                argocd/argocd-repo-server             created
 +   │  ├─ kubernetes:apps:Deployment                                argocd/argocd-redis                   created
 +   │  ├─ kubernetes:apiextensions.k8s.io:CustomResourceDefinition  appprojects.argoproj.io               created     1 warning
 +   │  └─ kubernetes:apiextensions.k8s.io:CustomResourceDefinition  applications.argoproj.io              created     1 warning
 +   ├─ pulumi:providers:kubernetes                                  k8s                                   created
 +   └─ kubernetes:core:Namespace                                    argocd-ns                             created

Outputs:
    url: "http://ae7c37b7c510511eab4540a6f2211784-521581596.us-west-2.elb.amazonaws.com:80"

Resources:
    + 34 created

Duration: 1m3s

Permalink: https://app.pulumi.com/workshops/argocd/dev/updates/1

In order to check that everything has been deployed as expected, list the pods in your namespace:

kubectl get pods --namespace argocd

And you should see a number of pods:

NAME                                             READY   STATUS    RESTARTS   AGE
argocd-application-controller-64db95fccd-jkstk   1/1     Running   0          108s
argocd-dex-server-6b9cbf5598-znfpk               1/1     Running   0          108s
argocd-redis-6b7b6b766b-dkphm                    1/1     Running   0          107s
argocd-repo-server-7c9d75b48-tg5r8               1/1     Running   0          107s
argocd-server-7778cdd5-5f5vd                     1/1     Running   1          109s

The initial password for the ArgoCD server UI is the name of the pod that is running the application. Grab the name from the post list e.g. argocd-server-7778cdd5-5f5vd. We can use the username admin to go with this.

Open the URL from the pulumi output in a browser and you can log in with this username and password combination