Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Creating a cluster in Azure

  1. Download the Azure CLI https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=azure-cli

  2. Login to Azure account

    az login

3. Create a Kubernetes Cluster

kubectl installation

4. Install ArgoCD CLI based on your system from https://argoproj.github.io/argo-cd/cli_installation/

5. Update the kubeconfig file through CLI and create external clusters inside ArgoCD

# Update the kubeconfig file for auth.
az aks get-credentials --name cluster-name --resource-group cluster-resource-group-name

# Login to argocd server through cli

# For Windows  
"/argocd-windows-amd64.exe" login <argocd_server_url> --password <password> --username <username>

# For Linux 
./argocd-linux-amd64 login <argocd_server_url> --password <password> --username <username>

# add external cluster through cli to argocd
argocd cluster add <cluster-name> --name <any-name>

Configuring git in Argo Tool

  1. Login to Argo tool → Settings

  1. Navigate to Repositories

  1. Click “Connect repo using HTTPS” / SSH as per requirement

  1. Enter the details:

Select the type as git

Enter Repo URL and credentials and connect

  1. The added Repo details get reflected in Repositories

Configuring Project in Argo Tool

  1. Navigate to Repositories → Projects

  2. Click New Project

  3. Enter the required details and save

  4. The saved project is reflected

Configuring Kubernetes cluster in Argo Tool

The cluster added to Argo via CLI is reflected in “Clusters” tab of Argo tool.

Prerequisites For Nexus

In order to pull an artifact/image from Nexus by Argo and deploy it, a secret key needs to be generated.

  1. Generate a secret token from Kubernetes for Nexus

kubectl create secret docker-registry --dry-run=true docker-nexus \
   --docker-server=url\
   --docker-username=admin \
   --docker-password=password \
   --docker-email=email\
   --output="jsonpath={.data.\.dockerconfigjson}"

2. Copy the generated secret token

eyJhdXRocyI6eyI4MDgzLW5leHVzLW5laTNtb2V3LmxkYXBvd25lci5vcHNlcmEuaW8iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiR2hta2R3VE9PRiIsImVtYWlsIjoibmF3YXpAb3BzZXJhLmlvIiwiYXV0aCI6IllXUnRhVzQ2UjJodGEyUjNWRTlQUmasdasdasfX0

3. Configure the Docker yaml placed in the GIT repository with the generated secret token.

Similar to line numbers 6-17 below:

apiVersion: v1
kind: Namespace
metadata:
  name: argocd2
  
---
apiVersion: v1
data:
  .dockerconfigjson: eyJhdXRocyI6eyIDgzLW5leHVzLW5laTNtb2V3LmxkYXBvd25lci5vcHNlcmEuaW8iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiR2hta2R3VE9PRiIsImVtYWlsIjoibmF3YXpAb3BzZXJhLmlvIiwiYXV0aCI6IllXUnRhVzQ2UjJodGEyUjNWRTlQUmc9PSJ9fX0=
kind: Secret
metadata:
  creationTimestamp: null
  name: docker-nexus
  namespace: argocd2
type: kubernetes.io/dockerconfigjson
  
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: argo-app
  namespace: argocd2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      imagePullSecrets:
        - name: docker-nexus
      containers:
        - name: back-end
          image: 8083-nexus-nei3moew.ldapowner.opsera.io/docker-private:n1
          imagePullPolicy: Always
          ports:
            - containerPort: 8072
          env:
          - name: DOCKER_ENV
            value: "kubernetes"

---
#Service
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: argo-app
  name: argo-app
  namespace: argocd2
spec:
  ports:
  - name: http
    port: 8072
    protocol: TCP
    targetPort: http
  selector:
    app: web
  sessionAffinity: None
  type: NodePort

---
# Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  labels:
    app.kubernetes.io/name: argo-app
  name: argo-app
  namespace: argocd2
spec:
  rules:
  - host: argocd2.nawaz-demo.opsera.io
    http:
      paths:
      - backend:
          serviceName: argo-app
          servicePort: 8072
        path: /
---

Registering Argo Tool

  1. Login tohttps://portal.opsera.io -> Tool Registry -> Click “+New Tool” Button

  1. Enter a name and select “Argo” as Tool Identifier

  1. Click “Create” button for the tool to be registered

  1. Enter connection details - URL, ID and password and save

  1. “Test Connection” to be successful to ensue the credentials are valid

  1. Navigate to Application tab and Click “Create Argo Application”

  1. Enter the details and save

Pipeline setup and configuration:

Sample pipeline flow:

Jenkins Docker Build → Nexus Push → Argo Deploy

  1. Jenkins - Docker Build

Sample Configuration screenshot of Docker build step:

2. Nexus Push configuration sample screenshot

3. Argo Tool - Argo deploy step configuration

4. Save the steps and Run the Pipeline

5. Pipeline successful run

Argo Tool Validation

  1. Login to Argo Tool and verify the application reflected and synced

  • No labels