Ana sayfa » AWS EKS’de SSL Termination Nedir? Nasıl Yapılır?

AWS EKS’de SSL Termination Nedir? Nasıl Yapılır?

by devopsbiri
SSL-Termination

Bu yazımda bir proje için kullandığım Aws Eks’de SSL Termination işleminden bahsedeceğim. Hadi hızlı bir şekilde nasıl yapıyoruz ona bakalım!

İlk olarak AWS Management Console ekranına giriyoruz, daha sonra Certificate Manager > Request a certificate > Request a public certificate seçip Request a certificate butonuna tıklayarak devam ediyoruz. Aşağıdaki gibi ekran bizi karşılayacak, daha sonra domain adresimizi girerek Next diyoruz.

Bir sonraki adımda aşağıdaki gibi doğrulama metodunu seçmemiz gerekiyor. AWS bizim için aşağıda göründüğü gibi 2 tane seçenek sunuyor.

DNS validation ve Email validation.

Email validation yönteminden biraz bahsedeyim. Bu yöntemi seçtiğinizde AWS tarafından aşağıdaki email adreslerine doğrulama linkleri gönderiliyor. Bu yöntemi kullanacaksanız aşağıdaki email adreslerinin açık olup olmadığını kontrol etmenizde fayda var.

  • administrator@your_domain_name
  • hostmaster@your_domain_name
  • postmaster@your_domain_name
  • webmaster@your_domain_name
  • admin@your_domain_name

Ben DNS validation metonu seçeceğim, seçimi işaretleyip Next diyoruz.

Next dedikten sonra aşağıdaki gibi Tag kısmına geliyoruz (Burayı direkt geçebilirsiniz, zorunlu bir alan değil) ben Name tag’ini verip ilerliyorum.

Aşağıdaki ekranda yaptığımız adımların ufak bir özetini görüyoruz:

Confirm and request diyerek son adıma geliyoruz. Aşağıda göründüğü gibi domain adresimize tanımlamamız gereken bir CNAME tanımı var. Bunu domain sağlayıcımıza gidip tanımlayalım:

CNAME tanımını aşağıdaki gibi yaptım:

Ve Aws tarafında Continue diyerek ilerliyoruz. Her şeyi düzgün yaptığınızda aşağıdaki gibi görünecek:

Şimdi Kubernetes’e basit bir deployment yapalım; bunun için basit bir deployment ve service hazırladım. İlk olarak deploy edeceğimiz docker image’nı hazırlayalım. Template için basit bir html template buldum, bunu nginx alpine üzerinde ayağa kaldıracağız.

NOT : Tüm dosyaları yazının sonunda toplu olarak paylaşacağım.

Dockerfile

FROM nginx:alpine
COPY . /usr/share/nginx/html
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
EXPOSE 80

Nginx Conf

server {
    listen 80;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Deployment Yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ssltermination
  namespace: work
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ssltermination
  template:
    metadata:
      labels:
        app: ssltermination
    spec:
      containers:
        - name: ssltermination
          image: oguzzarci/awseksssltermination:0.1
          ports:
            - containerPort: 80
          resources:
            limits:
              cpu: 50m
              memory: 64Mi
            requests:
              cpu: 50m
              memory: 64Mi
---
apiVersion: v1
kind: Service
metadata:
  name: ssltermination
  namespace: work
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: CERT_ARN  
spec:
  type: LoadBalancer
  selector:
    app: ssltermination
  ports:
    - protocol: TCP
      port: 443
      targetPort: 80

CERT_ARN : Oluşturduğumuz sertifikanın ARN (Amazon Resource Names) değerini alıp deployment yaml dosyamızda CERT_ARN kısmına ekleyeceğiz:

Evet artık sona doğru çok yaklaştık 🙂
Docker build alıp deployment yapalım:

Docker image’nı pushladım. Daha sonra deployment yaml ile deployment’ı yaptım.

Aws bizim için bir classic loadbalancer oluşturacak, hadi gidip görelim:

Yukarıda gördüğümüz gibi oluşturduğumuz sertifikayı loadbalancer’a ekledi. Şimdi bir CNAME ekleyip loadbalancer’a yönlendirelim:

Artık her şey hazır.
https://oguz.teknodice.com adresine gittiğimizde bağlantımızın güvenli olduğunu görmemiz gerekiyor.

Evet ilk girdiğimizde bizi biricik oğlum karşılıyor 🙂

Gördüğümüz gibi adresimizde SSL var. Son olarak sertifikamıza bakalım:

Bir sonraki yazıda görüşmek üzere 🙂

Yazılan dosyalara GITHUB repomdan ulaşabilirsiniz.

İlgini Çekebilir

0 0 votes
Article Rating
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x