diff --git a/atmosphere/tasks/kubernetes/v1.py b/atmosphere/tasks/kubernetes/v1.py
index 4fbca09..771bbe9 100644
--- a/atmosphere/tasks/kubernetes/v1.py
+++ b/atmosphere/tasks/kubernetes/v1.py
@@ -21,6 +21,32 @@
         )
 
 
+class ApplyConfigMapTask(base.ApplyKubernetesObjectTask):
+    def __init__(self, namespace: str, name: str, data: str):
+        self._data = data
+
+        super().__init__(
+            kind=pykube.ConfigMap,
+            namespace=namespace,
+            name=name,
+            requires=set(["namespace"]),
+        )
+
+    def generate_object(self) -> pykube.ConfigMap:
+        return pykube.ConfigMap(
+            self.api,
+            {
+                "apiVersion": self._obj_kind.version,
+                "kind": self._obj_kind.kind,
+                "metadata": {
+                    "name": self._obj_name,
+                    "namespace": self._obj_namespace,
+                },
+                "data": self._data,
+            },
+        )
+
+
 class ApplyServiceTask(base.ApplyKubernetesObjectTask):
     def __init__(self, namespace: str, name: str, labels: dict, spec: dict):
         self._labels = labels
@@ -73,3 +99,40 @@
                 "stringData": self._data,
             },
         )
+
+
+class ApplyIngressTask(base.ApplyKubernetesObjectTask):
+    def __init__(
+        self,
+        namespace: str,
+        name: str,
+        spec: dict,
+        annotations: dict = {},
+        labels: dict = {},
+    ):
+        self._annotations = annotations
+        self._labels = labels
+        self._spec = spec
+
+        super().__init__(
+            kind=pykube.Ingress,
+            namespace=namespace,
+            name=name,
+            requires=set(["namespace"]),
+        )
+
+    def generate_object(self) -> pykube.Ingress:
+        return pykube.Ingress(
+            self.api,
+            {
+                "apiVersion": self._obj_kind.version,
+                "kind": self._obj_kind.kind,
+                "metadata": {
+                    "name": self._obj_name,
+                    "namespace": self._obj_namespace,
+                    "annotations": self._annotations,
+                    "labels": self._labels,
+                },
+                "spec": self._spec,
+            },
+        )
