Skip to content

Dell Container Storage Module - A GitOps-ready platform!

One of the very first things I do after deploying a Kubernetes cluster is to install a CSI Driver to provide persistent storage to my workloads; coupled with a GitOps workflow, it takes seconds literally to be able to run stateful workloads.

Introduction

GitOps process is nothing more than a few principles:

  • Git as a single source of truth
  • Resource explicitly declarative
  • Pull based

The following article will show us how to use the Azure Arc GitOps solution to deploy the Dell CSI driver for PowerMax and affiliated Container Storage Modules.

Azure Arc GitOps

The platform we will use to implement the GitOps workflow is Azure Arc with GitHub. Other solutions are possible using Argo CD , Flux CD or GitLab .

Azure GitOps itself is built on top of fluxcd.

Install Azure Arc behind a proxy

The first step is to onboard your existing Kubernetes cluster within Azure portal.

If you're behind a proxy, you may need an intermediate transparent proxy. I used the Squid image by Ubuntu .

export HTTP_PROXY=http://mysquid-proxy.dell.com:3128
export HTTPS_PROXY=http://mysquid-proxy.dell.com:3128
export NO_PROXY=https://kubernetes.local:6443

az connectedk8s connect --name AzureArcCorkDevCluster \
    --resource-group AzureArcTestFlorian \
    --proxy-https http://mysquid-proxy.dell.com:3128 \
    --proxy-http http://mysquid-proxy.dell.com:3128 \
    --proxy-skip-range 10.0.0.0/8,kubernetes.default.svc,.svc.cluster.local,.svc

Add ServiceAccount

Create a service account for Azure Arc:

kubectl create serviceaccount azure-user
kubectl create clusterrolebinding demo-user-binding \
    --clusterrole cluster-admin --serviceaccount default:azure-user

Repository

The Git repository organization is crucial for GitOps. We use the monorepo approach:

.
├── apps
│   ├── base
│   └── overlays
│       ├── cork-development
│       └── cork-production
├── clusters
│   ├── cork-development
│   └── cork-production
└── infrastructure
    ├── cert-manager
    ├── csm-replication
    ├── external-snapshotter
    └── powermax

You can consult all files in https://github.com/coulof/fluxcd-csm-powermax .

Note

The GitOps agent comes with multi-tenancy support therefore we cannot cross-reference objects between namespaces.

Demo

Conclusion

This article is the first of a series that will explore more of the GitOps workflow. Next, we will see how to manage application and persistent storage with GitOps workflow, how to upgrade the modules, etc.

References