Hello everyone, in this post I will show you a workaround to overcome an issue in old version of Operator SDK (v0.18.2 to be precise).

We are writing our own Operators for lots of platform projects. When we start writing operators there are version v0.18.2. And we developed several operators in this version.

The issue occurs while scraping operator’s metrics when you run an operator more than one pod.

Your metrics look like this:


https://developers.redhat.com/blog/wp-content/uploads/2020/04/Operator-SDK-logo.jpg

Kubernetes sağladığı çeşitli extension pointler sayesinde farklı yönlerden extend edilebilir bir yapıya sahiptir. Örneğin network tarafında CNI aracı olarak isterseniz Calico, isterseniz Cilium kullanabilirsiniz. Veya storage için CSI implementasyonu olan herhangi bir ürünü kullanabilirsiniz.

Ya da ihtiyaçlarınız doğrultusunda custom schedular yazabilirsiniz. Aynı anda iki farklı schedular kullanabilir veya mevcut scheduları tamamen yenisiyle değiştirebilirsiniz.

Bunların dışında Kubernetes üzerinde kendi typelarınızı yani custom resourcelarınızı oluşturabilirsiniz. Oluşturduğunuz bu CR’lar ile çeşitli işlemler yaptırabilirsiniz.

Örneğin Istio, custom resourcelar aracılığı ile Envoy Proxy konfigürasyonlarını yapıyor.

Biz de Trendyol Platform Ekibi olarak CR’lar ile çalışan uygulamalar geliştiriyoruz. …


Dapr, abstraction ve decouplingin vücut bulmuş halidir :)

Trendyol Platform ekibi olarak geliştirdiğimiz çözüm ve yaklaşımlar ile mantalite ve implementasyon açısından benzerliğinden ötürü bir süredir Dapr projesini yakından takip ediyorum. Bu yazımda da sizlerle Dapr hakkında edindiğim bilgileri paylaşacağım.

Dapr Nedir

Dapr, Microsoft tarafından Go dili ile geliştirilen ve sitesinde “distributed application runtime” olarak tanımlanan open source bir projedir.

Kubernetes ortamında çalışan microserviceler için çeşitli runtime ihtiyaçlarını sidecar yaklaşımı ile karşılayan, uygulamalarımızın cross cutting ihtiyaçlarını process seviyesine taşıyan bir çözümdür.

Dapr’ın temel amacı belirli problemleri farklı dil ve teknolojiler için tekrar tekrar çözmeden, çözümü tek bir process olarak implement edip uygulamaların hizmetine…


Merhabalar, bu yazıda Trendyol Platform ekibi olarak geliştirmesini yaptığımız cross cluster service authorization projesinde Istio’nun sağladığı özellikleri kullanarak oluşturduğumuz yapının geliştirme sürecini anlatmaya çalışacağım.

Yazı içerisinde bahsedilecek konu başlıkları:

Service Identification

Servisler birbirleriyle haberleşirken, kendilerine gelen istekleri authorize edebilmeleri için, isteğin kimliğini (kimin tarafından gönderildiğini) bilmesi gerekiyor.

Bu noktada servisler için identification ihtiyacı ortaya çıkıyor.

Spiffe ID

Spiffe (Secure Production Identity Framework for Everyone) kendisini “dinamik ortamlarda yazılım sistemlerini güvenli bir şekilde tanımlamak için belirlenmiş bir takım open source standartlar” olarak tanıtıyor.

Bu noktada Istio da Spiffe…


Gelişen ve büyüyen bir microservice ekosistemine sahipseniz servisleriniz arasında güvenli iletişimi sağlamak gün geçtikçe zorlayıcı bir hal alabilir. Dışarıdan gelecek tehditlere karşı alınan önlemlerin yanısıra iç networkte de bazı güvenlik önlemleri bulunması gerekiyor. Örneğin container runtime ve container orchestration araçları kullanıyorsanız alınacak önlemlerin bunlardan bağımsız düşülmemesi gerekiyor.

E-ticaret domainini baz alacak olursak, bir kullanıcıya indirim tanımlanmasını sağlayan servisin herkes tarafından erişime açık olması istenilen bir durum olmayacaktır. Harici erişimlerin sınırlandırılması gereken servis sayısı arttıkça bu durumu yönetmek için global bir çözüm sağlama ihtiyacı ortaya çıkmış oldu.

Bu yazımızda da Trendyol Platform ekibi olarak cross-cluster service authorization sorunu için nasıl bir…


How to become a production ready developer?

In these days sticking to a single technology / programming language / tool is not enough for a developer. There are so many things to consider, especially in the microservice’s world.

This might make developers freak.

CNCF Landscape and Developers — source

As a software developer in my daily job I am handling different stuffs like designin architecture, writing code, testing it, writing CI/CD pipelines, creating alerts according to logs or events, monitoring the app etc..

In this article I am aiming to enlighten the new developers or the ones who does not involved in multi-tech stack.

What is…


Service discovery ile haberleşen microserviceler arası caching sorununu nasıl çözdük?

Selamlar, bu yazıda Trendyol Platform ekibi olarak geliştirdiğimiz bir uygulama olan Sidecache projesinden, geliştirme sürecinde edindiğimiz tecrübelerden ve bu projeye olan ihtiyaçtan bahsedeceğim.

Genel itibari ile anlatacaklarım aşağıdaki konu başlıkları etrafında olacaktır.

  • Neden böyle bir projeye ihtiyaç duyduk?
  • Bu proje ile neyi amaçladık?
  • Sidecar Pattern nedir?
  • Istio ile cache requestlerini yönlendirmeyi nasıl çözdük?
  • Cache backendi olarak ne kullandık?
  • Golang ile cache proxy geliştirmesini nasıl yaptık?
  • Geliştirme sonrası metrikler

Neden Bu Projeye İhtiyaç Duyduk?

Platform ekibi olarak geliştirdiğimiz yeni service discovery altyapısı ile microserviceler arası haberleşmede harici load balancerları aradan çıkarttık.

Servisler arası load balancerların aradan çıkmasının avantajları olduğu gibi kaybettiğimiz bir kabiliyetimiz de oldu, bu…


As a software developer I feel happy when I contribute to community. It is an opportunity to improve your development skills and learning new things. It is both educative and entertaining process. There are so little things that satisfies as much as an accepted pull request :)

Becoming an open source contributor is a dream for some developers. If you are a new developer or never made a contribution before and want to become a contributor, in this post I will give several suggestions for you.

Where To Start

Well, let’s assume that you found a project on Github and you want to…


In this post I will explain how to configure RBAC in kubernetes. We will configure RBAC both with kubectl and yaml definitions.

What is RBAC

In kubernetes there are several authorization mechanism like RBAC, ABAC.

With RBAC we can add constraints to access kubernetes resources. For example we can give permission to listing pods for specific namespace to a ServiceAccount and prevent it to delete any resource. We can do it for a specific namespace or cluster wide as well.

Key points of RBAC

There are 3 important concept in RBAC.

  • Subject : Users, groups or service accounts.
  • Resources : Kubernetes API objects which we will operate…

Selamlar, bu yazımda sizlere geliştirme yaparken referans aldığım kitaplardan bazılarını paylaşacağım.

Yazılım geliştiriciler olarak yaptığımız iş çok derin ve dalgalı bir okyanusta batmayacak gemiler oluşturmak diyebilirim. Bu geminin aynı zamanda çok hızlı gidebilmesi, zorlu hava şartlarına dayanabilmesi, fazlaca yükü kaldırabilmesi hatta yeri geldiğinde uçabilmesi ise uğraştığımız challangelar arasında :)

Bizler için bilginin kaynağı olarak bu zamana kadar geliştirilmiş kaynak kodlar, başkalarının tecrübeleri ve kitaplar bulunuyor.

Hazır hepimiz evlere kapanmış geliştirmelerimizi sürdürüyorken, trafikte harcadığımız zamanı yeni bilgiler öğrenerek değerlendirmemiz için güzel bir fırsat.

Kubernetes

Emre Savcı

Sr. Software Engineer @Trendyol & Software Development Enthusiast | Interested in Go&Java DDD, CQRS, Event Sourcing, Scalability. Open Source Contributor.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store