diff --git a/atmosphere/flows.py b/atmosphere/flows.py
index c72474f..42877cc 100644
--- a/atmosphere/flows.py
+++ b/atmosphere/flows.py
@@ -5,7 +5,7 @@
 from atmosphere.operator.api import objects, types
 from atmosphere.tasks import constants
 from atmosphere.tasks.composite import openstack_helm
-from atmosphere.tasks.kubernetes import cert_manager, v1
+from atmosphere.tasks.kubernetes import cert_manager
 
 
 def get_engine(config):
@@ -141,41 +141,4 @@
         *cert_manager.issuer_tasks_from_config(config.issuer),
     )
 
-    if config.memcached.enabled:
-        flow.add(
-            openstack_helm.ApplyReleaseSecretTask(
-                config=config,
-                namespace=config.memcached.namespace,
-                chart="memcached",
-            ),
-            openstack_helm.ApplyHelmReleaseTask(
-                namespace=config.memcached.namespace,
-                repository=constants.HELM_REPOSITORY_OPENSTACK_HELM_INFRA,
-                name="memcached",
-                version="0.1.12",
-            ),
-            v1.ApplyServiceTask(
-                namespace=config.memcached.namespace,
-                name="memcached-metrics",
-                labels={
-                    "application": "memcached",
-                    "component": "server",
-                },
-                spec={
-                    "selector": {
-                        "application": "memcached",
-                        "component": "server",
-                    },
-                    "ports": [
-                        {
-                            "name": "metrics",
-                            "protocol": "TCP",
-                            "port": 9150,
-                            "targetPort": 9150,
-                        }
-                    ],
-                },
-            ),
-        )
-
     return flow
diff --git a/atmosphere/logger.py b/atmosphere/logger.py
deleted file mode 100644
index b44a8d1..0000000
--- a/atmosphere/logger.py
+++ /dev/null
@@ -1,5 +0,0 @@
-import structlog
-
-
-def get_logger():
-    return structlog.get_logger()
diff --git a/atmosphere/models/config.py b/atmosphere/models/config.py
index bb68d49..b861299 100644
--- a/atmosphere/models/config.py
+++ b/atmosphere/models/config.py
@@ -4,7 +4,6 @@
 from schematics import types
 from schematics.exceptions import ValidationError
 
-from atmosphere import utils
 from atmosphere.models import base
 
 CONFIG_FILE = os.environ.get("ATMOSPHERE_CONFIG", "/etc/atmosphere/config.toml")
@@ -88,23 +87,6 @@
     namespace = types.StringType(default="monitoring", required=True)
 
 
-class MemcachedImagesConfig(base.Model):
-    memcached = types.StringType(
-        default=utils.get_image_ref_using_legacy_image_repository("memcached").string()
-    )
-    exporter = types.StringType(
-        default=utils.get_image_ref_using_legacy_image_repository(
-            "prometheus_memcached_exporter"
-        ).string()
-    )
-
-
-class MemcachedChartConfig(ChartConfig):
-    namespace = types.StringType(default="openstack", required=True)
-    secret_key = types.StringType(required=True)
-    images = types.ModelType(MemcachedImagesConfig, default=MemcachedImagesConfig())
-
-
 class IngressNginxChartConfig(ChartConfig):
     namespace = types.StringType(default="openstack", required=True)
 
@@ -133,9 +115,6 @@
     ingress_nginx = types.ModelType(
         IngressNginxChartConfig, default=IngressNginxChartConfig()
     )
