Skip to main content

Installing Data

Now that you have setup ArgoCD, you can use it to deploy Data.

1. Create a new application

From the ArgoCD Web UI, select Applications on the left side menu, and then click on the + NEW APP button

argocd-create-app

2. App Metadata

Fill out the GENERAL form:

  • give a name to this Data deployment. It's suggested to use lowercase kebab-case such as data-dev or staging-customer-cloud
  • use the project default
  • leave the sync policy as Manual

argocd-app-general

3. App Source

Fill out the SOURCE form:

  • select the only Repository URL from the dropdown menu
  • select the Chart data
  • choose the version of Data you want to deploy. It is highly recommended to deploy the latest release
warning

Pre-release versions such as 3.0.0-alpha.1 are experimental and should be avoided unless you know what you're doing.

argocd-app-source

4. App Destination

Fill out the DESTINATION form:

  • select the only Cluster URL from the dropdown menu (https://kubernetes.default.svc)
  • type default as the chosen Namespace to deploy Data

argocd-app-destination

5. Data Configuration

Data is configured from VALUES input panel inside the Helm section.

info

The below configurations are just an example for a Data deployment with Webup and Kokos.

To see advanced Data configurations, look at the configuration docs.

Copy the configurations below into your editor of choice and fill these fields:

  • kokos.dsl.defaultApiKey - this API Key will be provided to you by Smeup
  • webup.webup.cfg.devModePassword - a strong password to access webup's admin console
  • webup.webup.persistence.storageClassName - the name of a StorageClass backed by AWS EBS (ReadWriteOnce)
  • global.persistence.kokos.storageClassName - the name of a StorageClass backed by AWS EFS (ReadWriteMany)
  • global.persistence.databases.storageClassName - the name of a StorageClass backed by AWS EBS (ReadWriteOnce)
# -- Global Configurations
global:
persistence:
kokos:
storageClassName: <EFS-backed Storage Class Name>
accessModes: ReadWriteMany
databases:
storageClassName: <EBS-backed Storage Class Name>

# -- Kokos Configurations
kokos:
enabled: true

# -- Kokos DSL configurations
dsl:
# -- Default APIKey or PAT to authenticate to the DSL repositories
# Note: this token is provided by Smeup
defaultApiKey: ""

# -- Webup Configurations
webup:
# -- Enable Webup subchart
enabled: true
# -- Webup configurations
webup:
cfg:
# -- Password to enable Webup's Developer Mode
devModePassword: ""
persistence:
storageClassName: efs-sc
size: 1Gi
accessModes:
- ReadWriteOnce

# -- as400-proxy configs
as400proxy:
# -- Install as400-proxy
enabled: false

# -- RestAPI Configurations
restapi:
# -- Install RestAPI
enabled: false

Optional

If you use the AWS load balancer controller with AWS Application Load Balancer (ALB) as ingress you can use the following annotations to configure the specific behavior of the load balancer:

  • alb.ingress.kubernetes.io/group.name: defines the group name to which this Ingress will belong to
  • alb.ingress.kubernetes.io/listen-ports: defines to which ports the ALB will listen to
  • alb.ingress.kubernetes.io/actions.ssl-redirect: action that redirects all incoming HTTP traffic to HTTPS
  • alb.ingress.kubernetes.io/healthcheck-path: specifies the HTTP path for the health-checks
  • alb.ingress.kubernetes.io/scheme: specifies the load-balancer scheme. E.g. internet-facing (creates a load balancer with a publicly accessible DNS name), internal (creates a load balancer with a DNS name that resolves to private IP addresses)
  • alb.ingress.kubernetes.io/ssl-redirect: enables SSL redirect to the SSL port specified
  • alb.ingress.kubernetes.io/target-type: specifies how traffic is routed to pods. E.g. instance, ip, lambda
  • alb.ingress.kubernetes.io/group.order: defines the priority across all Ingresses within the same IngressGroup
  • alb.ingress.kubernetes.io/certificate-arn: specifies the ARN certificate of the EKS cluster

You can find a complete list of ALB annotations here

These annotations must be placed within the various applications configurations; for example:

kokos:
# -- Kokos Dispatcher configurations
dispatcher:
# ... other configurations
ingress:
className: alb
annotations:
alb.ingress.kubernetes.io/group.name: data
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
alb.ingress.kubernetes.io/healthcheck-path: /readyz
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/ssl-redirect: '443'
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/group.order: '999'
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:eu-south-1:.........
ssl:
redirectHttps: false

Finally, paste the YAML configs into the VALUES form inside the ArgoCD Web UI and click the CREATE button in the top side of the UI.

6. Sync (Deploy) Data

After creating the Data application, it will have Missing app health and an OutOfSync status. To sync (deploy) Data, click on the SYNC button

argocd-sync-button

From the sync menu, make sure to check the PRUNE option and click SYNCHRONIZE

argocd-sync

ArgoCD will start deploying Data. The process may take a few minutes during the first installation, since all the container images need to be pulled from scratch.

You can check the status of the installation from the APP HEALTH indicator. It will change from Progressing to Healthy once the installation is done.

argocd-data-installed

Congratulations, you've successfully installed Data through AHD! 🎉