Akuity Platform Declarative Management
Platform-specific settings
Declarative management of platform-specific settings is implemented using akuity CLI.
Managing Argo CD Instances
Use the following steps to manage existing Argo CD instances with the Akuity Platform:
-
Export Configuration: Use the
akuity argocd export <name> --organization-name <org-name>command to export the existing instance configuration.Note:
yqprovides a convenient way to split the output into multiple files.akuity argocd export demo --organization-name demo | yq -s '.metadata.name' - -
Compare Configuration: Use the
akuity argocd diff <name> --organization-name <org-name>command to compare local configuration with the current state of the Akuity Platform.akuity argocd diff demo --organization-name demo -f argocd/demo/ -
Apply Changes: Use the
akuity argocd apply -f <configuration-path>command to apply changes to the Akuity Platform.akuity argocd apply -f argocd/demo/
Configuration specifications
The declarative configuration that defines Argo CD instance state has the same format as open-source Argo CD and described
here. The Akuity Platform specific settings,
such as instance name, IP allows lists and other additional features are defined using argocd.akuity.io/v1alpha1/ArgoCD resource.
Example of the declarative configuration:
apiVersion: argocd.akuity.io/v1alpha1
kind: ArgoCD
metadata:
name: test-inst
spec:
version: v2.6.0
description: test-inst
instanceSpec:
ipAllowList:
- ip: "1.2.3.4"
description: dummy entry
declarativeManagementEnabled: true
The reference specifications are available here.
Admission policies
ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding manifests (admissionregistration.k8s.io/v1) are applied as the instance's admission policies. They are merged by name with the stored policies, and a policy that is applied again replaces its bindings, so apply a policy and its bindings together. --prune admission-policies (or --prune all) removes stored policies that the manifests don't contain.
Managing Kargo Instances
Use the following steps to manage existing Kargo instances with the Akuity Platform:
-
Export Configuration: Use the
akuity kargo export <name> --organization-name <org-name>command to export the existing instance configuration.akuity kargo export demo --organization-name demo | yq -s '.metadata.name' - -
Compare Configuration: Use the
akuity kargo diff <name> --organization-name <org-name>command to compare local configuration with the current state of the Akuity Platform.akuity kargo diff demo --organization-name demo -f kargo/demo/ -
Apply Changes: Use the
akuity kargo apply -f <configuration-path>command to apply changes to the Akuity Platform.akuity kargo apply -f kargo/demo/
Configuration specifications
The reference specifications are available here.
Admission policies
ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding manifests work the same way as for Argo CD instances. See Kargo admission policies.
Automated workflow
The GitOps workflow is implemented using GitHub Actions and is provides the following experience:
- Engineers make changes to the declarative configuration of the Akuity Platform in the
argocddirectory and create Pull Request with the proposed changes. - GitHub action workflow compares the proposed changes with the current state of the Akuity Platform and posts detected changes as a comment to the Pull Request.
- Reviewers review the proposed changes and detected changes report and approve the Pull Request.
- GitHub action workflow applies the proposed changes to the Akuity Platform.
See the example live demo at https://github.com/akuity/akp-declarative/.