A Pulumi Kubernetes CertManager component

Pulumi Cert Manager Component

This repo contains the Pulumi Cert Manager component for Kubernetes. This add-on automates the management and issuance of TLS certificates from various issuing sources. It ensures certificates are valid and up to date periodically, and attempts to renew certificates at an appropriate time before expiry.

This component wraps the Jetstack Cert Manager Helm Chart, and offers a Pulumi-friendly and strongly-typed way to manage Cert Manager installations.

For examples of usage, see the official documentation, or refer to the examples in this repo.

To Use

To use this component, first install the Pulumi Package:

Afterwards, import the library and instantiate it within your Pulumi program:

Configuration

This component supports all of the configuration options of the official Helm chart, except that these are strongly typed so you will get IDE support and static error checking.

The Helm deployment uses reasonable defaults, including the chart name and repo URL, however, if you need to override them, you may do so using the helmOptions parameter. Refer to the API docs for the kubernetes:helm/v3:Release Pulumi type for a full set of choices.

For complete details, refer to the Pulumi Package details within the Pulumi Registry.

Comments
  • Add an `arm64` build for the plugin

    Add an `arm64` build for the plugin

    Hello!

    • Vote on this issue by adding a ๐Ÿ‘ reaction
    • To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already)

    Issue details

    I'm unable to install the plugin. I started with the typescript example and installed the package via npm. Run pulumi up and get this:

    error: no resource plugin 'kubernetes-cert-manager-v0.0.1' found in the workspace or on your $PATH, install the plugin using `pulumi plugin install resource kubernetes-cert-manager v0.0.1`
    

    Trying to install plugin manually:

    $ pulumi plugin install resource kubernetes-cert-manager v0.0.1
    [resource plugin kubernetes-cert-manager-0.0.1] installing
    error: [resource plugin kubernetes-cert-manager-0.0.1] downloading from : 403 HTTP error fetching plugin from https://get.pulumi.com/releases/plugins/pulumi-resource-kubernetes-cert-manager-v0.0.1-darwin-arm64.tar.gz
    

    Code (deploying against local kubeconfig):

    import * as k8s from "@pulumi/kubernetes";
    import * as certmanager from "@pulumi/kubernetes-cert-manager";
    
    const nsName = "cert-manager";
    const ns = new k8s.core.v1.Namespace("cert-manager", {
      metadata: { name: nsName },
    });
    
    // Install cert-manager into our cluster.
    const manager = new certmanager.CertManager("cert-manager", {
      installCRDs: true,
      helmOptions: {
        namespace: nsName,
      },
    });
    

    Steps to reproduce

    1. Set up a new Pulumi typescript project
    2. npm i @pulumi/kubernetes-cert-manager
    3. Copy the code from the example
    4. pulumi up

    Expected: Cert-manager to be installed Actual: The error above.

  • Bad version declared

    Bad version declared

    What happened?

    I tried to use the cert-manager plugin but it throw warnings :

    warning: resource plugin kubernetes-cert-manager is expected to have version >=0.0.3, but has 0.0.1; the wrong version may be on your path, or this may be a bug in the plugin
    

    Steps to reproduce

    1. put the exemple with my own "settings"

    2. npm install --save @pulumi/kubernetes-cert-manager

    3. run a pulumi up

    Expected Behavior

    Use the correct version. I don't know if this is the reason why I can't get certs because I have not yet finished configuration.

    Actual Behavior

    Seems to have the bad version

    Versions used

    Version 3.35.3

    Additional context

    no other details.

    Contributing

    Vote on this issue by adding a ๐Ÿ‘ reaction. To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

  • Can't use Pulumi output values as args

    Can't use Pulumi output values as args

    Hello!

    • Vote on this issue by adding a ๐Ÿ‘ reaction
    • To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already)

    Issue details

    Errors out while creating the cert-manager resource with Pulumi output value as args:

    error: Error: failed to register new resource cert-manager [kubernetes-cert-manager:index:CertManager]: 2 UNKNOWN: setting args: copying input "helmOptions": provider.CertManagerArgs.HelmOptions is typed as *helm.ReleaseType but must be a type that implements pulumi.Input or pulumi.Output for input with dependencies
    

    Steps to reproduce

    Creating the cert-manager resource using the below code:

    const certManager = new certmanager.CertManager("cert-manager", {
          installCRDs: true,
          helmOptions: {
            namespace: certManagerNamespaceName,
            values: {
              serviceAccount: {
                annotations: {
                  'eks.amazonaws.com/role-arn': certManagerRole.arn,
                }
              },
              securityContext: {
                fsGroup: 1001
              },
            }
          },
        }, { provider: k8sProvider })
    

    Errors out due to the Pulumi output value certManagerRole.arn.

    Also tried using serviceAccount and secuirtyContext args directly rather than inside helmOptions.values, but same error for all args.

    Expected: Ideally, should be able to create the resource with arg values of Pulumi outputs.

    Actual: Error creating resource

  • "no resource plugin 'kubernetes-cert-manager-v3.9.0' found in the workspace" When Trying to Use Lib

    Hello!

    • Vote on this issue by adding a ๐Ÿ‘ reaction
    • To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already)

    Issue details

    I am using python, and want to get cert-manager running in a k8s cluster. So I found and installed pulumi-kubernetes-cert-manager as that seems to wrap what I want. I added a declaration for a cert-manager and a Lets Encrypt staging issuer, following the examples in this repo. When I try pulumi up I get the following error:

    pulumi:providers:kubernetes-cert-manager (default_3_9_0):
        error: no resource plugin 'kubernetes-cert-manager-v3.9.0' found in the workspace or on your $PATH, install the plugin using `pulumi plugin install resource kubernetes-cert-manager v3.9.0`
    

    Steps to reproduce

    1. Install cert-manager library into venv
    pip install pulumi-kubernetes-cert-manager
    
    1. Create cert-manager
    import pulumi
    import pulumi_kubernetes as k8s
    import pulumi_kubernetes_cert_manager as cert_manager
    
    
    def create_certificate_manager(*, kube_config: do.outputs.KubernetesClusterKubeConfig):
        custom_provider = get_provider(kube_config=kube_config)
        options = pulumi.ResourceOptions(
            provider=custom_provider
        )
    
        namespace = k8s.core.v1.Namespace(
            "k8s-cert-manager-staging",
            metadata={
                "name": "k8s-cert-manager-staging"
            },
            opts=options
        )
    
        # Install a cert manager into our cluster.
        manager = cert_manager.CertManager(
            'cert-manager',
            install_crds=True,
            helm_options=cert_manager.ReleaseArgs(
                namespace="k8s-cert-manager-staging",
            ),
            opts=options,
        )
    
    1. Run pulumi up

    Expected: Pulumi to create the cert-manager, or at least error because I had the cert-manager creation wrong Actual: Get an error about not having the right plugin installed

    pulumi:providers:kubernetes-cert-manager (default_3_9_0):
        error: no resource plugin 'kubernetes-cert-manager-v3.9.0' found in the workspace or on your $PATH, install the plugin using `pulumi plugin install resource kubernetes-cert-manager v3.9.0`
    
  • Bad version declared #14 is still not fixed

    Bad version declared #14 is still not fixed

    What happened?

    When trying to deploy cert manager, I get the same warning that should be fixed in issue#14 warning: resource plugin kubernetes-cert-manager is expected to have version >=0.0.3, but has 0.0.1; the wrong version may be on your path, or this may be a bug in the plugin

    Steps to reproduce

    put the example with my own "settings"

    npm install @pulumi/kubernetes-cert-manager

    run a pulumi up

    Expected Behavior

    The warning shouldn't appear

    Actual Behavior

    bad version reported

    Output of pulumi about

    CLI
    Version      3.47.1
    Go Version   go1.19.2
    Go Compiler  gc
    
    Plugins
    NAME                     VERSION
    azure-native             1.40.0
    azuread                  5.6.0
    kubernetes               3.8.2
    kubernetes-cert-manager  0.0.3
    nodejs                   unknown
    random                   4.3.1
    
    Host
    OS       Microsoft Windows 11 Pro
    Version  10.0.22000 Build 22000
    Arch     x86_64
    

    Additional context

    No response

    Contributing

    Vote on this issue by adding a ๐Ÿ‘ reaction. To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

  • fix: include scripts dir into node package

    fix: include scripts dir into node package

    This is a copy of the fix that was applied to the pulumi-kubernetes-ingress-nginx repo here:

    • https://github.com/pulumi/pulumi-kubernetes-ingress-nginx/commit/7eb3db596a4eded4698d6ada05a921caec2280cc

    I am guessing there might be other repos which will have exactly the same issue. Possibly worth checking (I will have a look if I have time).

    @lblackstone FYI. Thanks!

  • Can't update pulumi-kubernetes dependency

    Can't update pulumi-kubernetes dependency

    Hello!

    • Vote on this issue by adding a ๐Ÿ‘ reaction
    • To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already)

    Issue details

    Due to https://github.com/joeduffy/pulumi-go-helmbase/issues/1 we are unable to build the master branch after updating the pulumi-kubernetes dependency.

    See https://github.com/pulumi/pulumi-kubernetes-cert-manager/runs/4986620519?check_suite_focus=true

  • Updating go-helmbase, fixes #1

    Updating go-helmbase, fixes #1

    โฏ pulumi up --logtostderr -v=9 2> out.txt
    Previewing update (dev)
    
    View Live: https://app.pulumi.com/richard-shade/simple-cert-manager-ts/dev/previews/976c893c-80cd-471b-a109-f85261363475
    
         Type                                          Name                        Plan
     +   pulumi:pulumi:Stack                           simple-cert-manager-ts-dev  create
     +   โ”œโ”€ kubernetes:core/v1:Namespace               sandbox-ns                  create
     +   โ”œโ”€ kubernetes:cert-manager.io/v1:Issuer       issuer                      create
     +   โ””โ”€ kubernetes-cert-manager:index:CertManager  cert-manager                create
     +      โ””โ”€ kubernetes:helm.sh/v3:Release           cert-manager-helm           create
    
    Resources:
        + 5 to create
    
    Do you want to perform this update? yes
    Updating (dev)
    
    View Live: https://app.pulumi.com/richard-shade/simple-cert-manager-ts/dev/updates/3
    
         Type                                          Name                        Status      Info
     +   pulumi:pulumi:Stack                           simple-cert-manager-ts-dev  created     1 message
     +   โ”œโ”€ kubernetes:core/v1:Namespace               sandbox-ns                  created
     +   โ”œโ”€ kubernetes:cert-manager.io/v1:Issuer       issuer                      created
     +   โ””โ”€ kubernetes-cert-manager:index:CertManager  cert-manager                created
     +      โ””โ”€ kubernetes:helm.sh/v3:Release           cert-manager-helm           created
    
    Diagnostics:
      pulumi:pulumi:Stack (simple-cert-manager-ts-dev):
        I0516 15:31:18.485544   30483 request.go:665] Waited for 1.07034609s due to client-side throttling, not priority and fairness, request: GET:https://212.2.247.6:6443/apis/discovery.k8s.io/v1beta1?timeout=32s
    
    Outputs:
        certManagerStatus: {
            appVersion: "v1.8.0"
            chart     : "cert-manager"
            name      : "cert-manager-helm-20d9a2d3"
            namespace : "sandbox-ns-0e1ef72a"
            revision  : 1
    
    
            status    : "deployed"
            version   : "v1.8.0"
        }
    
    Resources:
        + 5 created
    
    Duration: 56s
    
  • Updating helm-base dependency, to use local ReleaseType

    Updating helm-base dependency, to use local ReleaseType

     Type                                          Name                        Status      Info
    
    • pulumi:pulumi:Stack simple-cert-manager-ts-dev created 1 message
    • โ”œโ”€ kubernetes:core/v1:Namespace sandbox-ns created
    • โ”œโ”€ kubernetes:cert-manager.io/v1:Issuer issuer created
    • โ””โ”€ kubernetes-cert-manager:index:CertManager cert-manager created
    •  โ””โ”€ kubernetes:helm.sh/v3:Release           cert-manager-helm           created
      

    Diagnostics: pulumi:pulumi:Stack (simple-cert-manager-ts-dev): I0512 20:30:28.759249 13358 request.go:665] Waited for 1.087825967s due to client-side throttling, not priority and fairness, request: GET:https://212.2.244.219:6443/apis/autoscaling/v2beta2?timeout=32s

    Outputs: certManagerStatus: { appVersion: "v1.8.0" chart : "cert-manager" name : "cert-manager-helm-20d9a2d3" namespace : "sandbox" revision : 1 status : "deployed" version : "v1.8.0" }

    Resources: + 5 created

    Duration: 55s

