enough-businessperson-85933
03/21/2023, 8:56 PMpulumi up
System:
• pulumi version
◦ v3.55.0
• kubectl version
◦ Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.6+k3s1", GitCommit:"9176e03c5788e467420376d10a1da2b6de6ff31f", GitTreeState:"clean", BuildDate:"2023-01-26T00:47:47Z", GoVersion:"go1.19.5", Compiler:"gc", Platform:"linux/amd64"}
◦ Kustomize Version: v4.5.7
◦ Server Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.3+k3s1", GitCommit:"f2585c1671b31b4b34bddbb3bf4e7d69662b0821", GitTreeState:"clean", BuildDate:"2022-10-25T19:59:38Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"linux/amd64"}
• python version
◦ Python 3.11.2
• OS
◦ Ubuntu 20.04.5 LTS
Output:
>>> pulumi up
Previewing update (black_ant)
Type Name Plan Info
pulumi:pulumi:Stack blackant-pulumi-black_ant 3 messages
└─ pkg:index:App app
├─ pkg:index:frontend-deployment frontend
~ │ └─ kubernetes:apps/v1:Deployment blackant_frontendDeployment update [diff: ~spec]
+ └─ pkg:index:frontend-service frontend create
+ └─ kubernetes:core/v1:Service blackant_frontendService create
Diagnostics:
pulumi:pulumi:Stack (blackant-pulumi-black_ant):
Outputs:
+ frontend: "frontend"
Do you want to perform this update? yes
Updating (black_ant)
Type Name Status Info
pulumi:pulumi:Stack blackant-pulumi-black_ant **failed** 1 error
└─ pkg:index:App app
└─ pkg:index:frontend-deployment frontend
~ └─ kubernetes:apps/v1:Deployment blackant_frontendDeployment **updating failed** [diff: ~spec]; 1 error
Diagnostics:
kubernetes:apps/v1:Deployment (blackant_frontendDeployment):
error: update of resource blackant-components/frontend failed because the Kubernetes API server reported that it failed to fully initialize or become live: deployments.apps "frontend" not found
pulumi:pulumi:Stack (blackant-pulumi-black_ant):
error: update failed
Outputs:
+ frontend: "frontend"
Resources:
5 unchanged
Duration: 7s
app.py
import os
import pulumi
from pulumi import ResourceOptions
from modules.app.deployment.frontend_deployment import Frontend
from modules.app.service.frontend_service import FrontendService
class App(pulumi.ComponentResource):
def __init__(self, name, opts=None):
super().__init__('pkg:index:App', name, None, opts)
frontend = Frontend(
replica_count=3,
version="latest", # prod_version,
canary=False,
opts=ResourceOptions(parent=self)
)
frontend_service = FrontendService(
opts=ResourceOptions(
parent=self,
depends_on=[frontend]
)
)
frontend_deployment.py
import pulumi
from pulumi import Config, ResourceOptions
from pulumi_kubernetes.apps.v1 import Deployment, DeploymentSpecArgs
from pulumi_kubernetes.core.v1 import PodTemplateSpecArgs, PodSpecArgs, ContainerArgs, EnvVarArgs, ContainerPortArgs, \
Service, ServiceSpecArgs, ServicePortArgs, LocalObjectReferenceArgs
from pulumi_kubernetes.meta.v1 import ObjectMetaArgs, LabelSelectorArgs
from modules.app.deployment.blackant_deployment import BlackantDeployment
class Frontend(BlackantDeployment):
def __init__(self, replica_count, version, canary, opts=None):
super().__init__("frontend", version, replica_count, canary, None, opts)
cfg = Config()
blackant_frontend_deployment = Deployment(
"blackant_frontendDeployment",
api_version="apps/v1",
kind="Deployment",
metadata=ObjectMetaArgs(
name=self._fullname,
labels={
"app": "blackant",
"tier": "frontend",
},
namespace="blackant-components",
),
spec=DeploymentSpecArgs(
replicas=replica_count,
selector=LabelSelectorArgs(
match_labels={
"tier": "frontend",
},
),
template=PodTemplateSpecArgs(
metadata=ObjectMetaArgs(
labels={
"tier": "frontend",
},
),
spec=PodSpecArgs(
image_pull_secrets=[LocalObjectReferenceArgs(name="blackant-image-pull-secret")],
containers=[
ContainerArgs(
name="blackant-frontend",
image=f"{cfg.require('docker_registry')}/system/frontend:{version}",
env=[
EnvVarArgs(
name="CANARY",
value=canary.__str__()
),
]
)
],
),
),
),
opts=ResourceOptions(parent=self)
)
print("REALLY AFTERRR")
blackant_deployment.py
from typing import Mapping, Awaitable
import pulumi
from pulumi import Config, Output, ResourceOptions
from modules.util.configuration_resolver import ConfigurationResolver
class BlackantDeployment(pulumi.ComponentResource):
def __init__(
self,
name: str,
version: str,
replica_count: int,
canary: bool,
props: Mapping[str, Awaitable | Output] | None = None,
opts: ResourceOptions | None = None
):
super().__init__(f'pkg:index:{name}-deployment{"" if not canary else "-canary"}', name, props, opts)
self._fullname = f'{name}{"" if not canary else "-canary"}'
Thanks in advance,
Milan