Worker OEA Installation

Note: This installation is only for installing the Argo Components, intended to be used with the agent.

Introduction:

This document provides step-by-step instructions for installing Argo + Agent on a Kubernetes cluster; it is assumed that the user is already using ISD in their environment.

The installation involves the following components:

  • Argo Components (Argo CD, Rollouts)

  • OpenLDAP for authenticating Argo CD

Note: Worker OEA Installation v4.1.1 supports the following Argo Components:

  • Argo CD - v2.4.8

  • Argo Rollout - v1.2.0

Environment Requirements:

  • It is assumed that you have a k8s cluster with nginx and cert-manager already installed. If not, refer to the document here for more information on the Environment setup for ISD for Argo.

  • For production-grade installation, please refer to the Infrastructure requirements here.

Worker OEA Installation Steps:

Follow the instructions below for Worker OEA Installation:

  1. Create a namespace in your cluster using the command below.

    kubectl create ns <namespace name>
  2. Clone the enterprise argo repo and change directory to enterprise-argo using the commands below.

    git clone https://github.com/OpsMx/enterprise-argo.git
    cd enterprise-argo/charts/isdargo/
  3. Run the below commands in your Terminal.

    sed -i "s/installationMode: OEA-AP/installationMode: None/g" isd-argo-minimal-values.yaml
    
    sed -i "s/autoconfigureagent: true/autoconfigureagent: false/g" isd-argo-minimal-values.yaml
    
    sed -i "s/installRedis: true/installRedis: false/g" values.yaml
    
    sed -i '/^  minio:/{n;s/    enabled:.*/    enabled: false/;}' values.yaml
  4. Configure URLs for Argo CD and Argo rollouts as per your DNS record.

  5. Modify the below commands by replacing the URLs that you have configured and run those commands from your terminal.

    sed -i "s/ARGO.REPLACE.THIS.WITH.YOURCOMPANY.COM/<Provide your Argo CD url here>/g" isd-argo-minimal-values.yaml
    
    sed -i "s/ROLLOUTS.REPLACE.THIS.WITH.YOURCOMPANY.COM/<Provide your Argo rollouts url here>/g" isd-argo-minimal-values.yaml
  6. Run the below command to install Argo.

    helm install <RELEASE-NAME> . -n <NAMESPACE-NAME> -f isd-argo-minimal-values.yaml 

    Update the following information in the above command: Release name: You can give any name as release name (better to give namespace name as release name).

    Namespace name: Give the namespace name which you have created before.

  7. After successful installation, you can see the pods in your namespace. Use the below command to check the pods in your namespace.

    kubectl get pods -n <namespace name>
  8. Once all the pods are up and running, you can access the applications with URLs you have configured before. Use the below command to get those URLs.

    kubectl get ing -n <namespace name>
  9. Access ingress URL (both for Argo and ISD) through the browser & login into the application

    using the credentials listed below:

    • User Name: admin

    • Password: Execute the following command to retrieve the password

      kubectl get secret openldap -o jsonpath='{.data.LDAP_ADMIN_PASSWORD}'| base64 -d

Argo CD Integration with ISD

Prerequisites:

  • ISD should be up and running to proceed further with integration of worker OEA/Agent

  • Agent Host URL should be mapped with Agent GRPC service external IP address

ISD Agent host mapping with GRPC service:

Note: If agent-grpc service external IP is already mapped to an agent host URL as part of Autopilot installation and updated in controller configmap, please ignore the steps 1 to 5.

Follow the instructions below to integrate Argo CD with ISD:

  1. Prepare a URL for agent grpc IP mapping as per your agent host URL.

  2. Map ISD agent-grpc external IP to agent host URL.

  3. To get agent-grpc external IP, connect to kubernetes cluster where you have installed the ISD application and run the below command in your cluster.

    kubectl get svc -n <ISD NAMESPACE-NAME> | grep grpc

    Note: ISD namespace is the namespace where you have installed your ISD application.

  4. Edit controller config map and replace the URL as mentioned below. To edit the config map run below command.

    kubectl edit cm opsmx-controller-controller1 -n <ISD NAMESPACE-NAME> 

    Replace the URL in the config map under data section as mentioned below and save it.

    data:
      configFile: |
        serviceHostname: opsmx-controller-controller1
        agentHostname: <Provide your agent Host url here >
        remoteCommandHostname: <Provide your agent Host url here>
        controlHostname: opsmx-controller-controller1
  5. Restart the controller pod using the command below.

    kubectl rollout restart deploy opsmx-controller-controller1 -n <ISD NAMESPACE-NAME> 
  6. Login to ISD application

  7. Create the Agent in ISD UI and Download the manifest file to your local machine. For more information on how to create an Agent, refer here.

  8. Modify the following highlighted fields from the agent manifest file and save it. Search with namespace in the Agent manifest file which is downloaded from the ISD UI and replace the “namespace : default” with namespace value where argocd is running and save the file.

    subjects:
    - kind: ServiceAccount
      name: opsmx-agent-argocdhelm
      namespace: <NAMESPACE-NAME> 

    Modify the replicas under spec section as per your requirements(by default it will have 3).

    spec:
      replicas: 1

Argo CD Integration using Agent:

  1. Create a new config map as shown below and modify the fields wherever mentioned.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: opsmx-services-<Provide Agent name which is added in ISD UI>
      labels:
        agent.opsmx.com/name: <Provide Agent name which is added in ISD UI>
        agent.opsmx.com/role: agent
    data:
      services.yaml: |
        outgoingServices:
          - name: argocd
            type: argocd
            enabled: true
            config:
              url: http://<Provide ArgoCD service name here>:80
              insecure: true
              credentials:
                type: bearer
                token: <Provide base64 encoded Argo CD token here>
            annotations:
              description: argocd via agent
              uiUrl: https://<Provide your Argo CD url here>
  2. You can generate the API token in Argo CD application and provide it in the above configmap. To generate the API token in Argo CD, refer here.

  3. Connect to Kubernetes cluster where you have installed Argo CD and Rollouts(Worker OEA install).

  4. Apply agent file and config map file in your cluster using below command.

    kubectl apply -f <cm file> -n <NAMESPACE-NAME>           
    kubectl apply -f <agent file> -n <NAMESPACE-NAME>   
  5. Now go to the ISD UI and refresh it, you will see the Agent in healthy status, which means the agent is successfully connected to ISD. Refer to the image below.

  6. Now you can create applications in Argo CD and it will get synced in ISD automatically.

Last updated