A Pulumi Kubernetes CoreDNS component

Pulumi Kubernetes CoreDNS Component This repo contains the Pulumi CoreDNS component for Kubernetes. CoreDNS is a fast and flexible DNS server, providi

Dec 1, 2021
Pulumi-tencentcloud - Pulumi provider for tencentcloud

Terraform Bridge Provider Boilerplate This repository contains boilerplate code

Dec 30, 2021
Pulumi-awscontroltower - A Pulumi provider for AWS Control Tower

Terraform Bridge Provider Boilerplate This repository contains boilerplate code

Nov 14, 2022
Pulumi-hcp - A Pulumi provider for interacting with the Hashicorp Cloud Platform

Terraform Bridge Provider Boilerplate This repository contains boilerplate code

Dec 5, 2022
Go-gke-pulumi - A simple example that deploys a GKE cluster and an application to the cluster using pulumi

This example deploys a Google Cloud Platform (GCP) Google Kubernetes Engine (GKE) cluster and an application to it

Jan 25, 2022
A Pulumi NGINX Ingress Controller component

Pulumi NGINX Ingress Controller Component This repo contains the Pulumi NGINX Ingress Controller component for Kubernetes. This ingress controller use

Aug 10, 2022
KEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes
 KEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes

Kubernetes-based Event Driven Autoscaling KEDA allows for fine-grained autoscaling (including to/from zero) for event driven Kubernetes workloads. KED

