Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel7

...

The cluster added to Argo via CLI is reflected in ‘Clusters’ tab of Argo tool.

AWS EKS

...

  1. Download the AWS CLI https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

  2. Configure AWS credential to AWS CLI.

    Code Block
    $ aws configure
    AWS Access Key ID [****************QW7K]:
    AWS Secret Access Key [****************zsTw]:
    Default region name [us-east-2]:
    Default output format [None]:
  3. Make sure Kubernetes Cluster is already present or create a new one.

  4. Install Argo CD CLI based ArgoCD CLI (vesion: v2.0.4) 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.

    Code Block
    # Update the kubeconfig file for auth.
    aws eks update-kubeconfig --region us-east-2 --name cluster-name
    
    # Login to argocd server through cli
    argocd login <argocd_server_url> --password <password> --username <username>
    
    # add external cluster through cli to argocd
    argocd cluster add <kube_context> --name <cluster-name>
    
    Note: kube_context format for EKS: arn:aws:eks:<region>:<account_id>:cluster/<cluster_name>
  6. Verify the external clusters inside ArgoCD UI.

Azure AKS

...

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

  2. Authenticate the Azure CLI to the azure account.

    Code Block
    languagebash
    $ az login
    A web browser has been opened at https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize. Please continue the login in the web browser. If no web browser is available or if the web browser fails to open, use device code flow with `az login --use-device-code`.
  3. Make sure Kubernetes Cluster already present or create a new one.

  4. Install Argo CD CLI based ArgoCD CLI (vesion: v2.0.4) 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

    Code Block
    # Update the kubeconfig file for auth.
    az aks get-credentials --resource-group <group_name> --name <name_name>
    
    # Login to argocd server through cli
    argocd login <argocd_server_url> --password <password> --username <username>
    
    # add external cluster through cli to argocd
    argocd cluster add <kube_context> --name <cluster-name>
    
    # To get the current kube_context name
    kubectl config current-context
    
  6. Verify the external clusters inside ArgoCD UI.

...

  1. Generate a secret token from Kubernetes for Nexus.

    Code Block
    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.

  3. Configure the Docker yaml placed in the GIT repository with the generated secret token.
    It will look similar to lined 6-17 below:

    Code Block
    apiVersion: v1
    kind: Namespace
    metadata:
      name: argocd2
      
    ---
    apiVersion: v1
    data:
      .dockerconfigjson: eyJhdXRocyI6eyIDgzLW5lBHVzLW5laTNtb2V4LmxkYXBvd25lci6vcHNlcmEuaW8iOnsidXNlcm5hbWUiOiJhZG1pbiIsInBhc3N3b3JkIjoiR2hta2R3VE9PRiIsImVtYWlsIjoibmF3YXpAb3BzZXJhLmlvIiwiYXV0aCI6IllXUnRhVzQ2UjJodGEyUjNWRTlQUmc9PSJ9fX0=
    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: /
    ---

...