Yansıtma için Kaynakların Seçilmesi¶
Wallarm eBPF çözümü trafik yansısı üzerinde çalışır ve trafik yansısının kapsamı üzerinde kontrol sağlar. Kubernetes namespace, pod ve container bazında paket yansısı oluşturmanıza olanak tanır. Bu kılavuz, seçim sürecini nasıl yöneteceğinizi açıklar.
4.10 sürümü ile sınırlıdır
Wallarm eBPF tabanlı çözüm şu anda yalnızca Wallarm Node 4.10 içinde sunulan özellikleri desteklemektedir.
Paketleri yansıtma için seçmek amacıyla kullanılabilecek birkaç yöntem vardır:
-
Belirli bir namespace içindeki pod'ların tüm trafiğini yansıtmak için ilgili namespace'e
wallarm-mirroretiketini uygulayın. -
Belirli bir pod'un trafiğini yansıtmak için
mirror.wallarm.com/enabledaçıklamasını (annotation) uygulayın. -
Wallarm Helm chart'ının
values.yamldosyasındakiconfig.agent.mirror.filtersayarını yapılandırın. Bu yapılandırma ile yansıtmayı namespace, pod, container veya node seviyelerinde etkinleştirebilirsiniz.
Etiket kullanarak bir namespace için yansıtma¶
Yansıtmayı namespace seviyesinde kontrol etmek için, hedef Kubernetes namespace'ine wallarm-mirror etiketini uygulayın ve değerini enabled veya disabled olarak ayarlayın, örn.:
Açıklama kullanarak bir pod için yansıtma¶
Yansıtmayı pod seviyesinde kontrol etmek için mirror.wallarm.com/enabled açıklamasını kullanın ve değerini true veya false olarak ayarlayın, örn.:
kubectl patch deployment <DEPLOYMENT_NAME> -n <NAMESPACE> -p '{"spec": {"template":{"metadata":{"annotations":{"mirror.wallarm.com/enabled":"true"}}}} }'
values.yaml kullanarak bir namespace, pod, container veya node için yansıtma¶
values.yaml dosyasındaki config.agent.mirror.filters bloğu, trafik yansıtma seviyeleri üzerinde ince ayar yapmanıza olanak sağlar. Bu yaklaşım aşağıdaki varlıklar için yansıtmayı kontrol etmenizi sağlar:
-
Namespace -
filters.namespaceparametresi ile -
Pod - pod etiketleriyle
filters.pod_labelsveya pod açıklamalarıylafilters.pod_annotationsparametresi ile -
Node -
filters.node_nameparametresi ile -
Container -
filters.container_nameparametresi ile
Bir namespace seçme¶
Belirli bir namespace için trafik yansıtmayı etkinleştirmek için adını filters.namespace parametresinde belirtin. Örneğin, my-namespace Kubernetes namespace'i için trafik yansıtmayı etkinleştirmek üzere:
Bir pod seçme¶
Trafik yansıtma için bir pod'u, pod'un etiketleri ve açıklamalarıyla seçebilirsiniz. Şöyle yapabilirsiniz:
Belirli bir etikete sahip pod için trafik yansıtmayı etkinleştirmek üzere pod_labels parametresini kullanın.
Örneğin, environment: production etiketine sahip bir pod için trafik yansıtmayı etkinleştirmek üzere:
Pod'u tanımlamak için birden fazla etiket gerekiyorsa, birkaç etiket belirtebilirsiniz. Örneğin, aşağıdaki yapılandırma, environment: production AND (team: backend OR team: ops) etiketlerine sahip pod'ların trafiğini Wallarm eBPF'in yansıtıp analiz etmesini sağlar:
Belirli bir açıklamaya sahip pod için trafik yansıtmayı etkinleştirmek üzere pod_annotations parametresini kullanın.
Örneğin, app.kubernetes.io/name: myapp açıklamasına sahip bir pod için trafik yansıtmayı etkinleştirmek üzere:
Pod'u tanımlamak için birden fazla açıklama gerekiyorsa, birkaç açıklama belirtebilirsiniz. Örneğin, aşağıdaki yapılandırma, şu açıklamalara sahip pod'ların trafiğini Wallarm eBPF'in yansıtıp analiz etmesini sağlar:
Bir node seçme¶
Belirli bir Kubernetes node'u için trafik yansıtmayı etkinleştirmek üzere, node adını filters.node_name parametresinde belirtin. Örneğin, my-node Kubernetes node'u için trafik yansıtmayı etkinleştirmek üzere:
Bir container seçme¶
Belirli bir Kubernetes container'ı için trafik yansıtmayı etkinleştirmek üzere, container adını filters.container_name parametresinde belirtin. Örneğin, my-container Kubernetes container'ı için trafik yansıtmayı etkinleştirmek üzere:
Değişiklikleri uygulama¶
values.yaml dosyasını değiştirir ve dağıtılmış chart'ınızı yükseltmek (upgrade) isterseniz, aşağıdaki komutu kullanın:
Etiketler, açıklamalar ve filtreler arasındaki öncelikler¶
Birden çok seçim yöntemi kullanıldığında ve yansıtma üst düzeyde etkinleştirildiğinde, daha düşük yapılandırma seviyesi önceliklidir.
Yansıtma üst düzeyde devre dışı bırakılırsa, üst düzeyin trafik yansıtmayı devre dışı bırakmada önceliği olduğundan, alt düzey ayarlar hiç uygulanmaz.
Aynı nesne farklı yollarla yansıtma için seçilirse (örn., Wallarm pod'unun açıklaması ve values.yaml içindeki filtreler bloğu kullanılarak), öncelik Wallarm pod'unun açıklamasındadır.
Örnekler¶
Etiketler, açıklamalar ve filtreler, trafik yansıtma ve analiz seviyesini ayarlamada yüksek derecede esneklik sağlar. Ancak birbirleriyle çakışabilirler. Birlikte nasıl çalıştıklarını anlamanıza yardımcı olacak bazı yapılandırma örnekleri aşağıdadır.
values.yaml içinde çok seviyeli yapılandırma¶
Şu values.yaml yapılandırmasını göz önünde bulundurun:
config:
agent:
mirror:
filters:
- namespace: "default"
- namespace: 'my-namespace'
pod_labels:
environment: 'production'
team: 'backend,ops'
pod_annotations:
app.kubernetes.io/name: 'myapp'
Ayarlanan filtreler şu şekilde uygulanır:
namespace: default OR (namespace: my-namespace AND environment: production AND (team: backend
OR team: ops) AND app.kubernetes.io/name: myapp)
Namespace etiketlerini, pod açıklamalarını ve values.yaml filtrelerini karıştırma¶
| Yapılandırma | Sonuç |
|---|---|
| Namespace yansıtılmaz |
| Pod yansıtılmaz |
| Pod yansıtılmaz |
| Namespace yansıtılmaz |
| Pod yansıtılmaz |