sample-product:0.1.0v1.31.0Worst status across all scenarios that exercise each mechanism. Covers: addons (cert-manager, istio, gatekeeper, …), subchart variants, customer profiles.
addon:cilium
PASS
cni-cilium-ebpf-kube-proxy-replacement · cni-cilium-ingress · cni-cilium-network-policy
One row per scenario. Cell value: passed / total asserts.
Groups with 3+ variants per integration are collapsed — click the header to expand.
addon/cilium
| Scenario | Cluster shape | Tags | Asserts | Status | Agent |
|---|---|---|---|---|---|
cni-cilium-ebpf-kube-proxy-replacement
Cilium eBPF kube-proxy replacement |
kind
|
nightly |
3/3 | PASS | — |
cni-cilium-ingress
Cilium ingress controller — dedicated loadbalancerMode |
kind
|
nightly |
3/3 | PASS | — |
cni-cilium-network-policy
CiliumNetworkPolicy enforcement — default-deny + allow-by-label |
kind
|
nightly |
3/3 | PASS | — |
cni-cilium-ebpf-kube-proxy-replacement
Cilium eBPF kube-proxy replacement
PASS
kind
addon:ciliumnightlycustomer=any profile=cni ---
id: cni-cilium-ebpf-kube-proxy-replacement
name: "Cilium eBPF kube-proxy replacement"
description: "Proves full eBPF kube-proxy replacement on kind: Cilium replaces kube-proxy, product ClusterIP reachable through eBPF datapath."
labels: {customer: any, profile: cni}
cluster:
provider: kind
config: ./fixtures/kind-cilium.yaml
cni:
provider: cilium
kube_proxy_replacement: true
product:
chart: ./chart
release: sample
namespace: sample
set:
image.repository: "public.ecr.aws/nginx/nginx"
image.tag: "1.27-alpine"
ingress.enabled: "false"
asserts:
- type: helm-status-deployed
release: sample
namespace: sample
- type: pods-ready
namespace: sample
timeout: 5m
- type: smoke-script
path: chart-test/assertions/cni/cilium-ebpf.sh
tags: [nightly]
mechanisms: ['addon:cilium']
category: cni
integration: cilium
tier: live
helm_values:
{replicaCount: 1, image: {repository: nginx, tag: "1.27-alpine"}, service: {type: ClusterIP, port: 80}, tls: {enabled: false, secretName: "", servicePort: 443,
# -- Filesystem path where TLS cert+key are mounted. Defaults to /etc/tls.
mountPath: "",
# -- Volume type for the TLS material. Supported: secret (default), persistentVolumeClaim, projected, csi.
volumeType: "secret",
# -- PVC claim name (required when volumeType is persistentVolumeClaim).
pvcClaimName: "",
# -- SecretProviderClass name (required when volumeType is csi).
secretProviderClass: "",
# -- Whether to run the wait-for-tls initContainer that polls for cert files. Disable for CSI volumes that are populated asynchronously.
waitForCerts: true},
# -- Scope component (API server). Creates a separate Deployment + Service on port 8080.
scope: {enabled: false, replicaCount: 1, image: {repository: nginx, tag: "1.27-alpine"}, service: {port: 8080}},
# -- Darkroom component (async processor). Creates a separate Deployment with optional PVC mount.
darkroom: {enabled: false, replicaCount: 1, image: {repository: nginx, tag: "1.27-alpine"}, pvc: {enabled: false, claimName: "", mountPath: /data}},
# -- Ingress resource for skywatcher Service.
ingress: {enabled: false, className: "nginx", host: "", path: /, pathType: Prefix},
# -- HTTPRoute resource for Gateway API integration.
gatewayRoute: {enabled: false, parentRef: {name: envoy, namespace: "", sectionName: ""}, hostname: ""},
# -- Service mesh integration.
mesh: {inject: false},
# -- Policy compliance labels applied to pod templates.
policy: {complianceLabels: {}}, image.repository: "public.ecr.aws/nginx/nginx", image.tag: "1.27-alpine", ingress.enabled: "false"}
raw_manifest_refs:
[]
---
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
networking:
disableDefaultCNI: true
kubeProxyMode: none
apiVersion: v1
items:
- apiVersion: v1
data:
ca.crt: |
-----BEGIN CERTIFICATE-----
MIIDBTCCAe2gAwIBAgIIfmoibxNIPXswDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
AxMKa3ViZXJuZXRlczAeFw0yNjA2MDgxNDA5NTBaFw0zNjA2MDUxNDE0NTBaMBUx
EzARBgNVBAMTCmt1YmVybmV0ZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC66ijh6JNjcVOP4D6yRz/qxU/ILiiQYxZRrON0CvybDbxmqYSBxhy6CBBz
WBFTGgDoKStpdXjH/tjumfcHZUfDqRM3ta+sDIuL6csDSM28KaDry3HCSQDiMt8x
3tvC3d1u0nWJwa+gMM9pXHQr2zETCLNVEdqzkZqKyyWfl2mCaIUUnwFDi3Ch1H24
gvBmWgI0oBYQCEGhv+14CNGCoK/Y2VayE3EPI+Kpl/OiqQetdkaJN/K+RiC/1UJp
cj+o26pp4zCdTP+4T9B4Gu+VtOpR1p6zIq5k9g45f+Do2gDsvTiv60cwk8ThEnku
Y/wbnYXwsEaz+/KqsZ6pdh7M+fK3AgMBAAGjWTBXMA4GA1UdDwEB/wQEAwICpDAP
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTjmdFb9LDx66Vu/vK41OwtVAmtgTAV
BgNVHREEDjAMggprdWJlcm5ldGVzMA0GCSqGSIb3DQEBCwUAA4IBAQAh0q1svjv2
3unmv/SaHh45iOwVxHnzxkQKfiyBVkPfVCwlUJqbxCew09JLtJeXXyDhSchQ3pxy
2VVgi1mvmbBoz9ZawWGS8t19k4YepMDtJ0AL9u9x8zsKUpfeP3evxqGJUK1FDxmi
BSSAwcZ2NwwPLl40xvTeabLDqw57QS+CKnonFbp8PJ3xj25RaYz8x5yh6RMdVbQ7
VeNaM3mtlO2tipiL3DPUSWFLSDod7l/C6MP2Ac0QSI1wqbKSItJjdH/8dPfvNzBb
s9PlioRKFQ41b5fWr8l1PhKvEThZGJCF3aUN+1RYBnbDF8PRmAJa4NR6EjIvgpiy
8GZ7/ZKcvlbA
-----END CERTIFICATE-----
kind: ConfigMap
metadata:
annotations:
kubernetes.io/description: Contains a CA bundle that can be used to verify the
kube-apiserver when using internal endpoints such as the internal service
IP or kubernetes.default.svc. No other usage is guaranteed across distributions
of Kubernetes clusters.
creationTimestamp: "2026-06-08T14:15:41Z"
name: kube-root-ca.crt
namespace: sample
resourceVersion: "709"
uid: c5204455-eb87-436f-b3ed-1aac42961a0a
kind: List
metadata:
resourceVersion: ""
apiVersion: v1
items:
- apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
meta.helm.sh/release-name: sample
meta.helm.sh/release-namespace: sample
creationTimestamp: "2026-06-08T14:15:42Z"
generation: 1
labels:
app: sample
app.kubernetes.io/component: skywatcher
app.kubernetes.io/instance: sample
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: sample-product
app.kubernetes.io/version: 1.0.0
helm.sh/chart: sample-product-0.1.0
name: sample
namespace: sample
resourceVersion: "746"
uid: 6bc43d6a-499c-41e4-b68a-89e164c260f9
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: sample
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: sample
app.kubernetes.io/component: skywatcher
app.kubernetes.io/instance: sample
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: sample-product
app.kubernetes.io/version: 1.0.0
helm.sh/chart: sample-product-0.1.0
spec:
containers:
- image: public.ecr.aws/nginx/nginx:1.27-alpine
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 80
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: app
ports:
- containerPort: 80
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 80
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2026-06-08T14:15:44Z"
lastUpdateTime: "2026-06-08T14:15:44Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2026-06-08T14:15:42Z"
lastUpdateTime: "2026-06-08T14:15:44Z"
message: ReplicaSet "sample-7955bb5b9" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
kind: List
metadata:
resourceVersion: ""
- app_version: 1.0.0
chart: sample-product-0.1.0
name: sample
namespace: sample
revision: "1"
status: deployed
updated: 2026-06-08 10:15:42.032189 -0400 EDT
apiVersion: v1
items: []
kind: List
metadata:
resourceVersion: ""
apiVersion: v1
items:
- apiVersion: v1
data:
release: SDRzSUFBQUFBQUFDLytSOGEzT2l6TGIvVjdINHYvd25HUzZTUkt2MkN6RVJNTWFNR3JuMG1WTzdvQ0dBZGdOYndOdFQ4OTFQZFFPS2lzYk1QUHVjcVhPbW5sMDdTbDlXci9WYjk1YS9tTkRDTHRObUVndkh5R1Z1bUNEOGlKajJYOHhIc0VqU2Z6cHVqS0tONnpCdGhtZjUrMXYyL3BaOWZPZllOaWUybS93ZEsvRGNZK3VXYmJaWmxybGhrUFhsS1k2YndFVVFwMEVVTW0xR0RaUFVRcWdCSTBKTlN1aEpVaXZORXFiTjdOYjllY05BMzFxa2hFcnNwcFpqcFJiNSsrQWt0L0VpY2pLWU1qZk0wbDBrK2ZMc0hYZDN1dWxyRUFiWVFvMGt0VUxuTmdnYmRQVkdscmhPSTQwYVR1UjlSSkdUZjN1YnVrbDZtNnlzQldadUdDc090TjNpUzU1K0UrKy80ZTVZdWwyNmlRbGhWaHlqQUZwMDE1ODNESXJnbkdtSEdVSTNUT3JpR0ZtcG16RHQvOWdkWlBmbHQzLzZMb3JkUlhLWHhvaVFUdy9NdUVLeWZQSGlucXRJdm8xSG5pUDdTSlZGMzlhbm5zMmJ4ZWRoWkJwOWR1QkYveG9JWEtzYnBnK0RpVFFIT29odFBQWFVjT2piaHBTQUNiZUN1RFYzOUNFN3dIU05RTzF5clk5Ui9PQnVXQS9JR2pZTkxYRzZuV3pFK3o0TVI5azc3cVZnMHNrMDNFc2NYZHZtODdUdkR0WTJFS001bUVpUHFqTGVPTG80VTUvTXJhcXNQRWZweDdZMjVBQUdzZHZ0QklPSjZuMFk3SXNySktrcWF4bm9TcTJQVWZSU25PMEpZczEzNUtsbjVqVDdqcjVtVlJsd3Ryd1dWYVhIbWZvNkJoZ2gwSlY4cUhROG05TFVmSGtKV2dlMFc3cUkxRzUvYStyY3lwYW5LVlQ2UzZCb002Y3JZa2RmSi9rODFSc1lPeDdGSUtpZWplNlptVHFIM2dXQVlOaVBnVHpkMDk0VmRWTmZjOEI0elVDb0piYjgyN3hJSUY5ZGYwejNWcCtpbGlxUEVjQTl6bFpHM21CZXlIZWV5MzJBZ0c4ckdvSWI4VHl0TXNLcVBGemE0ZGkzZEhHN1c3c3JUb0MrUnFZeFJPVjZsZk9kUHV0S0xBeTF6TngwK05kTmZqNUw1OTRkSFdETDhEdzFZQU5WMmZFVDJjb1FWVDZ2SUVhWkk1dWVHbWpid1VUYnFrRW5tMkl0QVhwdkN5YmlXMDVUUVZ2T0w4N0dyOTV3OXBydmpWRTZGVFFNTUdxcVhUVlZBMmt2YzEyY0greU5SeGR4WnZOY2F2Tk56NVo3QWREWFcxV2hmS1c0TW9YK0VncXZucW12RTFYcEk4aTNPSWlIQ0c2K2hMUEUxUHZJVmw1THZZcUF2azRINFRBYThMa00zd0xwd2QxSXNZMkhpYU9QejYyVDh5UG9aT1I4QXlOOVVMdmlreVgzTms1WDFJSFIzMXA2S3lQOGdsaGIyWEp2QmlhZDRHV2plaXA2ek9XQmV5dllGUmVPM2tjUWk4aVJDYjdSY3NCVHVkNnJTdnFneWlneitUVkhjSFBaUmpRcFgwMURXZzF3eXBsWTI5aFlZNGtlV1Byamt1RExrWHVaeVJmcm5zSFl1ZmxVZjNpMHRHZVI1d3BKQmUrOUZld1JiQTlqSXJlUHJyUjI5QllMSmhRRHhCWmtscUFGd09obndCZ1RmWWp0VFNzMWRkRUh2RFlmNkgweDUvY0I1dDZCMGVjdC9RQ25PK3pRejV2b1pjcVQ4VVBXRnRROVhtU3doSUdFVEgwWVVkMHlwS1dOdGN6cE5sOEdFMmxyQ1Vnd2pmSE1rclhOVzBCdDFiMzZ0TjdzZUtGVFh2eC90ZXNIcGo1Y09IeHZBN3JTek9hNWxXbU1ZeE92MGNzb1NsVmxPTE1GQ1YxYVkyRGtZN29Cd1dSdll3bjlwYzJ6OTZyY1c4R255UHV1OUpFdGF6N2tweW0xZSsvTnRETHVLNWplMHIyRjhSTE8xNzZKdFFSdUNodUs4NzJvek5CdXY4Sm4xT2lwZDkxK0p0OWFBVzFJMXBzNWNtdnpYdkkvNktRbGptcmttdHNTcWk4RmIrcGsrNmxmSFBzUXB4dWJiNlY3RFBSZmovUTZsOHQ1ckIvdytvSTlXdG04aU94d2xFSkJRaWFQc0tXLzd2SFc5UWsyQXNvcmdqZWRXOXBCWjZFcWU5Nm8zY1N6QllrbDlzRFVWNTdKdDFJb3IyTlRGNGxOV0toeWErWElhR25qWG5LSTJYbldEYUxsM2w0U2Y0TXlZa2NnM3lOcm9JRWhiV3grekpuQ0tJTjhLanA4anpWNUgwRWtMY0h6RVJiQ2EreEpaVTV3VVlkbkZkN2NxOHB3NFJxTzc4akRDQmdxb2RlemRIRm1LOXI4UEwxMXNtdnUvWVBpeEk3c1ZYM3B5dWJYc1NuTXN3TWVUa3VhOTNpR3VKY0JmdXIxNVNSUnUyT2UrdXY5MnVSNzhuZUJqekZQN2JTaExaMEQvMXppNGJJdnV3cXpZWTczcWR5YUgrdktOYnl5OTNPeXk3NmpncCtueUlQOGNBbmw2Wlh5SUdPMTkxcGJVdkhwRG85WXExdUp5VUpwYWN0bzVrN0VIQk15OG0wOFJMdHo3bm0yTVhVeEJKUE8zTnFzdkw1aWVtOHp0ckkyK1Y1cWZiem45b284UC9Jblg0MHBQdFdadlEzZ1JqWS9QclloMThRQnlURjJ6L25RSExPdERPZ2lpVEhtcHRGZlFOeGEydGZ0c3g5ZmIzZXpDazhFeXhoSDFWZ1l5cTNFMG9maUFGTjhKSlpPWWdHdFBHOUY1L3EralIwUzd5MEczYzdjQ1RyMzN5Zjd0Y24zNU8vQ3RzK2RnTVNiUGM0V3h1aHptZFQ1bXNkL2RlY2NncnhIOFBrdllnOW8zQ1QzTWh1M1dPSnpiVjRzL1RwcnlWTVB5cTI1cW93Uk9ZZHBqTkhYY2lxeWx5L1pXRnc2Y28vdVZiV1BwL2tHcFMwcmFjdlBPSXlCck0xTVE4MHNnOUQ3V01aWWRNeGIwQWxJakF3bTZpZm4vOGMvbUJzR1IwNGEwRVF6VDlQRlc0RWxhVHJiYW5QQzNmMERKL0pzaStPTFRQM25UVTFlbXFmazJBM1RXOGRhekJkUmhPODJGajdNVWZOOG81b2Y3ZjBmd2FSUFlwdUNUaC9LYUJmRDVqR090QjBJNXJxTDA5akdvM3YxZVl5Z3ZGNjZPa2ZzLzR1dGE2eXBqMzFIZnI3dkJrWCs5MzRoN3Bod0ZmeEhuaW9YdG1ZYnZhamRqa2ZzTXBIRmwzU3ZLeEU1ellsK3FVODUvcjZ3MWhYNnRmSnNZa3RrNHBzN09SYUNqcWZtT2UvblBsTGV4eTNkY0xnQytpdmxWWjRmb0pscHZKYnhTcTJNZHVPbXc2VkR6bGpzdi9lajZuMUJUMHBqM09jam5uWTdYb0dEVDJLQXorS3JZMTZiQmE4bEZsQys5bGp3WHV3cGM4aVJlM1BUR1B0dlh1VGxkRWlsM0FwNmY1RzJRMTk2TEovbVhqNkVqa043c3FmbGFueWt3QmhHSTEzTWJJSGdIQzN0c0k0WFhnVjNleG5uTk94eWZRVER3N01QSmhMTkp3LzlRb1hHYnNlemRNNEhKSC9yOW1sY3ZiZFJlNTRNTUVwTjNVR0RzSStnM05wYXhuZ0p3em1OZFhKZDNNVlMrMzBtWW16cnZSQk1STmJVSVJrYlZHbFR1eEsxVzVadW5wdS9jdkRya1EwNXBOM0JyY1RST2ZTdXR6ZzdIQi95UC85Zld0VE1EdlJra051VWw2T3hGT08yb0dWT1QvSWQyYnVzTndxWURUQkhkV1pLYkg0TmZVZXh3K216MDFoMEE0emgwakg2TTJDODdtVyt3MVNsUGxIUnY4TTF4MHRkNzZWMjl3Uzc2OWZnV2hwL1J6WVNiL05yenRhMUkzbXdPL3RkNFNQSmwxanppQ1lvMDdyQTFpRjA5OERTVnJRVVRJZUpxYVAwVk1iU3pKWjdzVDJ0MURjSW53d3RobGlicTkzK0NkMG12L1l0bmN2elJobHREOFlyVGdUMHBuY3FheTB6OVg0QzlKRm5HYTllNFlzdjh1ZGduNnJkVUM3R21PZjlOOWZtSHRwaTYwN2dPWkYvRkIvdXIvVGZDWXhpOXdyblhRVDIveE9PTzAvKy93eW5mYWtROGZzT1d5bUxGTmM1NjFJbS8yMk91a3dxL3pRblhaL3MvbTl4MEh2OFgrT2NDMTU4d1RIbjYzL3VsRmUyMEdmcm5NdGdJczFzbnN4REdURDZJekt1TE1hZDBCVU9FUXhCYlBKVGtpUnVuQm9IQ0xIbUE1bXNOZHhPbGY3U3hOUDdRMW9JNzN6V1VTUUZHS1BUWjlSUjlGanJLZklHcXhQSDc2bUt0SVJVMzg3b0U2OXRISXhtWUNMU014L2dwc0NxWlFCa1kyMExPWkxjOTFHTjg0a2NaYndhOHhwYkUzd1FHdkpBb3Z0WUYyeXNmcGVIZjJZUThZV0VkT2ZRdUljVy95Q0t3blVPN2NpVm1ZWVVhNVZlZ21sSUs3aHA4YStqZUVGVTlDMlFub0VoSmJhQVVxS3VYWHhrbXVSSzdIQ21oM0ZxdXNvWTZTczF0ck91NDZxMTRGVW11ZUx1NUd2cmVaVWFyeGR2b2F6TktGOElWT1IxYlBLOTdTbE1kOCtlYU14Y3dyTlNveTVWd3RicDJxOG5wdjlLZDN5bWR2aW95bUpzNHpGeHE5NndoR1dsaHJQZi96QWN5WGx6Nmg2dmw4T0ZtdmdSWFcrSHNiRi9VQ1A2aGIxSlhHMDlIOVd4THJwQmFTL1A4N0U5YXl0bjQzazZ2aTlYYzUyOGZyZkh3amlCRzdHYU94Rk03bnY2WFhVSmpQRnNJSXdwajZvbXFlaC9sem5EMURXa3ZBOWVNZG1Pdk40T3dpSVAwTVlpbEtkSDYvZTNRQjl1Z0RFS2F1THNHQVJTQmlhZDZQaThEdCtMbldld2hITmlhc2Q1MzE1dXZkUGVQWWF4MnUxalUxOXZ3ZVNRWmtzWFkrZjVLcmN1bURwaUJ6cFl3b0FqZXg2YVd6bDMzNmU2UmZrWjJ4aXhJNzZWT1NTL3dkcG1rb2NEeDJjUEhHTW9tcmpWZkpzOVo2OWJNemp1T3h6dVNmdEpQZ25iVDEwcTYwSGVxM0g5bmRSYzFlVFd5cXJPclNHVDk1ZHF0MitRczF1NkdCWjExdWw3NzlVemlkdFZYajFIZnFSMkd1aTlqU3IzMktKbmNvZ2hnODBHUVRPb2MvMEVpNWErOHZSTkp3VkYzZGpPNndBajB4aEh0QjlJOFNiT1lEanlqRWtIOXdQSlZyc2NQclBYa3VJTXA4aWRTTTdiUnByYmRXRUZDVHY0TlFKR3gzdXRleTZQbHphZVh1TExBUjhBYm5FMkhpV3FRblI4aUlBK0p0akxWTzgzYWgzS09JRzF0RlYwdU9qZkh1cjFxZDd2M1BpWjNMVmMyNnpnOUNpc3FOUmdlaXZZdWJiK2RIVm8rKzhPYVhkaFdQV00wendrZTZ6ZTEzbDc2cHpxMno2OXdTYzJyVkpUcUp0M0hYMFU0OXZ5YnNQMFRLaDRWcDYvNUJNT2JQZUJIdEhlMjlFYWgzcTVxdDQzQ3dhOHhwcWJGa3RqbVZPNlNyOHdwSHNjcFkzSGRTWEMwenBiVWQzLzdZeXRxRTB2U0lyeTNNcHNaWDZmMysrYTFzbW90UFVaNEZIbWRxbWRUd2xXQUViaDUvUjBjdC9JaTZHbGkwMGFtMkV6QTUyNmRLS1BUSDM4M2NacjhTMmc5N05RblJ6UHlIZ0Q5TjZjK2l0aE9JSzRGZXhTOWFvK0ttTVdQanVJeElYdVJscVZOQTdPcHl0ZjFRL3ZHRWUyakhqd1I5SDFmeWxHS3VZWXRTVVpyTXJhK21UdmJuOUZ5NEhHa0NVNWgxYjRwaEd0ZDdJbmVselJrZE1ZU0pIb1BTOG9rSGg1ckJmN1BOR2FiZzBPcWpYVjRrN2RCaGc5enFMMytUcEJ6Z2VKTjltOFhseVVHR040TUU0U0xGbkxkbWN2K0dVWnJ4ZHJ6MnB3SXMrVmc0ZFBsZnJ6a1IwdjlaSEVrRFFPUlhEU21aZStYRlBRaXNiNVNuOXBZWkl6YVhQMUpMMitaTitrRmNRdDJoOEdlazA4cCt6S0FMWGxrOEZFS2pGUit6eVBHUTV5NHlPOERaRXA5Skh6WEhmMkkvMDFTRjcyZW42Zm5KNEZNT1o1L0pMSGJXZlhPeWl2WERjK1ZlVVV1UVVmYVp3M2lyeEw2NWZscGRyeFN1WGU2M2s5bVVGKy9qVjlrSWRicXdiM1FPbkhEcWIzQ3d1WmpiY0RnOVlDMEFBUHQ5WkVYTHdwOUU3SXk2LzRzUktUSTJQTVFvd0N4eGpYbG9kSVBsbnNUMncxYitsakJPZkR4RFNHMi9QNldPQ2tKMjFzQWNSQTFqYkVWa0RoTmRjNXJLMGRIVzFJSE9Ud1BySUQ2WkNQTXRwU3ZoejJXNmc5aHJ3MmcxaGpwMHAvNldBMEIwYWY2T00ydjdkMVJsNWZzazhGN1UrbnZDajNmajlvYjlUVHQ3OGJlUktYTGFGQzgzamZKbGhUK2h5b294dWZ4SWlWdUxxSUhReWlCeHlKR2JHbHc5TzhENE1Zc0p3UGE4NXlSWXVtR3QrOG5Pa2ZuaS8xQ1cyT2I0dmMzYVBZWklWSG5ydFk2dlBUTkY1RVdYcE4wd3J3UFJZWWp1OXEvU1ZCN1hGVWZWd2QzSTJmaUJrd3hvSXQ5QmNrU3gzZ3BGazBiS3FWUTFYcmpVZFQzT0ljZWZyMXh0YXZON1N1cTNybEJkZEt4VTd5SVNhZXE0L0F2aXFSbnJQaUo3d0xLL09ENGpaNmJVV2xtcWs1dmlOcmdtbWdpUzFvTEppSUs5UG9FMjgrQWJxWlVSNFp3NVdwSDJsZS9pdUtMWlI3c3hydENVMWpqQnkrSnhhOHo2RGMyNUJvWTRvMVhQd2FKWjg3dVRwci9STGRSSE5wdzJkKzZ0Mk9ubjJWcjl2eVJ0cXBWVGlsL3pyTSswc29qQS9rWmNtdHJWUHd1S3dXRENaSFVmSXBEeUpiR0xMNUwyYU9idUVGTmJjRmxENW55d2ZyMHh2dWhINGlwN09WZ0l1VjltdWFPRFhObTZOYmdoZHV3WEZzVytEdW1zMTdubjNrMk9ZbFN4U0Uzc0pOa2l2c0VMRWhFR3RidUJHUmpYdUJUYUs1NGxhdHBlMSt6VUNzTlhJVVp3bHA4eHhtMXRiUHEvSUhEWFdVQWFHUG9QRDY1OXNjdWFSMW1IdGV0bDRuS3Z5WlZjYVYzWldObzY4ckVRZWI0L2ZweEM3RU5uWTJ3Qmh1Yzh5UGptN3pSZ2VOdWNPR0w0a1cvWlBLMldCU1pwUEh1ckdUUVFiUDNQQWhFVGlaU3lQNTl3dTBoblR2UEpxcHF6YklmZC9rVTFSZmxhWDJKc2Y3ZS9SeVJaVCt1VjRkNmRlRjZKK3o5VDZDczVPejdTcE9nNUN1OGJXYkxIc2RGQVRoa1gyOHBJS0p1MWdHMFAyN2I3RlVuZnp1cDBHLzBCcE15K3Z3ZjBhTDhPSjEreHBGemdGOTVmWHk0cFpDTmVDZ3FmTzkranhNSEdQSUFxUGZuM2JxMjRCLy8rMlRNaVErTHZHeUh1MllueHFQOGhaRUxYaDNxUkFKTkhpTm5mN0dHcVdSSnNIbjFZNkpvNytpZnJoNzVGbmhnV3NLOTFkb3hTZXRjR2YyL0dMeEtBTlBrVGN0amNnb1RvRXg5dW5WTzJwUWR1blAyWjlXVlc4ck9mWEdyc0tQb3Z5VXkyYnZWR2IvTG1jVUZZWnNYQTFFUGkwTG50NnFrRmpUNklja3RmMXM3Z0ZHUG1rRGxGaWdKY3hPOUFzdGdiTjRMbFBNWEs3YWw3SDg2ZndEMnN1MFQ3a1N6d0kxOHNLZDhNank5dzlOOGFLVlQxRnlDNlB3SS9Dd0ZWOWg1ZXU0ZFFuOW82SWcvNjczVnI5aTVXM3N4SGJvcFdVUnJyVGFKZUkrKzNGaUYrOUR1SDBEUktUSitsc2dQWmJOZXFKRndGQTlkeFZWN2lFTldhQTNDYkllOWlrTlJTT0NxSldIL2IzSGg4cmxocVhKNTVjTTFPNWpaUzNhUkZqYXdzZ2JDTm9XQnEydFJSQXlhUlhKZlN0eVpDNTVxNDZYcVRkcWx2OC93RDVyNjZzS0hlVzl0OE03bG45cjA3MDhheUJWejVnWGphOXRpRTJrTGVSWDEvRlBHVzd0WG1zR2pENXI2VVRqZXl5WTdBb2V2OVhncWpTbEwrK250UmJBbVA5ZCs1RzEvaVI4ZlBIeU0vZk9QYlNiUWx2azduaXV5ZCtMRDN0cjhwODN6TkpDbVpzdzdiK1k4cWRLNUc4M3RHemtPa3o3dzBLSmU4TUUyUEpjOG1EaHhsRVNwTkZpdzdTWjBBdkNOWFBEcEpaSFgrdkJQOXhhS0E1Q2wvbDV3OFJMU0NaQVpBVjRtSnNzNXVaa1lSeGxZZnJkU24ybXpYeWpOdXZuRGRrRUJkRHFrbWRNbS90NXczaFc2cTZzelRqS1VyZU9QajlLMG5DM1NXd3QzREFkdXgrVjE1KzQ0VExhTURmMFl4SmJzQmlhdURBTm9yQWs4T2ZQWHpwcmtlb1c1MDJTWXJseVRoMjFKYVg1eVlzLzMvTTNvbnhmdUIvQm1peU0zY1FucXdiaHpJVnBzUUJoYm9RQ3VLSDdSVGhHZ1JWQ2QyRFpMaUkwL0R4bDRRMURVNEMvU2JTbmkrY1JGVmtsamhZcDAzNWtIMWxDUnMyRDNYdGZ1aWhMVW5laGZpZExwcFR5aS9CZ0tLYTZoM2hLWExodzArUFAzeGZSTW5EY1JaY0lvM3hBS2ZsT3FXZzJoUnRtR2FFTXV3WEw4M25NRGJPeWdyUVhMYnJ1SWsyWWRycklYSG9PNkx2WUtsOUxrMy9hNnhyTHN0d3QvZStkWmR2MFA4RGNNQjhCSXBxVnp6blZUSjU5Wngvb3p3cGJkMDMyL3A1amhjZTluMmR5ajA2Rlh5dWhPTE5SQU85Y3VMaXpWc2szS3JCdjE2TDBrTS9raE5nS2d3K1g0dkwyOXZaSCtQOGFreWhiUUxmZE9IeHgwTGY2T1BwSHVIL3BUN3V4NUg2RTh5QjAybzFKUHVaSFdMNlJxUDBqYkRTSUVwWUwvd2lUMklYMGF3S01kbU9IQy9KVjRpSVhwdEdDUG04MHJEamV6MnMwQ0thUzR0RXQvZFJ1UExMNTUwWWp0UmFlbTM0LytqYmYyMC9UK0VkNDdVbVA3czhlSHRhSzQrVGIvc1JQdTdFWEQ5MW9JS3F2QmZXK2kvQmQ0bitqYjFNNnB1U1d2cUJweDRHN2VXYTdpOUJOM2VRdWlMNVYxeTFubkJzYmhFbEtiRVdWanJweHkvSndQL0szTmYxZ3pvM0VWbWg1cm5OcmI5b054VVc0Vms1MUU0bmhpa0kzSktlZGIxWldDbjEzVVFGRFlXU1Nkb09yQVFJbTR3ZFZEcDVzV29xdm5GR1ZCZm1IRG1kL1FRWmZsY05YWlBFMWVYeEZKbDhTUTJYQ01YMVdHRVlwZlYxWGxYbjVYenZwa1g4d0NsTXJDTjFGZGR4dG9RZFdITysvYkRTb2pTUEhPMi9XMmhWelZqMy9vUm5ZNzdQYi90Z0NrSDhMMTNLQzBFMlM3NHZJZG8vbUV1TWd1Mm03OFZlRGVPVjI0OXZOenJnMGZsYkhvbURwL3VvcTFWZXdjWWVCeWU2dGMxWWNvODAvc1p2NmtVTytUeXptNTM4RkFBRC8vMzR6d0ZHY1RnQUE=
kind: Secret
metadata:
creationTimestamp: "2026-06-08T14:15:42Z"
labels:
modifiedAt: "1780928144"
name: sample
owner: helm
status: deployed
version: "1"
name: sh.helm.release.v1.sample.v1
namespace: sample
resourceVersion: "747"
uid: 63a1f089-09d7-40d5-b9fd-ad2d019d1b0a
type: helm.sh/release.v1
kind: List
metadata:
resourceVersion: ""
apiVersion: v1
items:
- apiVersion: v1
kind: Service
metadata:
annotations:
meta.helm.sh/release-name: sample
meta.helm.sh/release-namespace: sample
creationTimestamp: "2026-06-08T14:15:42Z"
labels:
app.kubernetes.io/managed-by: Helm
name: sample
namespace: sample
resourceVersion: "713"
uid: 548ba22e-0949-4fff-9958-0a8a7d6c9773
spec:
clusterIP: 10.96.148.70
clusterIPs:
- 10.96.148.70
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: sample
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
kind: List
metadata:
resourceVersion: ""
helm-status-deployed
helm status: deployed PASS: release sample in ns/sample is deployed
pods-ready
kubectl --context kind-chart-test-swarm-run-1 -n sample wait --for=condition=Ready pods --timeout=5m --all pod/sample-7955bb5b9-tpd75 condition met PASS: pods Ready in ns/sample NAME READY STATUS RESTARTS AGE sample-7955bb5b9-tpd75 1/1 Running 0 3s
smoke-script
exec: /Users/rohit/Documents/chart-test-swarm/examples/sample-product-chart/chart-test/assertions/cni/cilium-ebpf.sh (RELEASE=sample NAMESPACE=sample) ==> Waiting for Cilium daemonset rollout (5m max) daemon set "cilium" successfully rolled out PASS: Cilium daemonset rolled out ==> Getting Cilium agent pod name Cilium pod: cilium-7m4f6 ==> Reading cilium status via kubectl exec ==> Asserting KubeProxyReplacement: True KubeProxyReplacement line: KubeProxyReplacement: True [eth0 172.20.0.3 fc00:f853:ccd:e793::3 fe80::8cc6:feff:fead:fb78 (Direct Routing)] PASS: KubeProxyReplacement is True ==> Asserting no kube-proxy daemonset in kube-system PASS: kube-proxy daemonset NOT found (fully replaced by Cilium eBPF) ==> Getting product Service ClusterIP Product Service ClusterIP: 10.96.148.70:80 ==> Probing product ClusterIP from in-cluster curl pod (proves eBPF datapath) ClusterIP probe HTTP code: 200 PASS: Product ClusterIP reachable through Cilium eBPF datapath PASS: Cilium eBPF kube-proxy replacement verified
Logs: /Users/rohit/Documents/chart-test-swarm/examples/sample-product-chart/chart-test/reports/run-cni-cilium-live/scenario-cni-cilium-ebpf-kube-proxy-replacement-20260608-101448/artifacts/logs
cni-cilium-ingress
Cilium ingress controller — dedicated loadbalancerMode
PASS
kind
addon:ciliumnightlycustomer=any profile=cni ---
id: cni-cilium-ingress
name: "Cilium ingress controller — dedicated loadbalancerMode"
description: "Proves the Cilium ingress controller in dedicated loadbalancerMode on kind: per-Ingress Service routes HTTP with matching Host header to the product Service."
labels: {customer: any, profile: cni}
cluster:
provider: kind
config: ./fixtures/kind-cilium.yaml
cni:
provider: cilium
kube_proxy_replacement: true
values: ./fixtures/cilium-ingress-values.yaml
product:
chart: ./chart
release: sample
namespace: sample
set:
image.repository: "public.ecr.aws/nginx/nginx"
image.tag: "1.27-alpine"
ingress.enabled: "true"
ingress.className: "cilium"
ingress.host: "sample.test.local"
asserts:
- type: helm-status-deployed
release: sample
namespace: sample
- type: pods-ready
namespace: sample
timeout: 5m
- type: smoke-script
path: chart-test/assertions/cni/cilium-ingress.sh
tags: [nightly]
mechanisms: ['addon:cilium']
category: cni
integration: cilium
tier: live
helm_values:
{replicaCount: 1, image: {repository: nginx, tag: "1.27-alpine"}, service: {type: ClusterIP, port: 80}, tls: {enabled: false, secretName: "", servicePort: 443,
# -- Filesystem path where TLS cert+key are mounted. Defaults to /etc/tls.
mountPath: "",
# -- Volume type for the TLS material. Supported: secret (default), persistentVolumeClaim, projected, csi.
volumeType: "secret",
# -- PVC claim name (required when volumeType is persistentVolumeClaim).
pvcClaimName: "",
# -- SecretProviderClass name (required when volumeType is csi).
secretProviderClass: "",
# -- Whether to run the wait-for-tls initContainer that polls for cert files. Disable for CSI volumes that are populated asynchronously.
waitForCerts: true},
# -- Scope component (API server). Creates a separate Deployment + Service on port 8080.
scope: {enabled: false, replicaCount: 1, image: {repository: nginx, tag: "1.27-alpine"}, service: {port: 8080}},
# -- Darkroom component (async processor). Creates a separate Deployment with optional PVC mount.
darkroom: {enabled: false, replicaCount: 1, image: {repository: nginx, tag: "1.27-alpine"}, pvc: {enabled: false, claimName: "", mountPath: /data}},
# -- Ingress resource for skywatcher Service.
ingress: {enabled: false, className: "nginx", host: "", path: /, pathType: Prefix},
# -- HTTPRoute resource for Gateway API integration.
gatewayRoute: {enabled: false, parentRef: {name: envoy, namespace: "", sectionName: ""}, hostname: ""},
# -- Service mesh integration.
mesh: {inject: false},
# -- Policy compliance labels applied to pod templates.
policy: {complianceLabels: {}}, image.repository: "public.ecr.aws/nginx/nginx", image.tag: "1.27-alpine", ingress.enabled: "true", ingress.className: "cilium", ingress.host: "sample.test.local"}
raw_manifest_refs:
[]
---
# Cilium helm values enabling the ingress controller in dedicated loadbalancerMode.
# Each Ingress gets its own per-Ingress Service (no shared proxy).
ingressController:
enabled: true
loadbalancerMode: dedicated
default: true
---
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
networking:
disableDefaultCNI: true
kubeProxyMode: none
apiVersion: v1
items:
- apiVersion: v1
data:
ca.crt: |
-----BEGIN CERTIFICATE-----
MIIDBTCCAe2gAwIBAgIIdqMvYCiYGIYwDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
AxMKa3ViZXJuZXRlczAeFw0yNjA2MDgxNDEwNTJaFw0zNjA2MDUxNDE1NTJaMBUx
EzARBgNVBAMTCmt1YmVybmV0ZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQDLL44X11CQNF2HcHqfnS6lND07paRakIukqc9PRqXHb6yG5SpISo51qtZU
nfLvXihK41CgQczgPR2Bwp9RpOg9XwmpkI3U7nqQQrpHXNwgCy0cKZc22xhux06k
IZ4tMapsZAYFU1gVLuYGFZxkH9ON3Vrdi1ofgJfIl5ch1dX3IGrDGwY95ZS58FqC
nDIurOgglOOMznL1t08y1xYx0imwrLy5tFeKLQpQOy0VOQ0eM9dBsmbOudPJV7Rq
A6gF/oJlIrTdJS2U51Qh0PPRdqrEbMHMBAh/Zbe006OWoKHmUyALxjybZGGbtuKt
ZYi9Qz6GY+dSbWLkPYjYlJ2nXCpPAgMBAAGjWTBXMA4GA1UdDwEB/wQEAwICpDAP
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQr02dWcPWYhYfULL+lDUiCAkPCBjAV
BgNVHREEDjAMggprdWJlcm5ldGVzMA0GCSqGSIb3DQEBCwUAA4IBAQBcUcnnFn51
QLMNF7KZVF13GaSwszfJ4NSeCzJtLSJi9TJ0HEyj67NxZPFG32gbM2fAywvmLq28
ntiV3PPNVTRtWrAklXPVggz7M8mwr7vI8N23Spfud0oH2u8AFln3EmkBqZp/mgns
KbtdHCn5JMjFFke2kx8oWUkbo7ZcBbPo/8p7q6CnpKuCmQ3cfnKPAxkc1UOm+TsR
KII+/epkYIaD+Rw4Av+wsQhb8DNd8HI16jAnLG7gDT3uL4NwIu/wKxolbkskhRCb
XEKHKSGPQ8xjzwR3YAAkEH9T9l5gt6ZtHnfpPTI5gNGqk8uXAZOkRrpzvdrQ+qas
SAAdv8flqVDv
-----END CERTIFICATE-----
kind: ConfigMap
metadata:
annotations:
kubernetes.io/description: Contains a CA bundle that can be used to verify the
kube-apiserver when using internal endpoints such as the internal service
IP or kubernetes.default.svc. No other usage is guaranteed across distributions
of Kubernetes clusters.
creationTimestamp: "2026-06-08T14:16:43Z"
name: kube-root-ca.crt
namespace: sample
resourceVersion: "717"
uid: 583403ed-c3a2-4a7d-9a68-8a5cbe1f09c6
kind: List
metadata:
resourceVersion: ""
apiVersion: v1
items:
- apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
meta.helm.sh/release-name: sample
meta.helm.sh/release-namespace: sample
creationTimestamp: "2026-06-08T14:16:43Z"
generation: 1
labels:
app: sample
app.kubernetes.io/component: skywatcher
app.kubernetes.io/instance: sample
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: sample-product
app.kubernetes.io/version: 1.0.0
helm.sh/chart: sample-product-0.1.0
name: sample
namespace: sample
resourceVersion: "765"
uid: 7091b47f-7a18-4142-ab9d-3c9e87a30070
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: sample
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: sample
app.kubernetes.io/component: skywatcher
app.kubernetes.io/instance: sample
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: sample-product
app.kubernetes.io/version: 1.0.0
helm.sh/chart: sample-product-0.1.0
spec:
containers:
- image: public.ecr.aws/nginx/nginx:1.27-alpine
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 80
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: app
ports:
- containerPort: 80
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 80
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2026-06-08T14:16:46Z"
lastUpdateTime: "2026-06-08T14:16:46Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2026-06-08T14:16:43Z"
lastUpdateTime: "2026-06-08T14:16:46Z"
message: ReplicaSet "sample-7955bb5b9" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
kind: List
metadata:
resourceVersion: ""
- app_version: 1.0.0
chart: sample-product-0.1.0
name: sample
namespace: sample
revision: "1"
status: deployed
updated: 2026-06-08 10:16:43.777457 -0400 EDT
apiVersion: v1
items:
- apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
meta.helm.sh/release-name: sample
meta.helm.sh/release-namespace: sample
creationTimestamp: "2026-06-08T14:16:43Z"
generation: 1
labels:
app: sample
app.kubernetes.io/managed-by: Helm
name: sample
namespace: sample
resourceVersion: "730"
uid: de3b47b0-d966-4e87-ad1a-dc6587cd0582
spec:
ingressClassName: cilium
rules:
- host: sample.test.local
http:
paths:
- backend:
service:
name: sample
port:
number: 80
path: /
pathType: Prefix
status:
loadBalancer: {}
kind: List
metadata:
resourceVersion: ""
apiVersion: v1
items:
- apiVersion: v1
data:
release: SDRzSUFBQUFBQUFDLytSOGJYT2l5cmIvVjdINHYvd25HUjRraVZhZEYySWlZSXdaTmZKMDU5WXBhQWlnM2NBUlVISFhmUGRiM1lDQ29qRXorOXc3ZFc5cWRtMkZwbnYxV3IvMTNQSVhGWmpJb2JwVWJLSUlPdFFONVFjZklkWDlpL3J3VjNIeVQ5dUpZSmc1TnRXbFdKcTl2Nlh2YituSGQ0YnVNdmZkTm5mMzhQRFE1aDl1NlhhWHBxa2JDcHBmZnNSMllyRHlvOFFQQTZwTHlVR2NtQkMyUUlpcFNUQTljV0ltYVV4MXFmMjhQMjhvNEptckJGT0puTVMwemNURW4yczd1WTFXb1oyQ2hMcWgxczRxenFlbjc1aTcwMFZmL2NCSEptekZpUm5ZdDM3UUlyTzMwdGl4VzBuWXNrUDNJd3p0L09wdDRzVEpiYnd4VjRpNm9jeklWL2FUcjFseUpUcGNZZTVvc2x5U1JaZ3dNNHFnRDB5eTZzOGJDb1pnU1hXREZNSWJLbkZRQk0zRWlhbnVmK3czc3IvNDdaK2VBeU5uRmQ4bEVjVGtrdzFURGhldlg5eG80RWlDWjZHSmE0c2VsRVhlczlTNWE3RjY4WDBjNnRxUUhybmh2MFljMCtrSHljTm9KaXdOMVlnc05IZmxZT3habWhBYk0yWURVR2RwcTJONmhNZ2N2dHhuT2grVDZNSEphTmNRRmFSclNtejNlK21FOVR3UVROSjNORWlNV1M5VjBDQzJWV1dYUDZkOHQ1R1NBUVNYeGt4NGxLVnBacXY4UW43U2Q3SzBjVzFwR0ZuS21ER1FFVG45bmorYXllNkhScjg0WEp6SW9wSWFmYUh6TVFsZmlyMDlBYVI0dGpoMzlaeG16MWEzdEN3YWpDVnVlVmthTUxxNmpRd0VvZEVYUENEMVhJdlExSDU1OFRzMTJrMlZoM0ovdU5OVlptT0o4d1JJdzdVaEtRdTd6eU5iM2NiNWM3STcwdlk4aWd5L3VqZXlacXFyREh6bkRBaUNZV1NJOHdQdGZWN1YxUzFqYUsrcEVTaXhKZjQyTDJMQVZ1ZWZrclhscDdBamkxTm9vQUZqU1JOM3RDemt1OHpsUG9LR1owa0tCQmwvbmxZUklsa2NyNjFnNnBrcXY5dlAzZWRuaHJxRnVqYUc1WHlWL1ozZTZ3czBDSlJVejNyc2E1YnZ6MVNaZDFzMWtLbTVydXpUdml6dCtRa3RhUXdyM3pjQXdkUVdkVmYybGQxb3B1eGt2NWZPa1JJYjZtQm56UGkzbkthQ3RweGZqSVZlM2ZIaU5WOGJ3V1RPS2NoQXNDMzM1VVQyaFlQTVZYNVpXeHROTHVMTVlwbkVZdHV1SlE1OFE5M3VaSW53bGVCSzU0WnJ3TDI2dXJxTlpXa0lBZHRoQUJwRGtIMEpaN0d1RHFFbHZaWjZGUnJxTmhrRjQzREU1ako4ODRVSEp4TWlDNDFqVzUyZW15Zm5oOTlMOGY1R1d2SWc5L2tuVXh4a2RwOVhEVzI0TTlWT2l2a0ZrTEt4eE1IQ21QWDhsMHgyWmZpWXl3TU5OcURQcjJ4MUNBSGlvUzFpZk1QMWlDVnl2WmVsNUVFV1lhcXpXd2JqNXJLTmFCTys2cHF3R2FHRTBaR1NXVWloc1I2WTZ1TWE0OHNXQjZuT0Z2T2V3ZGk1NTRuK3NIQnRMVUxYNGVJSzNnY2JNTURZSGtkWWJoOTlZV3VySGRxWUVReGdXNUNhbk9JYjJqQTF0Q25XaDhqS09vbXU4cDdCS3N1Uk91UnpmdGN3OTI1b1E5WlVhempkWTRkOHo4S1hPWXZIajJtTGt3OTRFWTAxOEFXb3ErT1E2SlltckMya3BIYS8vVEthQ1R1VGc1eXVUUmVtcUdSdlByRlY5L0xUTnR2elFpVzgrUDl5My9OMWRieXkyVUZtOUlXRnhUSWJYWnRHT3RyQ2wwbVl5Tko0WVhFQ3ZEVEhTTXZIOUgyTXlVRm1jc08xeGRMM3NqallnS2ZRL1M0Tm9TVXFIbURuQ2JGNzcrMmtNdTRybU42UnRibnBHaXkzbm82VUdHU0ZEVVg1V2tSbWNMOWU0VE1hOU5TOWJqMmQ3V3dNWll6blc5aGlKM3N2K2UvM2toSkhEWExOYlFuUmw0STNUYkw5MUM5T1BZQ1N6R0k3eVFFRHc5Y2p2YzdsY2g3ck5WNWZzRWNiaStXaEZVd1N3QWxRWnlFeTFkY0Qzdm9leG9aUGVJWHhwakpyeSsrdFpPbkFHN2tmdXhZbjBOZ2U2T3JHMWRsT0FzUnRwS3M4dGdrcldleHNiQkd1TFRTSTY1aGRwbjAvWEIvc0pmWTNNTVYyQkxBRFBBY2NhVUptc1ZORzV5WXBZQlBlWmdlMHpub1FRR0Z0UEI5aEliakdubFNlOFMvcThLTENtM3RaR3E4Y3pmWnNjUndhbW96cGRVMlZYMWlTc2p4UGI1UHMyZ2YvSU5tUkxicFZYN3F4Mkcya2M4dTB4c041U2ZNQnp3QU5Vb09kdTBNeGp1WCtsQ1grK2pBM3ZvNC9GL2lZc3NST2E4cmFydm5uRWcrWGZkbFZtQTF5dk0vRnp2SllWNjdobFhWNEpyM3NPeXI0ZVFwZHdJN1hRSnhmS1E4OFZubHZ0Q1VWbjI2emtEYjdsWmdzRU5hV0NCZk9qTTh4SVVMUFFtTzQzK2VCWjVtdThvRXg2eTNOYk9NT0pkMTlXOUNWdWZGMW9mUHhudHNyZlAvSW4zdzFwdmhVWnc0MmdKbFk3UFRZaGx3VEI4VEgyRDNuUTNQTWRsSkQ1WEdNc2RTMTRRcWd6dHE2YnAzRCtHYTdtMVo0d3BuYU5Lekd3a0RzeEtZNjVrZUk0Q00yVlJ3TEtPVitLem8zOUN4azQzaHZOZXIzbHJiZnUvOCtPOHlOcitQUGhXMWYyajZPTndlTXhVM2g1ekpwOGpXUC8rb3ZHUWhZRitQelg5Z2VrTGhKSEtRVzZ0RFk1MW9zWC9wMTJoVG5MaEE3UzFtYVFyd1BYWnZDcitWVWVDMVBzQkMvdHNVQldhdHFIMC96RFVKYld0S1c3M0VjR2FLeTBEVTVOVFZNNzJNWlk1RXhiMzdQeHpHeU1aTS8yZjgvL2tIZFVDaTBFNThrbW5tYXp0OXlORTdUNlU2WDRlN3VIeGllcFRzTVcyVHFQMjhhOHRJOEpVZE9rTnphNW1xNUNrTjBsNW1vbnFQbStVWTFQenI0UDR4SkQ4YzJCWjBlRU9FK2hzMWpIR0UzNHZSdEh5V1JoU2IzOHZNVUFuRzdkbFFHMi84WFMxVm9YWjE2dHZoODMvZUwvTy85UXR3eFl5cjREMTFaTEd6TkxueVIrejBYMjJVc2l5L3BYbC9BY2xwaS9aS2Zjdng5WWE0cjlHdmpXdGlXaU5nMzkzSXMrRDFYem5QZXozMmtlSWhiK3NGNFk2aXZoRmQ1ZmdBWHV2WmF4aXVOTXRxUG00L1hOdDVqc2Y3Qmo4cjNCVDBKaVhHZmozamE3N2tGRGo2SkFUNkxyNDU1clJlOEZtaUQ4SFZBRysvRm1pSURiWEd3MUxXcDkrYUdiazZIVU1xdG9QY1hhYXY3MG1QNXRBL3l3WFRVN2NtQmxxdnhrUmphT0p5b2ZHcHhHT2R3YlFWTnZIQXJ1RHZJT0tkaG4rdERFTlQzUHBvSkpKK3MrNFVLamYyZWE2cU1aK0Q4clQ4a2NmWEJSaDE0TWtJdzBWVWJqb0loQkdKbloyclROUWlXSk5iSmRYRWZTeDNXbWZHUnBRNENZOGJUdWdyd1dMOUttOXdYaU4weVZmM2M4eHNidlI3WmtEcnROdXJFdHNyQWQ3WERXTUcwenYvOHY2U29tZFgwWkpUYmxKZWpzUVRqRnFlazlrRHdiTkc5ckRlU3NSZ2hodWpNSE52OEJ2cU9Zb2ZUZTZleGFHWm80N1d0RFJlRzlucVErUjVUbGZwRVJmL3FjMDdYcWpwSXJQNEpkcmV2L3JVMC9vNXNCTlppdDR5bEtrZnlvUGYydThKSG5DL1IraEZOUUNSMWdaMk42UjRZYTB0U0VtTStqblVWSnFjeUZoYVdPSWlzZWFXK2dmbWtLUkZBeWxMdUQwL28xdG10WjZwTW5qZUtjRmNiTDltaG9iYmRVMWtycWE0T1kwT2R1S2IyNmhhKytDSi9hdXRVN1laME1jWTg3NytaTHZQUTVUdDNITXZ3N0NQL2NIK2wvNDVCR0RsWE9POGlzUCtmY054NTh2OW5PTzFMaFlqZmQ5aFNXYVM0emxtWE12bHZjOVJsVXZtbk9lbm1aUGQvaTRNKzRQOGE1MXp3NGd1T09aLy9jNmU4c2JnaDNlUmNSak5oWWJINE9aZ2EybkNDeDVYRnVCTzZnakVFZ1JIcDdCd25pWm5kNEFBQlVqeER4SE9OZDNOcHVOYlIvTDVPQythZFI5dVNJQm5hNVBRZWNSUUQybndLM2RIbXhQRzdzaVNzQWRHM00vckVLcG1ONE1LWThXVFBOZHdVV0RVMUExcEkyUUVHSi9kRDJPQjhRbHVhYnFhc1FqY0VINWlHUEpEb1B6WUZHNXZmNWVHZkdVUjhJU0hkT3pUbW9jTSs4RHgzblVNN2NtVzZKa1JLcFplZ2E4SUdaQjMyZFJLdHNJcSsrY0t6b1FteHhjRUVxMnNmSFprbXNSSTduT2xobkpxdU1rYjZTbzN0ck91NGFpNXdsVW11dUR2eDJucGVwY2JyUmpzZ0tndkNGd3dWY1J2cDdHQjNDdFA5dlNjU001ZndyTlNvUzVXd1ZETDM2NG5wdjlJZG42a2RQc29pSDFsb2l0MnFPeTVoV2FuaEhOYXZoeU01YjA3ZDQvVnl1RkFUUDZMcnJSNGJlN1VhMFMrc2plTnE4L21vam5YUkRRb0hlWjZQN1dsTE9odlBrL0ZEc1pycjVQVzdBeGFtTWNqNGF1NkVNWG5vNmZmbHRhRk5GeU51U25oVU5VbEYvN3ZNR2VhT0p1Ujk4SXJKdHNYdGJoUVVlWUF5NVlFNFA1cC91RFBVY1dab0U3OGh6bzRNWDBpTldTODgzcS9ORGlMNzJWaURKVGExMDd4dkwzYmVTZThlZ1VqdUQ1R3VibmZHckU2enFmS1IvWHlWVytkMEZkSWoxVmdEbjhGcjFzMnRtTHZ2VTkwaS9Jd3NCT2tKMjBsdG5OOGdKWnZsNGNEeDNuMWJHL002NnJUZkZzL3A2MDczai9zTzlUVkpQOG5EWWZ1cFM2VmR3TG9OcnIrWDZKdUczRnJhTkxrMXFMUGVXdTRQTmJ4M1UrV0RvczQ2ZngrOHVqcDJ1OUtyYTR1UHhFNGI2aUNUeFFGZDlFenFHTkxvZE9TMy9TYlhqN0ZvcWh0WHpYcUpVZFNOcmJ3T01ORzFhVWo2Z1FSdi9BSUVFMWViOWREUUZ5eTV6NkF6YTYwSnpsQUNuWmxndjJYQzBtb0tLM0RZd1c2aG9mWGMxNmI3NG5SdG9ma2x2dFQ0WUtBT1k2RkpMRXRZeDhmUVVLY1llNm5zL2thdFE1ckdvSkcyaWc0WC9kdTZYcC9xL2Q2Tm44bGR5N24xQ2s2UHdvcEtEV2F3QWIxcjYwOVhoN2IvN3BCMkg0WlY5empQUTdMSDZubWR0NmZlcWI0ZDBodDBZdE1xTllXbTU2NmpqMkI4VjU1dG1KOEpGYy9LODVkOFFzMTIxL1NJOU42TzVxanI1YVo2M3N3ZnNRcXRaeDJheERLbmRKVitZVXpXT0VvYmordEttS2ROdHFLNi90c1pXOUdZWHVBVTVibVRXdEx5UGovZk5XK1NVV25yVTRPRnFkTW5kajdCV0RFUURENm5wNWY3UnBZUFRKVnZrOWdNNmFuUmEwb25obEJYcDk4dHRPWGZmSEkrQ3piSjhZeU1NME1kTEltLzRzWVRnRHIrUGxXdjZxTTBwY0d6RFhGYzZHVENwcVJ4ZEQ1ZCthcCt1TWM0c2tUSUduOFVYZitYWXFUaUdhMnhKSU5rVWRtZXJOMGZia2c1VUJ2VE9PZFFDdDgwSWZWTytrU1BLenB5R2dOSkFqbm5CVGdjTDAvVllwMG5VdE50d0VHMXBscWNxY3NNYmNDWTVEeGZ6OC81SUxBNm5kZUxpeEpqQkdyakJNNFVsWFMvOTRKZnB2WjZzZllzK3lmeTNOaG8vRlNwUHgvWjhWSWZjUXhKNGxBSVpyMWw2Y3NWQ1c1SW5DOE4xeWJDT1pPeWxFL1M2MHYyVGRnQTFDSDlZVU50aU9la2ZSbWdzWHd5bWdrbEpocnY1ekZETFRjK3d0c1k2dHdRMnM5TmV6L1NYdzNuWmEvbjE4bnBXUm5hTW85ZjhyanQ3SHkxOHNwMTR4TlpUS0JUOEpIRWVaUFF2VFIvV1Y1cUhDOVZ6cjJlMTVNRllKZGYwd2R4dkRNYmNHOUl3OGhHNUh4aEliUHBicVNSV2dBY29mSE9uUEdyTjRtY0NYbjVGVDlXWW5LaVRXbUFvRzlyMDhieUVNNG5pL1d4cldaTmRRckJjaHpyMm5oM1hoOExuQXlFek9LTXlCQ1ZETnNLd0wzbU9vZVVyYTNDRE1kQk51dEJ5eGZxZkJUaGp2Q2wzbThoOWhpd3lnSWdoWjVMdzdXTjROTFFobGdmZC9tNXJUUHkrcEo5S21oL091VkZ1Zlo3cmIzUlROL2hiT1JKWExZR0VzbmpQUXRqVFJveVJoUGQ2Q1JHck1UVlJleWdZVDFnY015SVRCV2M1bjNJaUF5YThVRERYcTVvMFZUam01Y3ovY1B6cFQ2dXk3QmRucmw3NU5zMDk4Z3lGMHQ5WHBKRXF6Qk5ybWxhR2V5QU5qVGJjNVRoR3FQMk9LbytyZzd1eDgvNDFOQ21uTVVOVnpoTEhhRzRYVFJzcXBWRFdSbE1KM1BVWVd4eC92WEcxcTgzdEs2cmV1VUYxMHJGVHZBQXdwNXJDSTFEVlNJNVo4VlBlQmRVbnZlTDAraU5GWlZxcG1aN3RxaHd1Z1puRnFmUXhvemY2Tm9RZS9PWm9lb3A0WkUyM3VqcWtlYmx2NkxZQVhHd2FOQ2VRTmVtMEdZSGZNSDdGSWlEREVjYmM2U2c0dGNvK2JPenE3UFdMOUdOTlpjMGZKYW4zdTNvM2xmNXVpdFBwSjFhaFZQNnI4Tzh0d2JjdENZdlUrenM3SUxIWmJWZ05EdUtrazk1RUZyY21NNS9NWE4wQ3M5dk9DMGdEUmxMck0xUFRyaGorckdjemxZQ0xsYmFyMm5pTkRSdmprNEpYamdGeDlCZGpybHJ0KzlaK3BHaDI1Y3NrUis0S3llT3I3QkQySVlBcE94QXhrTUxEWHdMUjNQRnFWcFQyZithQVZ0cmFFdjJHcERtT1VqTm5aZFg1V3NOZFpnYTNCQUM3dlhQdHpsaVNlczQ5N3gwczA1VStMT29qQ3U3SzVtdGJpc1JCNTNqOStuRUxrUVdzak5ERys5eXpFK09Udk9HdGNaY3ZlR0xvMFh2cEhJMm1wWFo1TEZ1N0dXUWdqTW5mSEFFanA4bGtmejdCVm9Ec25ZZXpUUlZHOFNocDdNSmJLN0tFbnVUNC8wOWZMa2lTdjljcjQ3MDYwTDB6MWpxRUlMRnlkNzJGYWRSUU9iNDJrbVdndzV5SFBkSVAxNVN3ZGhaclgzZy9OMm5XS3BPZnYvVG9GOW9EU2JsY2ZnL28wVjQ4Ymg5Z3lMbmdMN3llSGx4U3FFYWNKRFUrVjUrSHNlMk5xWU5iVGljOTVyYmdILy82Wk15SkQ0dThkSXU2WmlmR28veUZFUWplUGVwRUE0MFdJV2UvOFljcFpIR3dlZlZqb25wTW55My9YRDN5TkxjQTlQbTdxL1FpazlhNGZiaStjVmtZV284aGU2OE5DS1RLREcwcVVlTzNoR0RzazkvenY2MHFucGF5VzQyZGhWK0ZPV25YRFlIcDdMNGR6bWpzREJrMDJvZzhtbFo4UFJVaFVEcjJqREFxZTFuejlZdzhra2JvTVFDS1dIMndsOW9DWnpGYzVsaTVuSlZ2b3psVDUrdjBWNm1mZEtWZU9hSWtlZnV1RWVhdlg5bzh4ZXRmQUxqV3hBR0g3Nkx6T2dLSzkvRXJVdm9ueFFGK1hkMXNQa1ZLMjhoTzdJQ055bUxjS1hWTGhIMzJZOFQrK2dRd2gwYUlEeEoxdDk4NGJGczFtTXRNalRaZFRaaDVSelNtRGJVTmtiV3d5R2xJV2lFQUhieXNIL3crRkE1M0xEVzJmeVFnZHgvck14Rm1naHJpNXU0STA3WkFiK3pNekZDWnAwaXVlK0V0c2pFYjlYeEl2Rkc3ZkwvSStUUmxycXAwRkdlZTZ1ZnNmeGJtKzdsWG4yaHVzZThhSHh0UTJ3bTdBQzd1WTUvMG5obkRUb0xReHZTcG9vMWZrQWJzMzNCNDdjYVhKV205T1gxbE03SzBKWi8xM3A0cmo4SkgxODgvTXk4TXcvZE50ZmxtVHVXYWJQMy9NUEJtdnpuRGJVMlllckVWUGN2cXZ5cEV2N3NCS1lGSFp2cWZwZ3dkbTRvSDVtdWcyK3NuQ2lNL1NSY1pWU1hDbHcvMkZJM1ZHSzY1TFVlN01PdENTTS9jS2lmTjFTMEJ2Z0JBRTBmalhPVFJkMmNUSXpDTkVpK200bEhkYWx2eEdiOXZNR0xRQitZZlh5UDZqSS9ieWpYVEp5Tm1VM0ROSEdhNlBQQ09BbjJpMFRteWdtU3FmTlJlZjJKRTZ6RGpMb2hYK1BJQk1YUTJBR0pId1lsZ1Q5Ly90SmVpMVMzMkc4Y0Y5T1Z6elJSVzFLYTc3ejQrSjYvRWVYN3l2bnd0M2hpNU1RZW50VVBGZzVJaWdrd2MwUG9nNHlzRjZJSSttWUFuSkZwT1JEVDhQT1VoVGNVU1FIK0p0R2VUcDVIVkhpV0tGd2xWUGVSZnFReEdRMDM5dTk5NmNNMFRweVYvQjFQbVJES0w4S0RJcGpxMS9FVU8yRGxKTWZmdjYvQ3RXODdxejRXUm5tRFVQS2RVTkZ1Y3pmVU9vUXBjZ3FXNTg5Uk45VEc5Sk5CdU9vN3F5U211c2txZGNnK2dPY2dzM3d0VGY3dG9HczBUVE8zNU44N1RYZkpQNE82b1Q1OGlEVXJmK1pVTTFuNm5YNGdQeXZzM0xYcCszdUc1aDRQZnA3S1BUb1JmcU9Fb3RTQ1ByaHp3T3JPM01UZmlNQysvUXBLZ1EvOUZGVmhpbmU5UjJuKzNxQzd4SW1UT3hnQ0V4SWxRV2JnZnpoa3dPM3Q3WS9nLzdWbVlib0NUcmRWZjgvUXQrYXcrMGR3ZUVkUXQ3Vm1mZ1JMUDdDN3JWays1a2RRdnNDbyt5Tm90YkRPbGhQL0NPTElBZVF5eGxHM3RZY1J2aFE3MEFGSnVDTDNXeTB6aWc3UHRWb1lnbkZ4NjVaODY3WWU2Zng3cTVXWUs5ZEp2aDlkemRmMmtpVDZFVnk3MDZQanR2WE5tbEVVZnp2cytHay85dUttV3kxSTFMdWczbk1ndW91OWIrVGxTOGVVM0pMM09lMDVjTGRNTFdjVk9Ja1QzL25odCtxODVSUG54dnBCbkdEVFVxV2phZHk2M055UC9PVk9QNmh6STVFWm1LNWozMXBadHlVNUVEWEtxZWxCYk9mQ3dBbndicGZaeGt5QTU2d3FZQ2hzVXR4dE1RMUFRSGo4cU1yQmswVkw4WlZQVkdXQi8yRDk2Uy9JNEt0eStJb3N2aWFQcjhqa1MyS29QSEJNbnhrRVlVTGU3bFZsWHY1cEx6MzhCOElnTWYzQVdWWEgzUlo2WUViUjRXS3JSVXdpM3Q1NUs5aXRXTC9xL3V0bTRMRE9mdmxqQzREL1ZvNXArNEVUeDk5WG9lVWNQWXVOZytnazNkWmZMZXpFdTYxdk4zdmowdnBaSFF2OXRmT3JzMXhyZktwbDk3cmxDWnhrRTY2V2Z1RGVMUjl6bk96TmtKdy85UlViVkpQMVhwTEY4djNTd1hSYnVYOGhPcHBDNTJCL3NYL0JJanh4TUFkcFlaNVUySVQ1VWhmY2JjbXJPaS9MV0tyYnlrT3ArbDNMQkVzbnNJLzRqMjBHY1Q0bjEwLzVVUDhqVWpxOTNHb0ZLYktjVlk2bDZndjNtSG9ZdW4vSG9CbEZNUHNuY2hJdnRQSDEyS1IrL2xjQUFBRC8vMGplblZ5S1VBQUE=
kind: Secret
metadata:
creationTimestamp: "2026-06-08T14:16:43Z"
labels:
modifiedAt: "1780928206"
name: sample
owner: helm
status: deployed
version: "1"
name: sh.helm.release.v1.sample.v1
namespace: sample
resourceVersion: "766"
uid: c2c84b2b-96f8-440e-92cd-736f882221b5
type: helm.sh/release.v1
kind: List
metadata:
resourceVersion: ""
apiVersion: v1
items:
- apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2026-06-08T14:16:43Z"
labels:
cilium.io/ingress: "true"
name: cilium-ingress-sample
namespace: sample
ownerReferences:
- apiVersion: networking.k8s.io/v1
controller: true
kind: Ingress
name: sample
uid: de3b47b0-d966-4e87-ad1a-dc6587cd0582
resourceVersion: "741"
uid: 47e0257f-db34-4341-b2af-423d955f9b82
spec:
allocateLoadBalancerNodePorts: true
clusterIP: 10.96.79.246
clusterIPs:
- 10.96.79.246
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: PreferDualStack
ports:
- name: http
nodePort: 31580
port: 80
protocol: TCP
targetPort: 80
- name: https
nodePort: 30281
port: 443
protocol: TCP
targetPort: 443
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer: {}
- apiVersion: v1
kind: Service
metadata:
annotations:
meta.helm.sh/release-name: sample
meta.helm.sh/release-namespace: sample
creationTimestamp: "2026-06-08T14:16:43Z"
labels:
app.kubernetes.io/managed-by: Helm
name: sample
namespace: sample
resourceVersion: "723"
uid: 66c1ca46-5513-4b03-9d5d-3cae98c370c1
spec:
clusterIP: 10.96.183.102
clusterIPs:
- 10.96.183.102
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: sample
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
kind: List
metadata:
resourceVersion: ""
helm-status-deployed
helm status: deployed PASS: release sample in ns/sample is deployed
pods-ready
kubectl --context kind-chart-test-swarm-run-2 -n sample wait --for=condition=Ready pods --timeout=5m --all pod/sample-7955bb5b9-z5zp5 condition met PASS: pods Ready in ns/sample NAME READY STATUS RESTARTS AGE sample-7955bb5b9-z5zp5 1/1 Running 0 4s
smoke-script
exec: /Users/rohit/Documents/chart-test-swarm/examples/sample-product-chart/chart-test/assertions/cni/cilium-ingress.sh (RELEASE=sample NAMESPACE=sample) ==> Locating Cilium per-Ingress Service (dedicated mode) Cilium per-Ingress Service: service/cilium-ingress-sample ==> Getting per-Ingress Service ClusterIP (no LB on kind) Per-Ingress Service ClusterIP: 10.96.79.246:80 ==> Probing per-Ingress Service with Host: sample.test.local (in-cluster) HTTP response (Host: sample.test.local): 200 PASS: Cilium ingress routes HTTP through dedicated per-Ingress Service PASS: Cilium ingress controller verified
Logs: /Users/rohit/Documents/chart-test-swarm/examples/sample-product-chart/chart-test/reports/run-cni-cilium-live/scenario-cni-cilium-ingress-20260608-101550/artifacts/logs
cni-cilium-network-policy
CiliumNetworkPolicy enforcement — default-deny + allow-by-label
PASS
kind
addon:ciliumnightlycustomer=any profile=cni ---
id: cni-cilium-network-policy
name: "CiliumNetworkPolicy enforcement — default-deny + allow-by-label"
description: "Proves CiliumNetworkPolicy (CNP) enforcement on kind: default-deny + allow-by-label. Blocks unlabeled traffic; allows labeled clients. CNP applied as raw_manifest preinstall."
labels: {customer: any, profile: cni}
cluster:
provider: kind
config: ./fixtures/kind-cilium.yaml
cni:
provider: cilium
kube_proxy_replacement: true
preinstall:
- kind: raw_manifest
path: ./fixtures/cilium-network-policy.yaml
namespace: sample
product:
chart: ./chart
release: sample
namespace: sample
set:
image.repository: "public.ecr.aws/nginx/nginx"
image.tag: "1.27-alpine"
ingress.enabled: "false"
asserts:
- type: helm-status-deployed
release: sample
namespace: sample
- type: pods-ready
namespace: sample
timeout: 5m
- type: smoke-script
path: chart-test/assertions/cni/cilium-network-policy.sh
tags: [nightly]
mechanisms: ['addon:cilium']
category: cni
integration: cilium
tier: live
helm_values:
{replicaCount: 1, image: {repository: nginx, tag: "1.27-alpine"}, service: {type: ClusterIP, port: 80}, tls: {enabled: false, secretName: "", servicePort: 443,
# -- Filesystem path where TLS cert+key are mounted. Defaults to /etc/tls.
mountPath: "",
# -- Volume type for the TLS material. Supported: secret (default), persistentVolumeClaim, projected, csi.
volumeType: "secret",
# -- PVC claim name (required when volumeType is persistentVolumeClaim).
pvcClaimName: "",
# -- SecretProviderClass name (required when volumeType is csi).
secretProviderClass: "",
# -- Whether to run the wait-for-tls initContainer that polls for cert files. Disable for CSI volumes that are populated asynchronously.
waitForCerts: true},
# -- Scope component (API server). Creates a separate Deployment + Service on port 8080.
scope: {enabled: false, replicaCount: 1, image: {repository: nginx, tag: "1.27-alpine"}, service: {port: 8080}},
# -- Darkroom component (async processor). Creates a separate Deployment with optional PVC mount.
darkroom: {enabled: false, replicaCount: 1, image: {repository: nginx, tag: "1.27-alpine"}, pvc: {enabled: false, claimName: "", mountPath: /data}},
# -- Ingress resource for skywatcher Service.
ingress: {enabled: false, className: "nginx", host: "", path: /, pathType: Prefix},
# -- HTTPRoute resource for Gateway API integration.
gatewayRoute: {enabled: false, parentRef: {name: envoy, namespace: "", sectionName: ""}, hostname: ""},
# -- Service mesh integration.
mesh: {inject: false},
# -- Policy compliance labels applied to pod templates.
policy: {complianceLabels: {}}, image.repository: "public.ecr.aws/nginx/nginx", image.tag: "1.27-alpine", ingress.enabled: "false"}
raw_manifest_refs:
- chart-test/fixtures/cni/cilium-network-policy.yaml
---
# CiliumNetworkPolicy fixture for cni-cilium-network-policy scenario.
# Enforces:
# - Default-deny ingress to the product Service (drop all unmatched traffic)
# - Allow ingress only from pods carrying label access=allowed
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: cncp-sample
namespace: sample
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/instance: sample
ingress:
# Allow from pods with label access=allowed (same namespace)
- fromEndpoints:
- matchLabels:
access: allowed
toPorts:
- ports:
- port: "80"
protocol: TCP
---
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
networking:
disableDefaultCNI: true
kubeProxyMode: none
apiVersion: v1
items:
- apiVersion: v1
data:
ca.crt: |
-----BEGIN CERTIFICATE-----
MIIDBTCCAe2gAwIBAgIIEITWJ3NLCS4wDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
AxMKa3ViZXJuZXRlczAeFw0yNjA2MDgxNDEyMjNaFw0zNjA2MDUxNDE3MjNaMBUx
EzARBgNVBAMTCmt1YmVybmV0ZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC06jWyEOkGkOa6sR8Z89WV93djCezWfLMZL3VJ5YnoXvZd7F/2DlduKo9l
oY9hk0tb8Owj4fNsJ5p1qrJQ+3HoyU3K5TZjB2AsgaimuiUnU3DZIfXIY5yM8Q/Y
FwLc3j/sHZnfdkFWRKmdEXX0YApA+Y7Wtuiq0mBLJ2MxsOAOCidTdi2EbqvDaFzL
JHigM5QxtN7mOOixY8cxc7jrnSkO06HXvxHFRgYQQXdHLgBfTYadFy67gE22ArpA
BEH5Iqg60v9zO8JQZizQK1Q04FM8yI3YRsgXoHDnAJMDWX+RMKJvXTDtPahM6VDl
WuD1k2JoNspWCt9+TWn7fazmemw/AgMBAAGjWTBXMA4GA1UdDwEB/wQEAwICpDAP
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTjf6UjLZT25XGm5+bcoEDTCNk9JjAV
BgNVHREEDjAMggprdWJlcm5ldGVzMA0GCSqGSIb3DQEBCwUAA4IBAQA0KFUNpDvk
csh1g+NirzUfSMLg1tVgmqZeaWdg5ur9arh8A9kelnDeIHe5bjJwIkHCfOH9xZkM
mNvHwTB/fpfUVkOZbpNRebu6CSeWjfyLajp1uI95EKdKNu3/2aM60vBjBdD6RlCH
mlP/hDumc2guIGfnz7gk7LlIzwer+QmS2qQD/BUHq0vyF0DXkGO4h9RsVM9tJ2KA
0KfDxy4WXgdQXXULmYUnmncNXtCES04iHNkSieWOEw3G+fSdXwOIgNxnc0Z4unbo
EptDUessVSJdx4taDIUL7LC3f4tZvWcWMV0RdyqwwoF1jbjn+ta4y826Uf8OsEyD
ROyrbTCbcZ2U
-----END CERTIFICATE-----
kind: ConfigMap
metadata:
annotations:
kubernetes.io/description: Contains a CA bundle that can be used to verify the
kube-apiserver when using internal endpoints such as the internal service
IP or kubernetes.default.svc. No other usage is guaranteed across distributions
of Kubernetes clusters.
creationTimestamp: "2026-06-08T14:18:13Z"
name: kube-root-ca.crt
namespace: sample
resourceVersion: "734"
uid: a0850d27-2cfe-4d67-b127-fb8a72db90d4
kind: List
metadata:
resourceVersion: ""
apiVersion: v1
items:
- apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
meta.helm.sh/release-name: sample
meta.helm.sh/release-namespace: sample
creationTimestamp: "2026-06-08T14:18:13Z"
generation: 1
labels:
app: sample
app.kubernetes.io/component: skywatcher
app.kubernetes.io/instance: sample
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: sample-product
app.kubernetes.io/version: 1.0.0
helm.sh/chart: sample-product-0.1.0
name: sample
namespace: sample
resourceVersion: "777"
uid: 7b3bf2f4-43c9-40af-9115-2b48bbcd6ae2
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: sample
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: sample
app.kubernetes.io/component: skywatcher
app.kubernetes.io/instance: sample
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: sample-product
app.kubernetes.io/version: 1.0.0
helm.sh/chart: sample-product-0.1.0
spec:
containers:
- image: public.ecr.aws/nginx/nginx:1.27-alpine
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 80
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: app
ports:
- containerPort: 80
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 80
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: "2026-06-08T14:18:16Z"
lastUpdateTime: "2026-06-08T14:18:16Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2026-06-08T14:18:13Z"
lastUpdateTime: "2026-06-08T14:18:16Z"
message: ReplicaSet "sample-7955bb5b9" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
kind: List
metadata:
resourceVersion: ""
- app_version: 1.0.0
chart: sample-product-0.1.0
name: sample
namespace: sample
revision: "1"
status: deployed
updated: 2026-06-08 10:18:13.252124 -0400 EDT
apiVersion: v1
items: []
kind: List
metadata:
resourceVersion: ""
apiVersion: v1
items:
- apiVersion: v1
data:
release: SDRzSUFBQUFBQUFDLytSOGEzT2l6TGIvVjdINHYvd25HUzZTUkt2MkN6RVJNTWFNR3JuMG1WTzdvQ0dBZGdOYndOdFQ4OTFQZFFPS2lzYk1QUHVjcVhPbW5sMDdTbDlXci9WYjk1YS9tTkRDTHRObUVndkh5R1Z1bUNEOGlKajJYOHhIc0VqU2Z6cHVqS0tONnpCdGhtZjUrMXYyL3BaOWZPZllOdmZZNW9RN1h1UTV2bm5MTnRzc3k5d3d5UHJ5Rk1kTjRDS0kweUFLbVRhamhrbHFJZFNBRWFFbUpmUWtxWlZtQ2RObWR1dit2R0dnYnkxU1FpVjJVOHV4VW92OGZYQ1MyM2dST1JsTW1SdG02UzZTZkhuMmpyczczZlExQ0FOc29VYVNXcUZ6RzRRTnVub2pTMXlua1VZTkovSStvc2pKdjcxTjNTUzlUVmJXQWpNM2pCVUgybTd4SlUrL2lmZmZjSGNzM1M3ZHhJUXdLNDVSQUMyNjY4OGJCa1Z3enJURERLRWJKblZ4akt6VVRaajJmK3dPc3Z2eTJ6OTlGOFh1SXJsTFkwVElwd2RtWENGWnZuaHh6MVVrMzhZano1RjlwTXFpYit0VHorYk40dk13TW8wK08vQ2lmdzBFcnRVTjA0ZkJSSm9ESGNRMm5ucHFPUFJ0UTByQWhGdEIzSm83K3BBZFlMcEdvSGE1MXNjb2ZuQTNyQWRrRFp1R2xqamRUamJpZlIrR28rd2Q5MUl3NldRYTdpV09ybTN6ZWRwM0Iyc2JpTkVjVEtSSFZSbHZIRjJjcVUvbVZsVlducVAwWTFzYmNnQ0QyTzEyZ3NGRTlUNE05c1VWa2xTVnRReDBwZGJIS0hvcHp2WUVzZVk3OHRRemM1cDlSMSt6cWd3NFcxNkxxdExqVEgwZEE0d1E2RW8rVkRxZVRXbHF2cndFclFQYUxWMUVhcmUvTlhWdVpjdlRGQ3I5SlZDMG1kTVZzYU92azN5ZTZnMk1IWTlpRUZUUFJ2Zk1USjFEN3dKQU1PekhRSjd1YWUrS3VxbXZPV0M4WmlEVUVsditiVjRra0srdVA2WjdxMDlSUzVYSENPQWVaeXNqYnpBdjVEdlA1VDVBd0xjVkRjR05lSjVXR1dGVkhpN3RjT3hidXJqZHJkMFZKMEJmSTlNWW9uSzl5dmxPbjNVbEZvWmFabTQ2L09zbVA1K2xjKytPRHJCbGVKNGFzSUdxN1BpSmJHV0lLcDlYRUtQTWtVMVBEYlR0WUtKdDFhQ1RUYkdXQUwyM0JSUHhMYWVwb0MzbkYyZmpWMjg0ZTgzM3hpaWRDaG9HR0RYVnJwcXFnYlNYdVM3T0QvYkdvNHM0czNrdXRmbW1aOHU5QU9qcnJhcFF2bEpjbVVKL0NZVlh6OVRYaWFyMEVlUmJITVJEQkRkZndsbGk2bjFrSzYrbFhrVkFYNmVEY0JnTitGeUdiNEgwNEc2azJNYkR4TkhINTliSitSRjBNbksrZ1pFK3FGM3h5Wko3RzZjcjZzRG9ieTI5bFJGK1FheXRiTGszQTVOTzhMSlJQUlU5NXZMQXZSWHNpZ3RIN3lPSVJlVElCTjlvT2VDcFhPOVZKWDFRWlpTWi9Kb2p1TGxzSTVxVXI2WWhyUVk0NVV5c2JXeXNzVVFQTFAxeFNmRGx5TDNNNUl0MXoyRHMzSHlxUHp4YTJyUEljNFdrZ3ZmZUN2WUl0b2N4a2R0SFYxbzdlb3NGRTRvQllnc3lTOUFDWVBRellJeUpQc1QycHBXYXV1Z0RYcHNQOUw2WTgvc0FjKy9BNlBPV2ZvRFRIWGJvNTAzME11WEorQ0ZyQytvZUx6Sll3a0JDcGo2TXFHNFowdExHV3VaMG15K0RpYlMxQkNTWXhuaG15ZHJtTGFDMjZsNTlXbTkydk5BcEwvNi8ydlVEVXg4dUhMNjNBVjFwWnZQY3lqVEdzWW5YNkdVVXBhb3luTm1DaEM2dE1URHlNZDJBWUxLM3NZVCswdWJaZTFYdXJlQlQ1SDFYK3NpV05SL3kwNVRhdmZkbVdobjNGVXh2NmQ3Q2VBbm5hOS9FV2dJM2hRM0YrVjVVWm1pM1grRXphdlRVdTI0L2syK3RnRFlrNjgwY3ViVjVML2tmZE5JU1J6Vnl6VzBKMVplQ04zV3kvZFF2am4ySTA0M050OUk5QnZxdlIzcWR5K1U4MWc5NGZjRWVyV3hlUkhZNFNxRWdJWk5IMk5KZjkzanIrZ1FiQWVVVndadk9MZTJnczFDVlBXL1VidUxaZ3NRU2UyRHFLOC9rV3ltVTE3R3BpOFFtTEZTNXRYSmt0TFJ4THpuRTdEenJCdEZ5YnkrSnYwRVpzU09RNzVFMTBNQ1FOalkvNWt4aGxFRStGUjIreDVxOGp5Q1NsdUQ1Q0F2aE5mYWtNaWU0cU1PekNtL3VWV1c0Y0EzSGQrUmhCQXlWME90WnVqaXpGVzErbnQ0NjJUWDMva0Z4WWtmMnFyNTBaZlByMkJUbTJRRVBweVhOZXp4RDNNc0FQL1g2Y3BLbzNURlAvZlYrYmZJOStidkF4NWluZHRyUWxzNkJmeTd4Y05tWFhZWFpNTWY3Vkc3TmozWGxHbDdaK3puWlpkOVJ3YzlUNUVGK3VJVHk5RXA1a0xIYWU2MHRxZmgwaDBlczFhM0VaS0cwdEdVMGN5ZGlqZ2taK1RZZW90MDU5enpibUxvWWdrbG5ibTFXWGw4eHZiY1pXMW1iZkMrMVB0NXplMFdlSC9tVHI4WVVuK3JNM2dad0k1c2ZIOXVRYStLQTVCaTc1M3hvanRsV0JuU1J4Qmh6MCtndklHNHQ3ZXYyMlkrdnQ3dFpoU2VDWll5amFpd001VlppNlVOeGdDaytFa3Nuc1lCV25yZWljMzNmeGc2Sjl4YURibWZ1QkozNzc1UDkydVI3OG5kaDIrZE9RT0xOSG1jTFkvUzVUT3A4emVPL3VuTU9RZDRqK1B3WHNRYzBicEo3bVkxYkxQRzVOaStXZnAyMTVLa0g1ZFpjVmNhSW5NTTB4dWhyT1JYWnk1ZHNMQzRkdVVmM3F0ckgwM3lEMHBhVnRPVm5ITVpBMW1hbW9XYVdRZWg5TEdNc091WXQ2QVFrUmdZVDlaUHovK01mekEyREl5Y05hS0tacCtuaXJjQ1NOSjF0a1RUOS9vRVRlYmJGOFVXbS92T21KaS9OVTNMc2h1bXRZeTNtaXlqQ2R4c0xIK2FvZWI1UnpZLzIvbzlnMGlleFRVR25EMlcwaTJIekdFZmFEZ1J6M2NWcGJPUFJ2Zm84UmxCZUwxMmRJL2IveGRZMTF0VEh2aU0vMzNlREl2OTd2eEIzVExnSy9pTlBsUXRiczQxZTFHN0hJM2FaeU9KTHV0ZVZpSnptUkwvVXB4eC9YMWpyQ3YxYWVUYXhKVEx4elowY0MwSEhVL09jOTNNZktlL2psbTQ0WEFIOWxmSXF6dy9RekRSZXkzaWxWa2E3Y2RQaDBpRm5MUGJmKzFIMXZxQW5wVEh1OHhGUHV4MnZ3TUVuTWNCbjhkVXhyODJDMXhJTEtGOTdMSGd2OXBRNTVNaTl1V21NL1RjdjhuSTZwRkp1QmIyL1NOdWhMejJXVDNNdkgwTEhvVDNaMDNJMVBsSmdES09STG1hMlFIQ09sblpZeHd1dmdydTlqSE1hZHJrK2d1SGgyUWNUaWVhVGgzNmhRbU8zNDFrNjV3T1N2M1g3Tks3ZTI2ZzlUd1lZcGFidW9FSFlSMUJ1YlMxanZJVGhuTVk2dVM3dVlxbjlQaE14dHZWZUNDWWlhK3FRakEycXRLbGRpZG90U3pmUHpWODUrUFhJaGh6Uzd1Qlc0dWdjZXRkYm5CMk9EL21mL3k4dGFtWUhlakxJYmNyTDBWaUtjVnZRTXFjbitZN3NYZFliQmN3R21LTTZNeVUydjRhK285amg5TmxwTExvQnhuRHBHUDBaTUY3M010OWhxbEtmcU9qZjRacmpwYTczVXJ0N2d0MzFhM0F0amI4akc0bTMrVFZuNjlxUlBOaWQvYTd3a2VSTHJIbEVFNVJwWFdEckVMcDdZR2tyV2dxbXc4VFVVWG9xWTJsbXk3M1lubGJxRzRSUGhoWkRyTTNWYnYrRWJwTmYrNWJPNVhtampMWUg0eFVuQW5yVE81VzFscGw2UHdINnlMT01WNi93eFJmNWM3QlAxVzRvRjJQTTgvNmJhM01QYmJGMUovQ2N5RCtLRC9kWCt1OEVSckY3aGZNdUF2di9DY2VkSi85L2h0TytWSWo0ZllldGxFV0s2NXgxS1pQL05rZGRKcFYvbXBPdVQzYi90empvUGY2dmNjNEZMNzdnbVBQMVAzZktLMXZvczNYT1pUQ1JaalpQNXFFTUdQMFJHVmNXNDA3b0NvY0loaUEyK1NsSkVqZE9qUU9FV1BPQlROWWFicWRLZjJuaTZmMGhMWVIzUHVzb2tnS00wZWt6NmloNnJQVVVlWVBWaWVQM1ZFVmFRcXB2Wi9TSjF6WU9Sak13RWVtWkQzQlRZTlV5QUxLeHRvVWNTZTc3cU1iNVJJNHlYbzE1amEwSlBnZ05lU0RSZmF3TE5sYS95OE0vTTRqNFFrSzZjMmpjUTR0L0VFWGhPb2QyNU1wTVE0cTFTaS9CTktRVjNMVDQxMUc4SUNyNkZralB3SkFTVzBBcFVkY3VQakpOY2lWMk9OUERPRFZkWll6MGxScmJXZGR4MVZyd0twTmNjWGZ5dGZXOFNvM1hpN2RRMW1hVUx3UXE4am8yK2Q3MkZLYTdaMDgwWmk3aFdhbFJseXBoNjNUdDF4UFRmNlU3UGxNN2ZGUmxNYmJ4bUxoVmIxakNzbExEMmU5L0dJN2t2RGwxajlmTDRVSk4vSWl1dDhQWTJEK29FZjNDM2lTdXRwNlA2bGdYM2FDMGwrZjUySjYxbGJQeFBCM2ZsNnU1VGw2LzIyTmhuTUNOV00yZENDYjNQZjJ1dWdUR2VEWVF4cFJIVlpOVTlML0xuR0hxR2xMZUI2K1liRWRlYndkaGtRZG9ZeEhLMDZQMSsxdWdEemZBR0FVMWNYWU1BaWtEazA1MGZGNkg3OFhPTTFqQ09URzE0N3h2TDdmZWFlOGV3MWp0OXJHcHI3ZGdja2l6cFl1eDgzeVZXeGRNSGJFREhTeGh3SkU5RDgydG5MdnZVOTJpL0l4dGpOZ1IzOG9ja3Q5Z2JUUEp3NEhqc3dlT01SUk4zR3Erelo2ejE2MFpIUGNkRHZlay9TU2ZoTzJuTHBYMUlPL1Z1UDVPYXE1cWNtdGxWZWZXa01uN1M3WGJOOGpaTFYwTWl6cnI5TDMzNnBuRTdTcXZuaU0vVWpzTjlONUdsWHRzMFRNNXhKREJab09nR2RTNWZvSkZTMTk1K3FhVGdxSnViT2QxZ0pGcGpDUGFENlI0RTJjd0hIbkdwSVA3Z1dTclhRNmYyV3RKY1laVDVFNGs1MjBqemUyNnNJS0VIZndhQWFQanZkWTlsOGRMRzA4djhlV0FEd0MzT0J1UEVsVWhPajVFUUI4VDdHV3E5eHUxRG1XY3dGcmFLanBjOUc4UDlmcFU3M2R1L0V6dVdxNXRWbkI2RkZaVWFqQzlGZXhjVzMrNk9yVDlkNGUwdXpDc2VzWnBIcEk5VnUvcnZEMTFUdlZ0bjk3Z0U1dFdxU25VemJ1T1BvcnhiWG0zWVhvbVZEd3J6MS95Q1FlMiswQ1BhTy90YUkxRHZWeFY3NXNGQTE1anpVMkxwYkhNS1YybFh4alNQWTdTeHVPNkV1RnBuYTJvN3Y5MnhsYlVwaGNrUlhsdVpiWXl2OC92ZDAzclpGVGErZ3p3S0hPNzFNNm5CQ3NBby9CemVqcTViK1RGME5MRkpvM05zSm1CVGwwNjBVZW1QdjV1NDdYNEZ0RDdXYWhPam1ka3ZBRjZiMDc5bFRBY1Fkd0tkcWw2VlIrVk1RdWZIVVRpUW5janJVb2FCK2ZUbGEvcWgzZU1JMXRHUFBpajZQcS9GQ01WYzR6YWtneFdaVzE5c25lM3Y2TGxRR1BJa3B4REszelRpTlk3MlJNOXJ1aklhUXlrU1BTZUZ4Ukl2RHpXaTMyZWFFMjNCZ2ZWbW1weHAyNERqQjVuMGZ0OG5TRG5nOFNiYkY0dkxrcU1NVHdZSndtV3JHVzdzeGY4c296WGk3Vm5OVGlSNThyQnc2ZEsvZm5JanBmNlNHSklHb2NpT09uTVMxK3VLV2hGNDN5bHY3UXd5Wm0wdVhxU1hsK3liOUlLNGhidER3TzlKcDVUZG1XQTJ2TEpZQ0tWbUtoOW5zY01CN254RWQ2R3lCVDZ5SG11Ty91Ui9ob2tMM3M5djA5T3p3SVk4engreWVPMnMrc2RsRmV1RzUrcWNvcmNnbzgwemh0RjNxWDF5L0pTN1hpbGN1LzF2SjdNSUQvL21qN0l3NjFWZzN1ZzlHTUgwL3VGaGN6RzI0RkJhd0ZvZ0lkYmF5SXUzaFI2SitUbFYveFlpY21STVdZaFJvRmpqR3ZMUXlTZkxQWW50cHEzOURHQzgyRmlHc1B0ZVgwc2NOS1ROcllBWWlCckcySXJvUENhNnh6VzFvNk9OaVFPY25nZjJZRjB5RWNaYlNsZkR2c3QxQjVEWHB0QnJMRlRwYjkwTUpvRG8wLzBjWnZmMnpvanJ5L1pwNEwycDFOZWxIdS9IN1EzNnVuYjM0MDhpY3VXVUtGNXZHOFRyQ2w5RHRUUmpVOWl4RXBjWGNRT0J0RURqc1NNMk5MaGFkNkhRUXhZem9jMVo3bWlSVk9OYjE3TzlBL1BsL3FFTnNlM1JlN3VVV3l5d2lQUFhTejErV2thTDZJc3ZhWnBCZmdlQ3d6SGQ3WCtrcUQyT0tvK3JnN3V4ay9FREJoandSYjZDNUtsRG5EU0xCbzIxY3FocXZYR295bHVjWTQ4L1hwajY5Y2JXdGRWdmZLQ2E2VmlKL2tRRTgvVlIyQmZsVWpQV2ZFVDNvV1YrVUZ4RzcyMm9sTE4xQnpma1RYQk5OREVGalFXVE1TVmFmU0pONThBM2N3b2o0emh5dFNQTkMvL0ZjVVd5cjFaamZhRXBqRkdEdDhUQzk1blVPNXRTTFF4eFJvdWZvMlN6NTFjbmJWK2lXNml1YlRoTXovMWJrZlB2c3JYYlhrajdkUXFuTkovSGViOUpSVEdCL0t5NU5iV0tYaGNWZ3NHazZNbytaUUhrUzBNMmZ3WE0wZTM4SUthMndKS243UGxnL1hwRFhkQ1A1SFQyVXJBeFVyN05VMmNtdWJOMFMzQkM3ZmdPTFl0Y0hmTjVqM1BQbkpzODVJbENrSnY0U2JKRlhhSTJCQ0l0UzNjaU1qR3ZjQW0wVnh4cTliU2RyOW1JTllhT1lxemhMUjVEak5yNitkVitZT0dPc3FBMEVkUWVQM3piWTVjMGpyTVBTOWJyeE1WL3N3cTQ4cnV5c2JSMTVXSWc4M3grM1JpRjJJYk94dGdETGM1NWtkSHQzbWpnOGJjWWNPWFJJditTZVZzTUNtenlXUGQyTWtnZzJkdStKQUluTXlsa2Z6N0JWcER1bmNlemRSVkcrUytiL0lwcXEvS1VudVQ0LzA5ZXJraVN2OWNyNDcwNjBMMHo5bDZIOEhaeWRsMkZhZEJTTmY0MmsyV3ZRNEtndkRJUGw1U3djUmRMQVBvL3QyM1dLcE9mdmZUb0Y5b0RhYmxkZmcvbzBWNDhicDlqU0xuZ0w3eWVubHhTNkVhY05EVStWNTlIaWFPTVdTQjBlOVBPL1Z0d0wvLzlra1pFaCtYZUZtUGRzeFBqVWQ1QzZJV3ZMdFVpQVFhdk1aT2YyT04wa2lUNFBOcXg4UzFPYkhkZkxoNzVGbmhnV3NLOTFkb3hTZXRjR2YyL0dMeEtBTlBrVGN0amNnb1RvRXg5dW5WTzJwUWR1blAyWjlXVlc4ck9mWEdyc0tQb3Z5VXkyYnZWR2IvTG1jVUZZWnNYQTFFUGkwTG50NnFrRmpUNklja3RmMXM3Z0ZHUG1rRGxGaWdKY3hPOUFzdGdiTjRMbFBNWEs3YWw3SDg2ZndEMnN1MFQ3a1N6d0kxOHNLZDhNank5dzlOOGFLVlQxRnlDNlB3SS9Dd0ZWOWg1ZXU0ZFFuOW82SWcvNjczVnI5aTVXM3N4SGJvcFdVUnJyVGFKZUkrKzNGaUYrOUR1SDBEUktUSitsc2dQWmJOZXFKRndGQTlkeFZWN2lFTldhQTNDYkllOWlrTlJTT0NxSldIL2IzSGg4cmxocVhKNTVjTTFPNWpaUzNhUkZqYXdzZ2JDTm9XQnEydFJSQXlhUlhKZlN0eVpDNTVxNDZYcVRkcWx2OC93RDVyNjZzS0hlVzl0OE03bG45cjA3MDhheUJWejVnWGphOXRpRTJrTGVSWDEvRlBHVzd0WG1zR2pENXI2VVRqZXl5WTdBb2V2OVhncWpTbEwrK250UmJBbVA5ZCs1RzEvaVI4ZlBIeU0vZk9QYlNiUWx2azduaXV5ZCtMRDN0cjhwODN6TkpDbVpzdzdiK1k4cWRLNUc4M3RHemtPa3o3dzBLSmU4TUUyUEpjOG1EaHhsRVNwTkZpdzdTWjBBdkNOWFBEcEpaSFgrdkJQOXhhS0E1Q2wvbDV3OFJMU0NaQVpBVjRtSnNzNXVaa1lSeGxZZnJkU24ybXpYeWpOdXZuRGRrRUJkRHFrbWRNbS90NXczaFc2cTZzelRqS1VyZU9QajlLMG5DM1NXd3QzREFkdXgrVjE1KzQ0VExhTURmMFl4SmJzQmlhdURBTm9yQWs4T2ZQWHpwcmtlb1c1MDJTWXJseVRoMjFKYVg1eVlzLzMvTTNvbnhmdUIvQm1peU0zY1FucXdiaHpJVnBzUUJoYm9RQ3VLSDdSVGhHZ1JWQ2QyRFpMaUkwL0R4bDRRMURVNEMvU2JTbmkrY1JGVmtsamhZcDAzNWtIMWxDUnMyRDNYdGZ1aWhMVW5laGZpZExwcFR5aS9CZ0tLYTZoM2hLWExodzArUFAzeGZSTW5EY1JaY0lvM3hBS2ZsT3FXZzJoUnRtR2FFTXV3WEw4M25NRGJPeWdyUVhMYnJ1SWsyWWRycklYSG9PNkx2WUtsOUxrMy9hNnhyTHN0d3QvZStkWmR2MFA4RGNNQjhCSXBxVnp6blZUSjU5Wngvb3p3cGJkMDMyL3A1amhjZTluMmR5ajA2Rlh5dWhPTE5SQU85Y3VMaXpWc2szS3JCdjE2TDBrTS9raE5nS2d3K1g0dkwyOXZaSCtQOGFreWhiUUxmZE9IeHgwTGY2T1BwSHVIL3BUN3V4NUg2RTh5QjAybzFKUHVaSFdMNlJxUDBqYkRTSUVwWUwvd2lUMklYMGF3S01kbU9IQy9KVjRpSVhwdEdDUG04MHJEamV6MnMwQ0thUzR0RXQvZFJ1UExMNTUwWWp0UmFlbTM0LytqYmYyMC9UK0VkNDdVbVA3czhlSHRhSzQrVGIvc1JQdTdFWEQ5MW9JS3F2QmZXK2kvQmQ0bitqYjFNNnB1U1d2cUJweDRHN2VXYTdpOUJOM2VRdWlMNVYxeTFubkJzYmhFbEtiRVdWanJweHkvSndQL0szTmYxZ3pvM0VWbWg1cm5OcmI5b054VVc0Vms1MUU0bmhpa0kzSktlZGIxWldDbjEzVVFGRFlXU1Nkb09yQVFJbTR3ZFZEcDVzV29xdm5GR1ZCZm1IRG1kL1FRWmZsY05YWlBFMWVYeEZKbDhTUTJYQ01YMVdHRVlwZlYxWGxYbjVYenZwa1g4d0NsTXJDTjFGZGR4dG9RZFdITysvYkRTb2pTUEhPMi9XMmhWelZqMy9vUm5ZNzdQYi90Z0NrSDhMMTNLQzBFMlM3NHZJZG8vbUV1TWd1Mm03OFZlRGVPVjI0OXZOenJnMGZsYkhvbURwL3VvcTFWZXdjWWVCeWU2dGMxWWNvODAvc1p2NmtVTytUeXptNTM4RkFBRC8veGdwclZlY1RnQUE=
kind: Secret
metadata:
creationTimestamp: "2026-06-08T14:18:13Z"
labels:
modifiedAt: "1780928296"
name: sample
owner: helm
status: deployed
version: "1"
name: sh.helm.release.v1.sample.v1
namespace: sample
resourceVersion: "778"
uid: 23a1695e-4355-4220-a3cd-8df68de1ac4a
type: helm.sh/release.v1
kind: List
metadata:
resourceVersion: ""
apiVersion: v1
items:
- apiVersion: v1
kind: Service
metadata:
annotations:
meta.helm.sh/release-name: sample
meta.helm.sh/release-namespace: sample
creationTimestamp: "2026-06-08T14:18:13Z"
labels:
app.kubernetes.io/managed-by: Helm
name: sample
namespace: sample
resourceVersion: "741"
uid: 73106722-7c1b-40b1-b5d1-940c68f3704d
spec:
clusterIP: 10.96.111.153
clusterIPs:
- 10.96.111.153
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: sample
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
kind: List
metadata:
resourceVersion: ""
helm-status-deployed
helm status: deployed PASS: release sample in ns/sample is deployed
pods-ready
kubectl --context kind-chart-test-swarm-run-3 -n sample wait --for=condition=Ready pods --timeout=5m --all pod/sample-7955bb5b9-r55ft condition met PASS: pods Ready in ns/sample NAME READY STATUS RESTARTS AGE sample-7955bb5b9-r55ft 1/1 Running 0 3s
smoke-script
exec: /Users/rohit/Documents/chart-test-swarm/examples/sample-product-chart/chart-test/assertions/cni/cilium-network-policy.sh (RELEASE=sample NAMESPACE=sample) ==> Getting product Service ClusterIP Product Service ClusterIP: 10.96.111.153:80 ==> Testing ALLOWED client (label access=allowed) ALLOWED client HTTP code: 200 PASS: Allowed client reached the product Service ==> Testing DENIED client (no access label) DENIED client HTTP code: 000 PASS: Denied client was blocked (no reachable product Service) PASS: CiliumNetworkPolicy enforcement verified (allowed=reachable, denied=blocked)
Logs: /Users/rohit/Documents/chart-test-swarm/examples/sample-product-chart/chart-test/reports/run-cni-cilium-live/scenario-cni-cilium-network-policy-20260608-101721/artifacts/logs