yarn add @rugal/pulumi-istioimport * as istio from "@rugal/pulumi-istio";
const vs = new istio.networking.v1beta1.VirtualService(name, {
metadata: {
name,
namespace: args.namespace,
},
spec: {
gateways: args.gateway,
hosts: args.hosts,
http: [
{
match: [
{
uri: { prefix: "/" },
},
],
route: [
{
destination: {
host: this.service.metadata.name,
port: {
number: 80,
},
},
},
],
},
],
},
}, {
parent: this,
});-
Download
istiopackage Will find CRD files in itcurl -L https://istio.io/downloadIstio | sh - -
Generate the base
crd2pulumi --nodejsPath src istio/manifests/charts/base/crds/crd-all.gen.yaml
-
Replace
| undefined>with>sed -i 's/ | undefined>/>/g' src/*
-
Replace
pulumi.Output<ObjectMeta>withpulumi.Output<k8s.types.output.meta.v1.ObjectMeta>;
Also addimport * as k8s from "@pulumi/kubernetes";on the top of the changed files.
The later part is tedious, one must manually add it. -
Add more fields for
AuthorizationPolicy
There isAuthorizationPolicyin CRD file, but it does not contain complete configurable fields as specified in document. You may update the CRD to have it, or just update the generated code to have it as well -
Then you can build the package and deploy it to npm
yarn build && yarn deploy