containercraft / kargo Goto Github PK
View Code? Open in Web Editor NEWKubeVirt Private Cloud Hypervisor
License: GNU General Public License v3.0
KubeVirt Private Cloud Hypervisor
License: GNU General Public License v3.0
Need to add onramp documentation to support user choice of Pulumi state backend.
Inspired by issue #23
Discussed in discord #dev-kargo
So we can see what's happening in our homelab
I have installed Kasten using helm
helm install k10 kasten/k10 --namespace=kasten-io --create-namespace
There are many helm values available - https://docs.kasten.io/latest/
In order for this to be successful we need persistent storage available to our cluster.
Add a draw.io diagram depicting the platform infrastructure tech stack from metal all the way up.
I would like to request that the official client be podman
or nerdctl
to comply with a fully OCI compliant toolchain, I want to build containers nonroot with nonroot running processes and the cli is compatible with docker.
Enhance cilium configuration to replace MetalLB with Cilium L2 Advertisement & IPAM.
CCIO should publish/update/propagate community resources including Code of Conduct, Contributing.md, etc to facilitate community collaboration, psychological safety, diversity, and participation.
Kargo has no auth/access control integration. Add via Open Unison.
Pre-MVP development is currently proceeding with direct commits to main
branch. This is poor git hygene and will not scale with project and community growth.
github actions kind ci/cd runner is failing
I would like to be able to run CI jobs as ephemeral containers with dagger in this project. https://dagger.io/ I believe it fits in neatly within the philosophy and purpose of Kargo.
Installation for local dev container, after make kind
, user is prompted for pulumi access token.
Pulumi account and valid access token should probably be listed in the requirements so that it's setup before installation.
Add a LAN DNS service for the lab.
In my environment I have access to an NFS shared storage device so with my environment I am looking at deploying via helm the CSI-Driver-NFS option.
The helm command I am using is below.
helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --namespace kube-system --version v4.6.0 --set externalSnapshotter.enabled=true --set controller.runOnControlPlane=true --set controller.replicas=2
helm get values -n kube-system csi-driver-nfs
USER-SUPPLIED VALUES:
controller:
replicas: 2
runOnControlPlane: true
externalSnapshotter:
enabled: true
A helm install is not enough we also need a StorageClass, Snapshotclass
Just documenting here so we can add to Kargo if requested and needed.
Currently, platform development cycle velocity is capped at the speed of bare metal iteration which is significantly slower and more cumbersome than developing on virtual infrastructure.
Write the official virtualized platform developer workflow IaC and docs to deliver a low effort nested platform in platform development environment for Kargo contributors.
Need to rootcause & resolve breaking change from 1.14.5 to 1.15.1
https://github.com/ContainerCraft/Kargo/blob/main/src/kargo/cilium.py#L16
When installing cert manager the cluster-selfsigned-issuer
ClusterIssuer
fails to create because the cert-manager webhooks aren't up yet. Need to wait until the webhooks are ready before creating this object. Here's the logs:
kubernetes:cert-manager.io/v1:ClusterIssuer (cluster-selfsigned-issuer-root):
error: resource "urn:pulumi:localkargo::kargo::kubernetes:cert-manager.io/v1:ClusterIssuer::cluster-selfsigned-issuer-root" was not successfully created by the Kubernetes API server : Internal error occurred: failed calling webhook "webhook.cert-manager.io": failed to call webhook: Post "https://cert-manager-b86abdb0-webhook.cert-manager.svc:443/mutate?timeout=10s": tls: failed to verify certificate: x509: certificate signed by unknown authority
pulumi:pulumi:Stack (kargo-localkargo):
2024-03-14 14:30:59,136 - INFO - Fetching URL: https://raw.githubusercontent.com/cilium/charts/master/index.yaml
2024-03-14 14:30:59,775 - INFO - Fetching URL: https://raw.githubusercontent.com/cilium/charts/master/index.yaml
2024-03-14 14:31:00,813 - INFO - Fetching URL: https://charts.jetstack.io/index.yaml
error: update failed
As a primary feature of the Kargo platform, CAPI is a necessary MVP for building/destroying tenant k8s clusters as a core service of the platform.
Trying to eliminate a built in namespace resource from a remote k8s.core.v1.ConfigFile
manifest using transformations.
Logging indicates the condition is correctly detected but the namespace resource is still deployed.
# Define the transformation to remove Namespace creation and ensure correct namespace for other resources
# TODO: fix transformation to remove namespace creation (currently producing duplicate namespace resource)
def remove_namespace_transform(args):
if args['kind'] == "Namespace":
pulumi.log.info(f"Skipping creation of duplicate Namespace: {args['metadata']['name']}")
return None # Skip the creation of this resource if it's a duplicate
else:
if 'metadata' in args:
args['metadata']['namespace'] = ns_name
pulumi.log.info(f"Transforming resource of namespace/kind: {ns_name}/{args['kind']}")
return args
Kargo on ๎ mvp/usrbinkat/refactor [!] via ๏ฒ usrbinkat@ci via ๐ v3.10.12
๐ โฏ pulumi up --skip-preview --refresh=true
Updating (ci)
View in Browser (Ctrl+O): https://app.pulumi.com/usrbinkat/kargo/ci/updates/165
Type Name Status Info
pulumi:pulumi:Stack kargo-ci 4 messages
โโ pulumi:providers:kubernetes k8sProvider
โโ kubernetes:core/v1:Namespace cert-manager
โ โโ kubernetes:helm.sh/v3:Release cert-manager
โ โโ kubernetes:cert-manager.io/v1:ClusterIssuer cluster-selfsigned-issuer-root [diff: ~metadata]
โ โโ kubernetes:cert-manager.io/v1:Certificate cluster-selfsigned-issuer-ca
โ โโ kubernetes:cert-manager.io/v1:ClusterIssuer cluster-selfsigned-issuer [diff: ~metadata]
โโ kubernetes:core/v1:Namespace kubevirt
โ โโ kubernetes:yaml:ConfigFile kubevirt-operator
โ โโ kubernetes:rbac.authorization.k8s.io/v1:ClusterRole kubevirt/kubevirt-operator [diff: ~metadata]
โ โโ kubernetes:core/v1:ServiceAccount kubevirt/kubevirt-operator
โ โโ kubernetes:kubevirt.io/v1:KubeVirt kubevirt
โ โโ kubernetes:rbac.authorization.k8s.io/v1:ClusterRoleBinding kubevirt/kubevirt-operator [diff: ~metadata]
โ โโ kubernetes:apps/v1:Deployment kubevirt/virt-operator
โ โโ kubernetes:core/v1:Namespace kubevirt
โ โโ kubernetes:scheduling.k8s.io/v1:PriorityClass kubevirt/kubevirt-cluster-critical [diff: ~metadata]
โ โโ kubernetes:rbac.authorization.k8s.io/v1:ClusterRole kubevirt/kubevirt.io:operator [diff: ~metadata]
โ โโ kubernetes:rbac.authorization.k8s.io/v1:RoleBinding kubevirt/kubevirt-operator-rolebinding
โ โโ kubernetes:rbac.authorization.k8s.io/v1:Role kubevirt/kubevirt-operator
โ โโ kubernetes:apiextensions.k8s.io/v1:CustomResourceDefinition kubevirt/kubevirts.kubevirt.io [diff: ~metadata]
~ โโ kubernetes:core/v1:Endpoints kubernetes refresh (0.13s) [diff: +apiVersion,kind,metadata]
โโ custom:x:KubernetesApiEndpointIp kubernetes-endpoint-service-address
Diagnostics:
pulumi:pulumi:Stack (kargo-ci):
Using helm release version: cert-manager/1.14.5
Using KubeVirt version: kubevirt/1.2.0
Using emulation for KubeVirt in developer mode
Skipping creation of duplicate Namespace: kubevirt
Outputs:
kubernetes-endpoint-service-address: "172.18.0.2"
Resources:
21 unchanged
Duration: 10s
Makefile is a less integrated developer automation tool. Taskfile offers several more advanced environment variable handling features which is a primary motivation for adoption.
Convert Makefile and Github Actions Workflow tasks to use Taskfile instead.
MVP codebase is inconsistent and unpredictable having been written as an un-planned prototype codebase.
Refactor, and redesign codebase and repository layout to properly implement maintainable and predictable structure for future growth and wider contribution.
the CDI is a shim to support distribution of virtual machine disk images via OCI using rudimentary Dockerfile COPY approach.
Need to adopt until UOR shim deprecates CDI for artifact distribution.
Add support for Kata Containers / Firecracker micro VMs
Currently CI testing Kargo deployment on Kind Kubernetes instead of Talos-in-Docker due to failure of Talos to successfully bring the talos cluster API online and bootstrap the kubernetes cluster.
USER-SUPPLIED VALUES:
cgroup:
autoMount:
enabled: false
hostRoot: /sys/fs/cgroup
cluster:
name: talos-metal
ipam:
mode: kubernetes
k8sServiceHost: 192.168.169.210
k8sServicePort: 6443
kubeProxyReplacement: strict
operator:
replicas: 1
routingMode: tunnel
securityContext:
capabilities:
ciliumAgent:
- CHOWN
- KILL
- NET_ADMIN
- NET_RAW
- IPC_LOCK
- SYS_ADMIN
- SYS_RESOURCE
- DAC_OVERRIDE
- FOWNER
- SETGID
- SETUID
cleanCiliumState:
- NET_ADMIN
- SYS_ADMIN
- SYS_RESOURCE
serviceAccounts:
cilium:
name: cilium
operator:
name: cilium-operator
tunnelProtocol: vxlan
Inlets sub represents ~50% of homelab Public IP total cost of ownership via it's implementation/subscription model when factored into monthly PCP IP + instance / k8s entry level pricing tiers.
Evaluate ngrok and tailscale as replacements and or alternative supported options.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.