fix registry auth: add Kyverno RBAC for Secrets + containerd TLS skip-verify
- Grant kyverno-admission-controller and kyverno-background-controller permissions to manage Secrets (required for generate clone rules) - Add containerd hosts.toml for 10.0.20.10:5050 with skip_verify=true (wildcard cert doesn't cover IP SANs) — applied to all nodes + template
This commit is contained in:
parent
c111799831
commit
ab7e18c07c
2 changed files with 53 additions and 0 deletions
|
|
@ -75,6 +75,10 @@ module "k8s-node-template" {
|
||||||
mkdir -p /etc/containerd/certs.d/ghcr.io
|
mkdir -p /etc/containerd/certs.d/ghcr.io
|
||||||
printf 'server = "https://ghcr.io"\n\n[host."http://10.0.20.10:5010"]\n capabilities = ["pull", "resolve"]\n' > /etc/containerd/certs.d/ghcr.io/hosts.toml
|
printf 'server = "https://ghcr.io"\n\n[host."http://10.0.20.10:5010"]\n capabilities = ["pull", "resolve"]\n' > /etc/containerd/certs.d/ghcr.io/hosts.toml
|
||||||
|
|
||||||
|
# Create hosts.toml for private registry (10.0.20.10:5050) — skip TLS verify (IP-based, wildcard cert)
|
||||||
|
mkdir -p /etc/containerd/certs.d/10.0.20.10:5050
|
||||||
|
printf 'server = "https://10.0.20.10:5050"\n\n[host."https://10.0.20.10:5050"]\n capabilities = ["pull", "resolve", "push"]\n skip_verify = true\n' > /etc/containerd/certs.d/10.0.20.10:5050/hosts.toml
|
||||||
|
|
||||||
# Low-traffic registries (registry.k8s.io, quay.io, reg.kyverno.io) pull directly.
|
# Low-traffic registries (registry.k8s.io, quay.io, reg.kyverno.io) pull directly.
|
||||||
# Pull-through cache removed: caused corrupted images (truncated downloads)
|
# Pull-through cache removed: caused corrupted images (truncated downloads)
|
||||||
# breaking VPA certgen and Kyverno image pulls.
|
# breaking VPA certgen and Kyverno image pulls.
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,53 @@ resource "kubernetes_secret" "registry_credentials" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Grant Kyverno controllers permission to manage Secrets (needed for generate clone rules)
|
||||||
|
resource "kubernetes_cluster_role" "kyverno_secret_manager" {
|
||||||
|
metadata {
|
||||||
|
name = "kyverno:secret-manager"
|
||||||
|
labels = {
|
||||||
|
"app.kubernetes.io/instance" = "kyverno"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rule {
|
||||||
|
api_groups = [""]
|
||||||
|
resources = ["secrets"]
|
||||||
|
verbs = ["get", "list", "watch", "create", "update", "patch", "delete"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "kubernetes_cluster_role_binding" "kyverno_admission_secret_manager" {
|
||||||
|
metadata {
|
||||||
|
name = "kyverno:admission-controller:secret-manager"
|
||||||
|
}
|
||||||
|
role_ref {
|
||||||
|
api_group = "rbac.authorization.k8s.io"
|
||||||
|
kind = "ClusterRole"
|
||||||
|
name = kubernetes_cluster_role.kyverno_secret_manager.metadata[0].name
|
||||||
|
}
|
||||||
|
subject {
|
||||||
|
kind = "ServiceAccount"
|
||||||
|
name = "kyverno-admission-controller"
|
||||||
|
namespace = "kyverno"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "kubernetes_cluster_role_binding" "kyverno_background_secret_manager" {
|
||||||
|
metadata {
|
||||||
|
name = "kyverno:background-controller:secret-manager"
|
||||||
|
}
|
||||||
|
role_ref {
|
||||||
|
api_group = "rbac.authorization.k8s.io"
|
||||||
|
kind = "ClusterRole"
|
||||||
|
name = kubernetes_cluster_role.kyverno_secret_manager.metadata[0].name
|
||||||
|
}
|
||||||
|
subject {
|
||||||
|
kind = "ServiceAccount"
|
||||||
|
name = "kyverno-background-controller"
|
||||||
|
namespace = "kyverno"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
resource "kubernetes_manifest" "sync_registry_credentials" {
|
resource "kubernetes_manifest" "sync_registry_credentials" {
|
||||||
manifest = {
|
manifest = {
|
||||||
apiVersion = "kyverno.io/v1"
|
apiVersion = "kyverno.io/v1"
|
||||||
|
|
@ -79,5 +126,7 @@ resource "kubernetes_manifest" "sync_registry_credentials" {
|
||||||
depends_on = [
|
depends_on = [
|
||||||
helm_release.kyverno,
|
helm_release.kyverno,
|
||||||
kubernetes_secret.registry_credentials,
|
kubernetes_secret.registry_credentials,
|
||||||
|
kubernetes_cluster_role_binding.kyverno_admission_secret_manager,
|
||||||
|
kubernetes_cluster_role_binding.kyverno_background_secret_manager,
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue