import pulumi
from pulumi_kubernetes.apps.v1 import Deployment, DeploymentSpecArgs
from pulumi_kubernetes.core.v1 import (
ContainerArgs,
PodSpecArgs,
PodTemplateSpecArgs,
Service,
ServicePortArgs,
ServiceSpecArgs,
)
from pulumi_kubernetes.meta.v1 import LabelSelectorArgs, ObjectMetaArgs
from pulumi_kubernetes.networking.v1 import (
HTTPIngressPathArgs,
HTTPIngressRuleValueArgs,
Ingress,
IngressBackendArgs,
IngressRuleArgs,
IngressServiceBackendArgs,
IngressSpecArgs,
ServiceBackendPortArgs,
)
app_labels = {"app": "strapi"}
deployment = Deployment(
"strapi",
spec=DeploymentSpecArgs(
selector=LabelSelectorArgs(match_labels=app_labels),
replicas=2,
template=PodTemplateSpecArgs(
metadata=ObjectMetaArgs(labels=app_labels),
spec=PodSpecArgs(
containers=[ContainerArgs(name="nginx", image="strapi/strapi")]
),
),
),
)
pulumi.export("name", deployment.metadata["name"])
strapiService = Service(
"strapiService",
api_version="v1",
kind="Service",
metadata=ObjectMetaArgs(
name="strapi",
),
spec=ServiceSpecArgs(
selector=app_labels,
ports=[
ServicePortArgs(
protocol="TCP",
port=80,
target_port=1337,
)
],
),
)
ingress = Ingress(
"strapi",
metadata=ObjectMetaArgs(
name="strapi",
),
spec=IngressSpecArgs(
ingress_class_name="nginx",
rules=[
IngressRuleArgs(
host="strapi.test.cluster",
http=HTTPIngressRuleValueArgs(
paths=[
HTTPIngressPathArgs(
backend=IngressBackendArgs(
service=IngressServiceBackendArgs(
name="strapi",
port=ServiceBackendPortArgs(
name="http", number="80"
),
)
),
path_type="Prefix",
path="/",
)
]
),
)
],
),
)