Jan 7, 2023
A component for sync services between Nacos and Kubernetes.

็ฎ€ไป‹ ่ฏฅ้กน็›ฎ็”จไบŽๅŒๆญฅKubernetesๅ’ŒNacosไน‹้—ด็š„ๆœๅŠกไฟกๆฏใ€‚ ็›ฎๅ‰่ฏฅ้กน็›ฎไป…ๆ”ฏๆŒ Kubernetes Service -> Nacos Service ็š„ๅŒๆญฅ TODO ๅขžๅŠ ้ซ˜ๆ€ง่ƒฝzap็š„logger ๅขžๅŠ  Nacos Service -> Kubernetes Service ็š„ๅŒๆญฅ ็›‘ๅฌ

May 16, 2022
Running OpenFaas Pro on Linode K8s (feat. Aiven and Pulumi)

Running OpenFaas Pro on Linode K8s (feat. Aiven and Pulumi) Alex Ellis did a great job, when he wrote a tutorial about Event-driven OpenFaaS with Mana

Apr 26, 2022
Pulumi provider for the Elasticsearch Service and Elastic Cloud Enterprise

Terraform Bridge Provider Boilerplate This repository contains boilerplate code for building a new Pulumi provider which wraps an existing Terraform p

Nov 18, 2022
Terraform Provider Pulumi for golang

