-
-
Notifications
You must be signed in to change notification settings - Fork 322
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Terraform modules for CoreDNS, Cilium, and flannel
* With the new component system, these components can be managed independent from the cluster and rolled or edited in advanced ways
- Loading branch information
Showing
24 changed files
with
1,513 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
resource "kubernetes_cluster_role_binding" "operator" { | ||
metadata { | ||
name = "cilium-operator" | ||
} | ||
|
||
role_ref { | ||
api_group = "rbac.authorization.k8s.io" | ||
kind = "ClusterRole" | ||
name = "cilium-operator" | ||
} | ||
|
||
subject { | ||
kind = "ServiceAccount" | ||
name = "cilium-operator" | ||
namespace = "kube-system" | ||
} | ||
} | ||
|
||
resource "kubernetes_cluster_role_binding" "agent" { | ||
metadata { | ||
name = "cilium-agent" | ||
} | ||
|
||
role_ref { | ||
api_group = "rbac.authorization.k8s.io" | ||
kind = "ClusterRole" | ||
name = "cilium-agent" | ||
} | ||
|
||
subject { | ||
kind = "ServiceAccount" | ||
name = "cilium-agent" | ||
namespace = "kube-system" | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
resource "kubernetes_cluster_role" "operator" { | ||
metadata { | ||
name = "cilium-operator" | ||
} | ||
|
||
# detect and restart [core|kube]dns pods on startup | ||
rule { | ||
verbs = ["get", "list", "watch", "delete"] | ||
api_groups = [""] | ||
resources = ["pods"] | ||
} | ||
|
||
rule { | ||
verbs = ["list", "watch"] | ||
api_groups = [""] | ||
resources = ["nodes"] | ||
} | ||
|
||
rule { | ||
verbs = ["patch"] | ||
api_groups = [""] | ||
resources = ["nodes", "nodes/status"] | ||
} | ||
|
||
rule { | ||
verbs = ["get", "list", "watch"] | ||
api_groups = ["discovery.k8s.io"] | ||
resources = ["endpointslices"] | ||
} | ||
|
||
rule { | ||
verbs = ["get", "list", "watch"] | ||
api_groups = [""] | ||
resources = ["services"] | ||
} | ||
|
||
# Perform LB IP allocation for BGP | ||
rule { | ||
verbs = ["update"] | ||
api_groups = [""] | ||
resources = ["services/status"] | ||
} | ||
|
||
# Perform the translation of a CNP that contains `ToGroup` to its endpoints | ||
rule { | ||
verbs = ["get", "list", "watch"] | ||
api_groups = [""] | ||
resources = ["services", "endpoints", "namespaces"] | ||
} | ||
|
||
rule { | ||
verbs = ["*"] | ||
api_groups = ["cilium.io"] | ||
resources = ["ciliumnetworkpolicies", "ciliumnetworkpolicies/status", "ciliumnetworkpolicies/finalizers", "ciliumclusterwidenetworkpolicies", "ciliumclusterwidenetworkpolicies/status", "ciliumclusterwidenetworkpolicies/finalizers", "ciliumendpoints", "ciliumendpoints/status", "ciliumendpoints/finalizers", "ciliumnodes", "ciliumnodes/status", "ciliumnodes/finalizers", "ciliumidentities", "ciliumidentities/status", "ciliumidentities/finalizers", "ciliumlocalredirectpolicies", "ciliumlocalredirectpolicies/status", "ciliumlocalredirectpolicies/finalizers", "ciliumendpointslices", "ciliumloadbalancerippools", "ciliumloadbalancerippools/status", "ciliumcidrgroups", "ciliuml2announcementpolicies", "ciliuml2announcementpolicies/status", "ciliumpodippools"] | ||
} | ||
|
||
rule { | ||
verbs = ["create", "get", "list", "update", "watch"] | ||
api_groups = ["apiextensions.k8s.io"] | ||
resources = ["customresourcedefinitions"] | ||
} | ||
|
||
# Cilium leader elects if among multiple operator replicas | ||
rule { | ||
verbs = ["create", "get", "update"] | ||
api_groups = ["coordination.k8s.io"] | ||
resources = ["leases"] | ||
} | ||
} | ||
|
||
resource "kubernetes_cluster_role" "agent" { | ||
metadata { | ||
name = "cilium-agent" | ||
} | ||
|
||
rule { | ||
verbs = ["get", "list", "watch"] | ||
api_groups = ["networking.k8s.io"] | ||
resources = ["networkpolicies"] | ||
} | ||
|
||
rule { | ||
verbs = ["get", "list", "watch"] | ||
api_groups = ["discovery.k8s.io"] | ||
resources = ["endpointslices"] | ||
} | ||
|
||
rule { | ||
verbs = ["get", "list", "watch"] | ||
api_groups = [""] | ||
resources = ["namespaces", "services", "pods", "endpoints", "nodes"] | ||
} | ||
|
||
rule { | ||
verbs = ["patch"] | ||
api_groups = [""] | ||
resources = ["nodes/status"] | ||
} | ||
|
||
rule { | ||
verbs = ["create", "get", "list", "watch", "update"] | ||
api_groups = ["apiextensions.k8s.io"] | ||
resources = ["customresourcedefinitions"] | ||
} | ||
|
||
rule { | ||
verbs = ["*"] | ||
api_groups = ["cilium.io"] | ||
resources = ["ciliumnetworkpolicies", "ciliumnetworkpolicies/status", "ciliumclusterwidenetworkpolicies", "ciliumclusterwidenetworkpolicies/status", "ciliumendpoints", "ciliumendpoints/status", "ciliumnodes", "ciliumnodes/status", "ciliumidentities", "ciliumidentities/status", "ciliumlocalredirectpolicies", "ciliumlocalredirectpolicies/status", "ciliumegressnatpolicies", "ciliumendpointslices", "ciliumcidrgroups", "ciliuml2announcementpolicies", "ciliuml2announcementpolicies/status", "ciliumpodippools"] | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,196 @@ | ||
resource "kubernetes_config_map" "cilium" { | ||
metadata { | ||
name = "cilium" | ||
namespace = "kube-system" | ||
} | ||
data = { | ||
# Identity allocation mode selects how identities are shared between cilium | ||
# nodes by setting how they are stored. The options are "crd" or "kvstore". | ||
# - "crd" stores identities in kubernetes as CRDs (custom resource definition). | ||
# These can be queried with: | ||
# kubectl get ciliumid | ||
# - "kvstore" stores identities in a kvstore, etcd or consul, that is | ||
# configured below. Cilium versions before 1.6 supported only the kvstore | ||
# backend. Upgrades from these older cilium versions should continue using | ||
# the kvstore by commenting out the identity-allocation-mode below, or | ||
# setting it to "kvstore". | ||
identity-allocation-mode = "crd" | ||
cilium-endpoint-gc-interval = "5m0s" | ||
nodes-gc-interval = "5m0s" | ||
|
||
# If you want to run cilium in debug mode change this value to true | ||
debug = "false" | ||
# The agent can be put into the following three policy enforcement modes | ||
# default, always and never. | ||
# https://docs.cilium.io/en/latest/policy/intro/#policy-enforcement-modes | ||
enable-policy = "default" | ||
|
||
# Prometheus | ||
enable-metrics = "true" | ||
prometheus-serve-addr = ":9962" | ||
operator-prometheus-serve-addr = ":9963" | ||
proxy-prometheus-port = "9964" # envoy | ||
|
||
# Enable IPv4 addressing. If enabled, all endpoints are allocated an IPv4 | ||
# address. | ||
enable-ipv4 = "true" | ||
|
||
# Enable IPv6 addressing. If enabled, all endpoints are allocated an IPv6 | ||
# address. | ||
enable-ipv6 = "false" | ||
|
||
# Enable probing for a more efficient clock source for the BPF datapath | ||
enable-bpf-clock-probe = "true" | ||
|
||
# Enable use of transparent proxying mechanisms (Linux 5.7+) | ||
enable-bpf-tproxy = "false" | ||
|
||
# If you want cilium monitor to aggregate tracing for packets, set this level | ||
# to "low", "medium", or "maximum". The higher the level, the less packets | ||
# that will be seen in monitor output. | ||
monitor-aggregation = "medium" | ||
|
||
# The monitor aggregation interval governs the typical time between monitor | ||
# notification events for each allowed connection. | ||
# | ||
# Only effective when monitor aggregation is set to "medium" or higher. | ||
monitor-aggregation-interval = "5s" | ||
|
||
# The monitor aggregation flags determine which TCP flags which, upon the | ||
# first observation, cause monitor notifications to be generated. | ||
# | ||
# Only effective when monitor aggregation is set to "medium" or higher. | ||
monitor-aggregation-flags = "all" | ||
|
||
# Specifies the ratio (0.0-1.0) of total system memory to use for dynamic | ||
# sizing of the TCP CT, non-TCP CT, NAT and policy BPF maps. | ||
bpf-map-dynamic-size-ratio = "0.0025" | ||
# bpf-policy-map-max specified the maximum number of entries in endpoint | ||
# policy map (per endpoint) | ||
bpf-policy-map-max = "16384" | ||
# bpf-lb-map-max specifies the maximum number of entries in bpf lb service, | ||
# backend and affinity maps. | ||
bpf-lb-map-max = "65536" | ||
|
||
# Pre-allocation of map entries allows per-packet latency to be reduced, at | ||
# the expense of up-front memory allocation for the entries in the maps. The | ||
# default value below will minimize memory usage in the default installation; | ||
# users who are sensitive to latency may consider setting this to "true". | ||
# | ||
# This option was introduced in Cilium 1.4. Cilium 1.3 and earlier ignore | ||
# this option and behave as though it is set to "true". | ||
# | ||
# If this value is modified, then during the next Cilium startup the restore | ||
# of existing endpoints and tracking of ongoing connections may be disrupted. | ||
# As a result, reply packets may be dropped and the load-balancing decisions | ||
# for established connections may change. | ||
# | ||
# If this option is set to "false" during an upgrade from 1.3 or earlier to | ||
# 1.4 or later, then it may cause one-time disruptions during the upgrade. | ||
preallocate-bpf-maps = "false" | ||
|
||
# Name of the cluster. Only relevant when building a mesh of clusters. | ||
cluster-name = "default" | ||
# Unique ID of the cluster. Must be unique across all conneted clusters and | ||
# in the range of 1 and 255. Only relevant when building a mesh of clusters. | ||
cluster-id = "0" | ||
|
||
# Encapsulation mode for communication between nodes | ||
# Possible values: | ||
# - disabled | ||
# - vxlan (default) | ||
# - geneve | ||
routing-mode = "tunnel" | ||
tunnel = "vxlan" | ||
# Enables L7 proxy for L7 policy enforcement and visibility | ||
enable-l7-proxy = "true" | ||
|
||
auto-direct-node-routes = "false" | ||
|
||
# enableXTSocketFallback enables the fallback compatibility solution | ||
# when the xt_socket kernel module is missing and it is needed for | ||
# the datapath L7 redirection to work properly. See documentation | ||
# for details on when this can be disabled: | ||
# http://docs.cilium.io/en/latest/install/system_requirements/#admin-kernel-version. | ||
enable-xt-socket-fallback = "true" | ||
|
||
# installIptablesRules enables installation of iptables rules to allow for | ||
# TPROXY (L7 proxy injection), itpables based masquerading and compatibility | ||
# with kube-proxy. See documentation for details on when this can be | ||
# disabled. | ||
install-iptables-rules = "true" | ||
|
||
# masquerade traffic leaving the node destined for outside | ||
enable-ipv4-masquerade = "true" | ||
enable-ipv6-masquerade = "false" | ||
|
||
# bpfMasquerade enables masquerading with BPF instead of iptables | ||
enable-bpf-masquerade = "true" | ||
|
||
# kube-proxy | ||
kube-proxy-replacement = "false" | ||
kube-proxy-replacement-healthz-bind-address = "" | ||
enable-session-affinity = "true" | ||
|
||
# ClusterIPs from host namespace | ||
bpf-lb-sock = "true" | ||
# ClusterIPs from external nodes | ||
bpf-lb-external-clusterip = "true" | ||
|
||
# NodePort | ||
enable-node-port = "true" | ||
enable-health-check-nodeport = "false" | ||
|
||
# ExternalIPs | ||
enable-external-ips = "true" | ||
|
||
# HostPort | ||
enable-host-port = "true" | ||
|
||
# IPAM | ||
ipam = "cluster-pool" | ||
disable-cnp-status-updates = "true" | ||
cluster-pool-ipv4-cidr = "${var.pod_cidr}" | ||
cluster-pool-ipv4-mask-size = "24" | ||
|
||
# Health | ||
agent-health-port = "9876" | ||
enable-health-checking = "true" | ||
enable-endpoint-health-checking = "true" | ||
|
||
# Identity | ||
enable-well-known-identities = "false" | ||
enable-remote-node-identity = "true" | ||
|
||
# Hubble server | ||
enable-hubble = var.enable_hubble | ||
hubble-disable-tls = "false" | ||
hubble-listen-address = ":4244" | ||
hubble-socket-path = "/var/run/cilium/hubble.sock" | ||
hubble-tls-client-ca-files = "/var/lib/cilium/tls/hubble/client-ca.crt" | ||
hubble-tls-cert-file = "/var/lib/cilium/tls/hubble/server.crt" | ||
hubble-tls-key-file = "/var/lib/cilium/tls/hubble/server.key" | ||
hubble-export-file-max-backups = "5" | ||
hubble-export-file-max-size-mb = "10" | ||
|
||
# Hubble metrics | ||
hubble-metrics-server = ":9965" | ||
hubble-metrics = "dns drop tcp flow port-distribution icmp httpV2" | ||
enable-hubble-open-metrics = "false" | ||
|
||
|
||
# Misc | ||
enable-bandwidth-manager = "false" | ||
enable-local-redirect-policy = "false" | ||
policy-audit-mode = "false" | ||
operator-api-serve-addr = "127.0.0.1:9234" | ||
enable-l2-neigh-discovery = "true" | ||
enable-k8s-terminating-endpoint = "true" | ||
enable-k8s-networkpolicy = "true" | ||
external-envoy-proxy = "false" | ||
write-cni-conf-when-ready = "/host/etc/cni/net.d/05-cilium.conflist" | ||
cni-exclusive = "true" | ||
cni-log-file = "/var/run/cilium/cilium-cni.log" | ||
} | ||
} | ||
|
Oops, something went wrong.