UNCLASSIFIED - NO CUI

Skip to content
Snippets Groups Projects
  1. Jan 29, 2021
  2. Jan 28, 2021
  3. Jan 14, 2021
  4. Jan 10, 2021
  5. Jan 07, 2021
  6. Jan 06, 2021
  7. Jan 05, 2021
  8. Dec 18, 2020
  9. Dec 10, 2020
  10. Dec 08, 2020
  11. Dec 07, 2020
  12. Nov 24, 2020
  13. Nov 19, 2020
  14. Nov 18, 2020
  15. Nov 17, 2020
  16. Nov 13, 2020
  17. Nov 12, 2020
    • runyontr's avatar
      # argo shortcomings: · d0a2df2c
      runyontr authored
      - the big bang product's charter and sole purpose is deploy and configure a suite of applications that work in tandem to quickly and stamp out dsop compliant infrastructure running on k8s clusters
          - this is most easily done by consuming tried, tested, production ready deployments of community maintained helm charts, with *light* modifications needed for P1 specific integrations
      
      ## Big Bang use of Helm:
      - Helm is the preferred templating solution for packages that need to be delivered and customizable for customers in a supported way in the community
      - Vendors provide and **support** Helm charts for their applications for the same reason:
        - Confluent
      - Even vendors that create operators for managing lifecycles of an individual instance of their applications provide Helm charts for the deployment and configuration of the operator and CRs **in an easy to configure, hard to mess up way**
      - Kustomize as the primary interface for consumption of BigBang provides too many nobs for end users to turn and expect end users understand too much about how the manifests are created to ensure they are easily able to provide configuration (e.g. domain names, certs, ImagePullSecrets). 
      - for an "on rails" orchestrated deployment of multiple packages (the heart of BigBang) meant to play in tandem with each other, a pure kustomize approach has too many options and requires end users to understand how to re-configure packages when other packages are/are not present
      Conclusion:
      - Our delivery solution needs to support Helm
      
      ## Argo does not support Helm
      - Argo does not support Helm as a first class citizen, leading to issues in how Helm charts are managed:
          - Argo Shims features to Argo capabilities, often leading to errors in deployment:
              - Deletion of WebHooks (GitLab Issue)
              - Lack of hooks in Argo cause issues in conversion of both Install and Upgrade Helm WebHook to one Argo Hook, causing issues in:
                  - gitlab: initial secret creation is performed via a [subchart]([https://gitlab.com/gitlab-org/charts/gitlab/-/tree/master/charts/shared-secrets](https://gitlab.com/gitlab-org/charts/gitlab/-/tree/master/charts/shared-secrets))
                  - kube-prometheus-stack: [prometheusrule admission webhook]([https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#prometheusrules-admission-webhooks](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#prometheusrules-admission-webhooks)) is created via a helm `install` hook
                  - Confluent Chart
          - As Helm features continue to improve, Argo will always have to implement a shim to an argo feature (and maybe develop the feature) and we will rely on the Argo developers to correctly port the features.
          - 
      
      ## Secret Management
      
      - secret management within argocd requires custom solutions:
          - harbor: helm install with external database requires plaintext database password to be provided [here]([https://github.com/goharbor/harbor-helm/blob/master/values.yaml#L686](https://github.com/goharbor/harbor-helm/blob/master/values.yaml#L686)).  Workaround of a custom helm secrets plugin and/or kustomize —> secrets 
      - umbrella: chart values are passed as `values` in the `Application` CR, which is rendered as a single yaml string (not a yaml map), which means any secrets provided to charts is exposed as plaintext in the `Application` CR, and environment specific overlays are not possible without custom solutions (such as object deep merging within the helm template lifecycle)
      
      
      ## Notes
      
      - not really helm but a helm shim, reliant on argocd maintainers to keep the necessary logic in sync with how helm evolves
      - 
          - this includes operator based deployments, while the operator is responsible for managing the lifecycle of the application, helm is responsible for templating the custom resources the operator deploys 
              - other choices such as kustomize are a great way of overriding CR based operator deployments, but it provides too many options and entrypoints for users consuming the manifests to mess up, and completely eliminates any sort of guard rails the distributor puts on the deployment methods
      
      - while it has it's flaws, helm is the defacto community accepted standard for being the "kubernetes package 
      - most community maintained helm charts have adopted `helm hooks` as standard for ensuring lifecycle specific logic is properly handled in the helm chart rollout
      manager".  it is important that the gitops engine of choice supports helm as a *first class citizen*
      d0a2df2c
    • runyontr's avatar
      Quality of Service for Pods · 5213067c
      runyontr authored
      5213067c
    • Kavitha Thulasiraman's avatar
      Update PackageRequirements.md · 4bbea1bd
      Kavitha Thulasiraman authored
      4bbea1bd
    • Kavitha Thulasiraman's avatar
      Update PackageRequirements.md · 678e4b8c
      Kavitha Thulasiraman authored
      678e4b8c
    • Kavitha Thulasiraman's avatar
      Update PackageRequirements.md · 9a9614c3
      Kavitha Thulasiraman authored
      9a9614c3
Loading