Terraform Provider Pulumi This is the transcend-io/pulumi provider available on the Terraform registry. It's goal is to allow terraform projects to co

Sep 1, 2022
Pulumi provider for Proxmox

Terraform Bridge Provider Boilerplate This repository contains boilerplate code for building a new Pulumi provider which wraps an existing Terraform p

Nov 28, 2021
Pulumi provider for Vultr (based on the Terraform one), not official

Vultr Resource Provider The Vultr Resource Provider lets you manage Vultr resources. Installing This package is currently not available for most langu

Apr 23, 2022
A boilerplate showing how to create a native Pulumi provider

xyz Pulumi Provider This repo is a boilerplate showing how to create a native Pu

Dec 29, 2021
Pulumi-aws-iam - Reusable IAM modules for AWS

xyz Pulumi Component Provider (Go) This repo is a boilerplate showing how to cre

Jan 11, 2022
Sample Hello World Pulumi Program for Azure

Overview This is a standard hello world style Pulumi program for Azure straight from the Pulumi docs. This is a sample repo used to test Pulumi's Auto

Jan 13, 2022
An Oracle Cloud (OCI) Pulumi resource package, providing multi-language access to OCI

Oracle Cloud Infrastructure Resource Provider The Oracle Cloud Infrastructure (OCI) Resource Provider lets you manage OCI resources. Installing This p

Dec 2, 2022
Kubernetes OS Server - Kubernetes Extension API server exposing OS configuration like sysctl via Kubernetes API

KOSS is a Extension API Server which exposes OS properties and functionality using Kubernetes API, so it can be accessed using e.g. kubectl. At the moment this is highly experimental and only managing sysctl is supported. To make things actually usable, you must run KOSS binary as root on the machine you will be managing.

May 19, 2021
StaticBackend is a simple backend server API handling user mgmt, database, storage and real-time component
StaticBackend is a simple backend server API handling user mgmt, database, storage and real-time component

StaticBackend is a simple backend that handles user management, database, file storage, forms, and real-time experiences via channel/topic-based communication for web and mobile applications.

Jan 7, 2023