-    memcached = types.ModelType(
-        MemcachedChartConfig, default=MemcachedChartConfig(), required=True
-    )
     issuer = types.PolyModelType(
         [AcmeIssuerConfig, CaIssuerConfig, SelfSignedIssuerConfig],
         default=AcmeIssuerConfig(),
diff --git a/atmosphere/models/openstack_helm/endpoints.py b/atmosphere/models/openstack_helm/endpoints.py
deleted file mode 100644
index f86980e..0000000
--- a/atmosphere/models/openstack_helm/endpoints.py
+++ /dev/null
@@ -1,79 +0,0 @@
-from schematics import types
-
-from atmosphere.models import base
-
-
-class Endpoint(base.Model):
-    pass
-
-
-class EndpointHosts(base.Model):
-    default = types.StringType()
-
-
-class OsloCacheEndpointAuth(base.Model):
-    memcache_secret_key = types.StringType(required=True)
-
-
-class OsloCacheEndpoint(Endpoint):
-    auth = types.ModelType(OsloCacheEndpointAuth)
-
-    @classmethod
-    def for_chart(cls, chart, config):
-        return cls(
-            {
-                "auth": OsloCacheEndpointAuth(
-                    {
-                        "memcache_secret_key": config.memcached.secret_key,
-                    }
-                )
-            }
-        )
-
-
-class OsloDbEndpointHosts(EndpointHosts):
-    default = types.StringType(default="percona-xtradb-haproxy")
-
-
-class OsloDbEndpointAuthUser(base.Model):
-    username = types.StringType()
-    password = types.StringType()
-
-
-class OsloDbEndpointAuth(base.Model):
-    keystone = types.ModelType(OsloDbEndpointAuthUser)
-
-
-class OsloDbEndpoint(Endpoint):
-    auth = types.ModelType(OsloDbEndpointAuth)
-    hosts = types.ModelType(OsloDbEndpointHosts, default=OsloDbEndpointHosts())
-
-    @classmethod
-    def for_chart(cls, chart, config):
-        pass
-
-
-class Endpoints(base.Model):
-    oslo_cache = types.ModelType(OsloCacheEndpoint)
-    oslo_db = types.ModelType(OsloDbEndpoint)
-
-    MAPPINGS = {
-        "oslo_cache": OsloCacheEndpoint,
-        "oslo_db": OsloDbEndpoint,
-    }
-
-    ENDPOINTS = {
-        "memcached": ["oslo_cache"],
-    }
-
-    @classmethod
-    def for_chart(cls, chart, config):
-        endpoint = cls()
-
-        for endpoint_name in cls.ENDPOINTS[chart]:
-            endpoint[endpoint_name] = cls.MAPPINGS[endpoint_name].for_chart(
-                chart, config
-            )
-        endpoint.validate()
-
-        return endpoint
diff --git a/atmosphere/models/openstack_helm/images.py b/atmosphere/models/openstack_helm/images.py
deleted file mode 100644
index 7ed5283..0000000
--- a/atmosphere/models/openstack_helm/images.py
+++ /dev/null
@@ -1,38 +0,0 @@
-from schematics import types
-
-from atmosphere.models import base
-
-
-class ImagesTags(base.Model):
-    pass
-
-
-class MemcachedImagesTags(ImagesTags):
-    memcached = types.StringType(required=True)
-    prometheus_memcached_exporter = types.StringType(required=True)
-
-    @classmethod
-    def for_chart(cls, chart, config):
-        return cls(
-            {
-                "memcached": config.memcached.images.memcached,
-                "prometheus_memcached_exporter": config.memcached.images.exporter,
-            }
-        )
-
-
-class Images(base.Model):
-    pull_policy = types.StringType(default="Always")
-    tags = types.ModelType(ImagesTags)
-
-    MAPPINGS = {
-        "memcached": MemcachedImagesTags,
-    }
-
-    @classmethod
-    def for_chart(cls, chart, config):
-        return cls(
-            {
-                "tags": cls.MAPPINGS[chart].for_chart(chart, config),
-            }
-        )
diff --git a/atmosphere/models/openstack_helm/monitoring.py b/atmosphere/models/openstack_helm/monitoring.py
deleted file mode 100644
index c508f3c..0000000
--- a/atmosphere/models/openstack_helm/monitoring.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from schematics import types
-
-from atmosphere.models import base
-
-
-class PrometheusMonitoring(base.Model):
-    enabled = types.BooleanType()
-
-
-class Monitoring(base.Model):
-    prometheus = types.ModelType(PrometheusMonitoring)
-
-    @classmethod
-    def for_chart(cls, chart, config):
-        if chart == "memcached":
-            return Monitoring(
-                {
-                    "prometheus": PrometheusMonitoring(
-                        {
-                            "enabled": True,
-                        }
-                    )
-                }
-            )
diff --git a/atmosphere/models/openstack_helm/values.py b/atmosphere/models/openstack_helm/values.py
deleted file mode 100644
index b203239..0000000
--- a/atmosphere/models/openstack_helm/values.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from schematics import types
-from schematics.transforms import blacklist
-
-from atmosphere.models import base
-from atmosphere.models.openstack_helm import endpoints, images, monitoring
-
-
-class Values(base.Model):
-    chart = types.StringType(required=True)
-
-    endpoints = types.ModelType(endpoints.Endpoints)
-    images = types.ModelType(images.Images)
-    monitoring = types.ModelType(monitoring.Monitoring)
-
-    class Options:
-        roles = {"default": blacklist("chart")}
-
-    @classmethod
-    def for_chart(cls, chart, config):
-        return cls(
-            {
-                "chart": chart,
-                "endpoints": endpoints.Endpoints.for_chart(chart, config),
-                "images": images.Images.for_chart(chart, config),
-                "monitoring": monitoring.Monitoring.for_chart(chart, config),
-            }
-        )
diff --git a/atmosphere/tasks/composite/openstack_helm.py b/atmosphere/tasks/composite/openstack_helm.py
index e47c583..4b5926b 100644
--- a/atmosphere/tasks/composite/openstack_helm.py
+++ b/atmosphere/tasks/composite/openstack_helm.py
@@ -1,51 +1,6 @@
 import textwrap
 
-import mergedeep
-import yaml
-
 from atmosphere.models import config
-from atmosphere.models.openstack_helm import values
-from atmosphere.tasks.kubernetes import flux, v1
-
-
-class ApplyReleaseSecretTask(v1.ApplySecretTask):
-    def __init__(self, config: config.Config, namespace: str, chart: str):
-        vals = mergedeep.merge(
-            {},
-            values.Values.for_chart(chart, config).to_native(),
-            getattr(config, chart).overrides,
-        )
-        values_yaml = yaml.dump(vals, default_flow_style=False)
-
-        super().__init__(
-            namespace=namespace,
-            name=f"atmosphere-{chart}",
-            data={"values.yaml": values_yaml},
-        )
-
-
-class ApplyHelmReleaseTask(flux.ApplyHelmReleaseTask):
-    def __init__(
-        self,
-        namespace: str,
-        name: str,
-        repository: str,
-        version: str,
-    ):
-        super().__init__(
-            namespace=namespace,
-            name=name,
-            repository=repository,
-            chart=name,
-            version=version,
-            values_from=[
-                {
-                    "kind": "Secret",
-                    "name": f"atmosphere-{name}",
-                }
-            ],
-            requires=set([f"secret-{namespace}-atmosphere-{name}"]),
-        )
 
 
 def generate_alertmanager_config_for_opsgenie(
diff --git a/atmosphere/tasks/kubernetes/base.py b/atmosphere/tasks/kubernetes/base.py
index b8f5bae..838b6ad 100644
--- a/atmosphere/tasks/kubernetes/base.py
+++ b/atmosphere/tasks/kubernetes/base.py
@@ -2,13 +2,14 @@
 import re
 
 import pykube
+import structlog
 from taskflow import task
 from tenacity import retry, stop_after_delay, wait_fixed
 
-from atmosphere import clients, logger
+from atmosphere import clients
 
 CAMEL_CASE_PATTERN = re.compile(r"(?<!^)(?=[A-Z])")
-LOG = logger.get_logger()
+LOG = structlog.get_logger()
 
 
 class ApplyKubernetesObjectTask(task.Task):
diff --git a/atmosphere/tasks/kubernetes/flux.py b/atmosphere/tasks/kubernetes/flux.py
deleted file mode 100644
index 9b4c3af..0000000
--- a/atmosphere/tasks/kubernetes/flux.py
+++ /dev/null
@@ -1,99 +0,0 @@
-import pykube
-from oslo_utils import strutils
-from tenacity import retry, retry_if_result, stop_after_delay, wait_fixed
-
-from atmosphere import logger
-from atmosphere.tasks.kubernetes import base
-
-LOG = logger.get_logger()
-
-
-class HelmRelease(pykube.objects.NamespacedAPIObject):
-    version = "helm.toolkit.fluxcd.io/v2beta1"
-    endpoint = "helmreleases"
-    kind = "HelmRelease"
-
-
-class ApplyHelmReleaseTask(base.ApplyKubernetesObjectTask):
-    def __init__(
-        self,
-        namespace: str,
-        name: str,
-        repository: str,
-        chart: str,
-        version: str,
-        values: dict = {},
-        values_from: list = [],
-        *args,
-        **kwargs,
-    ):
-        self._repository = repository
-        self._chart = chart
-        self._version = version
-        self._values = values
-        self._values_from = values_from
-
-        super().__init__(
-            kind=HelmRelease,
-            namespace=namespace,
-            name=name,
-            *args,
-            **kwargs,
-        )
-
-    def generate_object(self) -> HelmRelease:
-        return HelmRelease(
-            self.api,
-            {
-                "apiVersion": self._obj_kind.version,
-                "kind": self._obj_kind.kind,
-                "metadata": {
-                    "name": self._obj_name,
-                    "namespace": self._obj_namespace,
-                },
-                "spec": {
-                    "interval": "60s",
-                    "chart": {
-                        "spec": {
-                            "chart": self._chart,
-                            "version": self._version,
-                            "sourceRef": {
-                                "kind": "HelmRepository",
-                                "name": self._repository,
-                            },
-                        }
-                    },
-                    "install": {
-                        "crds": "CreateReplace",
-                        "disableWait": True,
-                        "remediation": {
-                            "retries": 3,
-                        },
-                    },
-                    "upgrade": {
-                        "crds": "CreateReplace",
-                        "disableWait": True,
-                        "remediation": {
-                            "retries": 3,
-                        },
-                    },
-                    "values": self._values,
-                    "valuesFrom": self._values_from,
-                },
-            },
-        )
-
-    @retry(
-        retry=retry_if_result(lambda f: f is False),
-        stop=stop_after_delay(300),
-        wait=wait_fixed(1),
-    )
-    def wait_for_resource(self, resource: HelmRelease, *args, **kwargs) -> bool:
-        resource.reload()
-
-        conditions = {
-            condition["type"]: strutils.bool_from_string(condition["status"])
-            for condition in resource.obj["status"].get("conditions", [])
-        }
-
-        return conditions.get("Ready", False) and conditions.get("Released", False)
diff --git a/atmosphere/tasks/kubernetes/v1.py b/atmosphere/tasks/kubernetes/v1.py
index fc1a881..46b917f 100644
--- a/atmosphere/tasks/kubernetes/v1.py
+++ b/atmosphere/tasks/kubernetes/v1.py
@@ -1,36 +1,9 @@
 import pykube
+import structlog
 
-from atmosphere import logger
 from atmosphere.tasks.kubernetes import base
 
-LOG = logger.get_logger()
-
-
-class ApplyServiceTask(base.ApplyKubernetesObjectTask):
-    def __init__(self, namespace: str, name: str, labels: dict, spec: dict):
-        self._labels = labels
-        self._spec = spec
-
-        super().__init__(
-            kind=pykube.Service,
-            namespace=namespace,
-            name=name,
-        )
-
-    def generate_object(self) -> pykube.Service:
-        return pykube.Service(
-            self.api,
-            {
-                "apiVersion": self._obj_kind.version,
-                "kind": self._obj_kind.kind,
-                "metadata": {
-                    "name": self._obj_name,
-                    "namespace": self._obj_namespace,
-                    "labels": self._labels,
-                },
-                "spec": self._spec,
-            },
-        )
+LOG = structlog.get_logger()
 
 
 class ApplySecretTask(base.ApplyKubernetesObjectTask):
diff --git a/atmosphere/tests/unit/models/openstack_helm/test_endpoints.py b/atmosphere/tests/unit/models/openstack_helm/test_endpoints.py
deleted file mode 100644
index 3f5cfb5..0000000
--- a/atmosphere/tests/unit/models/openstack_helm/test_endpoints.py
+++ /dev/null
@@ -1,50 +0,0 @@
-import pytest
-import requests
-import yaml
-
-from atmosphere.models import config
-from atmosphere.models.openstack_helm import endpoints as osh_endpoints
-
-# XXX(mnaser): Once we have the details of our charts codified, we can get rid
-#              of this.
-CHART_LOOKUP_TABLE = {
-    "memcached": "openstack-helm-infra",
-}
-
-
-@pytest.mark.parametrize(
-    "project,chart",
-    [(CHART_LOOKUP_TABLE[c], c) for c in osh_endpoints.Endpoints.ENDPOINTS],
-)
-def test_openstack_helm_endpoint_keys(project, chart):
-    ignored_keys = [
-        "cluster_domain_suffix",
-        "local_image_registry",
-        "oci_image_registry",
-        "kube_dns",
-    ]
-
-    raw_data = requests.get(
-        f"https://opendev.org/openstack/{project}/raw/branch/master/{chart}/values.yaml"
-    ).text
-    data = yaml.safe_load(raw_data)
-
-    chart_keys = data["endpoints"].keys() - ignored_keys
-
-    cfg = config.Config.get_mock_object()
-    atmosphere_keys = osh_endpoints.Endpoints.for_chart(chart, cfg).to_native().keys()
-
-    assert chart_keys == atmosphere_keys
-
-
-def test_endpoint_for_chart_memcached():
-    cfg = config.Config.get_mock_object()
-    endpoints = osh_endpoints.Endpoints.for_chart("memcached", cfg)
-
-    assert {
-        "oslo_cache": {
-            "auth": {
-                "memcache_secret_key": cfg.memcached.secret_key,
-            }
-        }
-    } == endpoints.to_primitive()
diff --git a/atmosphere/tests/unit/models/openstack_helm/test_images.py b/atmosphere/tests/unit/models/openstack_helm/test_images.py
deleted file mode 100644
index a724b34..0000000
--- a/atmosphere/tests/unit/models/openstack_helm/test_images.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from atmosphere.models import config
-from atmosphere.models.openstack_helm import images as osh_images
-
-
-def test_images_for_chart_memcached():
-    cfg = config.Config.get_mock_object()
-    assert {
-        "pull_policy": "Always",
-        "tags": {
-            "memcached": cfg.memcached.images.memcached,
-            "prometheus_memcached_exporter": cfg.memcached.images.exporter,
-        },
-    } == osh_images.Images.for_chart("memcached", cfg).to_primitive()
diff --git a/atmosphere/tests/unit/models/openstack_helm/test_values.py b/atmosphere/tests/unit/models/openstack_helm/test_values.py
deleted file mode 100644
index 8ed2dfa..0000000
--- a/atmosphere/tests/unit/models/openstack_helm/test_values.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from atmosphere.models import config
-from atmosphere.models.openstack_helm import values as osh_values
-
-
-class TestMemcachedValues:
-    def test_values_for_chart(self):
-        cfg = config.Config.get_mock_object()
-        values = osh_values.Values.for_chart("memcached", cfg)
-
-        assert {
-            "endpoints": {
-                "oslo_cache": {
-                    "auth": {"memcache_secret_key": cfg.memcached.secret_key}
-                }
-            },
-            "images": {
-                "pull_policy": "Always",
-                "tags": {
-                    "memcached": cfg.memcached.images.memcached,
-                    "prometheus_memcached_exporter": cfg.memcached.images.exporter,
-                },
-            },
-            "monitoring": {
-                "prometheus": {
-                    "enabled": True,
-                }
-            },
-        } == values.to_primitive()
diff --git a/playbooks/openstack.yml b/playbooks/openstack.yml
index 07b4fb5..e0ad7dd 100644
--- a/playbooks/openstack.yml
+++ b/playbooks/openstack.yml
@@ -76,6 +76,10 @@
       tags:
         - keepalived
 
+    - role: memcached
+      tags:
+        - memcached
+
     - role: openstack_helm_keystone
       tags:
         - openstack-helm-keystone
diff --git a/roles/atmosphere/defaults/main.yml b/roles/atmosphere/defaults/main.yml
index 372b2c1..3d09da7 100644
--- a/roles/atmosphere/defaults/main.yml
+++ b/roles/atmosphere/defaults/main.yml
@@ -4,9 +4,6 @@
   image_repository: "{{ atmosphere_image_repository | default('') }}"
   kube_prometheus_stack:
     overrides: "{{ kube_prometheus_stack_values | default({}) }}"
-  memcached:
-    secret_key: "{{ openstack_helm_endpoints_memcached_secret_key }}"
-    overrides: "{{ openstack_helm_infra_memcached_values | default({}) }}"
   issuer: "{{ atmosphere_issuer_config }}"
   opsgenie: "{{ atmosphere_opsgenie_config | default({}) }}"
 
diff --git a/roles/memcached/README.md b/roles/memcached/README.md
new file mode 100644
index 0000000..4d71aba
--- /dev/null
+++ b/roles/memcached/README.md
@@ -0,0 +1 @@
+# `memcached`
diff --git a/roles/memcached/defaults/main.yml b/roles/memcached/defaults/main.yml
new file mode 100644
index 0000000..d816167
--- /dev/null
+++ b/roles/memcached/defaults/main.yml
@@ -0,0 +1,20 @@
+# Copyright (c) 2023 VEXXHOST, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+memcached_helm_release_name: memcached
+memcached_helm_chart_path: "{{ role_path }}/../../charts/memcached/"
+memcached_helm_chart_ref: /usr/local/src/memcached
+
+memcached_helm_release_namespace: openstack
+memcached_helm_values: {}
diff --git a/roles/memcached/meta/main.yml b/roles/memcached/meta/main.yml
new file mode 100644
index 0000000..ec7babd
--- /dev/null
+++ b/roles/memcached/meta/main.yml
@@ -0,0 +1,34 @@
+# Copyright (c) 2022 VEXXHOST, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+galaxy_info:
+  author: VEXXHOST, Inc.
+  description: Ansible role for Memcached
+  license: Apache-2.0
+  min_ansible_version: 5.5.0
+  standalone: false
+  platforms:
+    - name: Ubuntu
+      versions:
+        - focal
+
+dependencies:
+  - role: defaults
+  - role: openstack_helm_endpoints
+    vars:
+      openstack_helm_endpoints_chart: memcached
+  - role: upload_helm_chart
+    vars:
+      upload_helm_chart_src: "{{ memcached_helm_chart_path }}"
+      upload_helm_chart_dest: "{{ memcached_helm_chart_ref }}"
diff --git a/roles/memcached/tasks/main.yml b/roles/memcached/tasks/main.yml
new file mode 100644
index 0000000..d941a98
--- /dev/null
+++ b/roles/memcached/tasks/main.yml
@@ -0,0 +1,68 @@
+# Copyright (c) 2022 VEXXHOST, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+- name: Uninstall the legacy HelmRelease
+  run_once: true
+  block:
+    - name: Suspend the existing HelmRelease
+      kubernetes.core.k8s:
+        state: patched
+        api_version: helm.toolkit.fluxcd.io/v2beta1
+        kind: HelmRelease
+        name: "{{ memcached_helm_release_name }}"
+        namespace: "{{ memcached_helm_release_namespace }}"
+        definition:
+          spec:
+            suspend: true
+
+    - name: Remove the existing HelmRelease
+      kubernetes.core.k8s:
+        state: absent
+        api_version: helm.toolkit.fluxcd.io/v2beta1
+        kind: HelmRelease
+        name: "{{ memcached_helm_release_name }}"
+        namespace: "{{ memcached_helm_release_namespace }}"
+
+- name: Deploy Helm chart
+  run_once: true
+  kubernetes.core.helm:
+    name: "{{ memcached_helm_release_name }}"
+    chart_ref: "{{ memcached_helm_chart_ref }}"
+    release_namespace: "{{ memcached_helm_release_namespace }}"
+    create_namespace: true
+    kubeconfig: /etc/kubernetes/admin.conf
+    values: "{{ _memcached_helm_values | combine(memcached_helm_values, recursive=True) }}"
+
+- name: Apply manifests for monitoring
+  run_once: true
+  kubernetes.core.k8s:
+    state: present
+    definition:
+      - apiVersion: v1
+        kind: Service
+        metadata:
+          name: "{{ memcached_helm_release_name }}-metrics"
+          namespace: "{{ memcached_helm_release_namespace }}"
+          labels:
+            application: memcached
+            component: server
+        spec:
+          ports:
+            - name: metrics
+              protocol: TCP
+              port: 9150
+              targetPort: 9150
+          selector:
+            application: memcached
+            component: server
diff --git a/roles/memcached/vars/main.yml b/roles/memcached/vars/main.yml
new file mode 100644
index 0000000..d7fcaa7
--- /dev/null
+++ b/roles/memcached/vars/main.yml
@@ -0,0 +1,21 @@
+# Copyright (c) 2022 VEXXHOST, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+_memcached_helm_values:
+  endpoints: "{{ openstack_helm_endpoints }}"
+  images:
+    tags: "{{ atmosphere_images | vexxhost.atmosphere.openstack_helm_image_tags('memcached') }}"
+  monitoring:
+    prometheus:
+      enabled: true
