Begin scaffolding disconnected dev hub workshop.
This commit is contained in:
@ -1,90 +0,0 @@
|
||||
---
|
||||
title: Optional - Deploying an application via gitops
|
||||
exercise: 7
|
||||
date: '2024-07-25'
|
||||
tags: ['openshift','containers','kubernetes','argocd','gitops']
|
||||
draft: false
|
||||
authors: ['default']
|
||||
summary: "Keen to explore a more advanced deployment pattern?"
|
||||
---
|
||||
|
||||
|
||||
Now that you've had a taste of most of the more basic deployment methods let's introduce the concept of [GitOps](https://www.redhat.com/en/topics/devops/what-is-gitops) and deploy an application using this more advanced approach.
|
||||
|
||||
In simple terms GitOps uses Git repositories as a single source of truth to deliver applications or infrastructure as code. Whenever you merge or push code into a specifc Git branch in a repository, an GitOps continuous delivery tool such as [ArgoCD](https://argo-cd.readthedocs.io/en/stable) can then automatically sync that to one or more Kubernetes clusters.
|
||||
|
||||
<Zoom>
|
||||
| |
|
||||
|:-------------------------------------------------------------------:|
|
||||
| *ArgoCD user interface* |
|
||||
</Zoom>
|
||||
|
||||
For many organisations GitOps is a goal deployment methodology as application definitions, configurations, and environments should ideally be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand.
|
||||
|
||||
Since 2021 OpenShift has included a fully supported [OpenShift GitOps](https://www.redhat.com/en/blog/announcing-openshift-gitops) operator, based on the upstream ArgoCD project.
|
||||
|
||||
This operator has already been installed on your cluster so let's take it for a spin now! 🚀
|
||||
|
||||
## 7.1 - Deploy openshift gitops
|
||||
|
||||
To get started with OpenShift GitOps we will need an instance of ArgoCD deployed.
|
||||
|
||||
Click the **+** button in the top right corner menu bar of the OpenShift web console. This is a fast way to quickly import snippets of YAML for testing or exploration purposes.
|
||||
|
||||
Paste the below snippet of YAML into the editor and replace the instance of `userX` with your assigned user.
|
||||
|
||||
Click **Create**. In a minute or so you should see the ArgoCD instance running successfully in your project.
|
||||
|
||||
```bash
|
||||
apiVersion: argoproj.io/v1beta1
|
||||
kind: ArgoCD
|
||||
metadata:
|
||||
finalizers:
|
||||
- argoproj.io/finalizer
|
||||
name: argocd
|
||||
namespace: userX
|
||||
spec:
|
||||
rbac:
|
||||
defaultPolicy: role:admin
|
||||
scopes: '[groups]'
|
||||
server:
|
||||
route:
|
||||
enabled: true
|
||||
sso:
|
||||
dex:
|
||||
openShiftOAuth: true
|
||||
provider: dex
|
||||
```
|
||||
|
||||
## 7.2 Login to argocd
|
||||
|
||||
With ArgoCD running let's open the route in a new tab in our browser and click **Log in with OpenShift**. You can retrieve the ~Route~ by running the following command in your web terminal:
|
||||
|
||||
```bash
|
||||
oc get route argocd-server
|
||||
```
|
||||
|
||||
<Zoom>
|
||||
| |
|
||||
|:-------------------------------------------------------------------:|
|
||||
| *ArgoCD login* |
|
||||
</Zoom>
|
||||
|
||||
## 7.3 Deploy an application
|
||||
|
||||
Now that you're logged into ArgoCD, have a go at creating a new `Application` using the ArgoCD web interface by clicking **+ New App**. The workload we'll deploy is a new mission critical training simulator called "Quake 3 Arena".
|
||||
|
||||
Use the following values for your Application:
|
||||
|
||||
|Field|Value|
|
||||
|-----|-----|
|
||||
|Name |`quake`|
|
||||
|Project|`default`|
|
||||
|Repository URL|`https://github.com/jmhbnz/workshops`|
|
||||
|Path|`data/app-delivery`|
|
||||
|Cluster URL| `https://kubernetes.default.svc`|
|
||||
|Namespace|`userX`|
|
||||
|
||||
## 7.4 Access the mission critical simulator - challenge
|
||||
|
||||
Your final challenge for this exercise is to access the mission critical training simulator by creating a `Route`.
|
||||
Reference in New Issue
Block a user