{"id":3316,"date":"2020-03-16T20:22:10","date_gmt":"2020-03-16T19:22:10","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=3316"},"modified":"2020-03-16T20:22:10","modified_gmt":"2020-03-16T19:22:10","slug":"using-internal-nginx-ingress-with-azure-kubernetes-service","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/using-internal-nginx-ingress-with-azure-kubernetes-service\/","title":{"rendered":"Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131"},"content":{"rendered":"<p>Bildi\u011fimiz gibi <em>Kubernetes<\/em> i\u00e7erisinde bir ingress controller&#8217;a, tek bir <em>IP<\/em> adresi \u00fczerinden trafi\u011fi route edebilmek ve <em>TLS<\/em> termination i\u015flemleri i\u00e7in ihtiya\u00e7 duymaktay\u0131z.<\/p>\n<p>G\u00fcn\u00fcm\u00fczde bu tarz i\u015flemler i\u00e7in \u00e7e\u015fitli <strong>Service Mesh<\/strong> teknolojileri tercih ediliyor olsada, sistemin t\u00fcr\u00fcne ve boyutuna g\u00f6re baz\u0131 durumlarda da <strong>Nginx<\/strong> gibi bir ingress controller&#8217;a ihtiya\u00e7 duymaktay\u0131z. \u00d6rne\u011fin, sistem fazla kompleks de\u011filse veya <em>Kubernetes<\/em> cluster&#8217;\u0131 i\u00e7erisinde bir\u00a0 <a href=\"https:\/\/gokhan-gokalp.com\/migrate-existing-net-applications-to-azure-kubernetes-service\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Windows<\/strong> node<\/a> kullan\u0131yorsak.<\/p>\n<blockquote><p>Sidecar proxy&#8217;ler problem olabiliyor.<\/p><\/blockquote>\n<p>Bu makale kapsam\u0131nda ise <em>Azure Kubernetes Service <\/em>(<em>AKS<\/em>) \u00fczerinde, d\u0131\u015far\u0131ya public olarak expose olmayan, internal bir nginx ingress controller&#8217;\u0131 (open-source olan) nas\u0131l kullanabiliriz konusuna de\u011finmeye \u00e7al\u0131\u015faca\u011f\u0131m.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2020\/03\/nginx-general.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-3320 lazyload\" data-src=\"\/wp-content\/uploads\/2020\/03\/nginx-general.jpg\" alt=\"\" width=\"1017\" height=\"629\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/nginx-general.jpg 1017w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/nginx-general-300x186.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/nginx-general-768x475.jpg 768w\" data-sizes=\"(max-width: 1017px) 100vw, 1017px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1017px; --smush-placeholder-aspect-ratio: 1017\/629;\" \/><\/a><\/p>\n<h3>Gereksinimler:<\/h3>\n<ul>\n<li>G\u00fcncel bir Azure <em>CLI<\/em><\/li>\n<li>Azure Kubernetes Service<\/li>\n<li>Helm 3 <em>CLI<\/em><\/li>\n<\/ul>\n<blockquote><p><em><strong>NOT<\/strong><\/em>: <em>AKS<\/em> kurulumu ile ilgili ad\u0131mlar\u0131, <em><a href=\"https:\/\/gokhan-gokalp.com\/migrate-existing-net-applications-to-azure-kubernetes-service\/\" target=\"_blank\" rel=\"noopener noreferrer\">buradan<\/a><\/em> takip edebilirsiniz.<\/p><\/blockquote>\n<h2>Nginx Ingress Controller&#8217;\u0131n\u0131n Kurulumu<\/h2>\n<p><em>AKS<\/em> cluster&#8217;\u0131 i\u00e7erisinde nginx controller&#8217;\u0131n\u0131n kurulum i\u015flemini ger\u00e7ekle\u015ftirebilmek i\u00e7in, a\u015fa\u011f\u0131daki komut sat\u0131r\u0131ndan yararlanaca\u011f\u0131z.<\/p>\n<pre class=\"lang:default decode:true\">kubectl create namespace ingress-private\r\n\r\nhelm install my-ingress stable\/nginx-ingress \\\r\n    --namespace=ingress-private \\\r\n    --set rbac.create=true \\\r\n    --set controller.service.loadBalancerIP=\"10.240.2.2\" \\\r\n    --set controller.replicaCount=2 \\\r\n    --set controller.nodeSelector.\"beta\\.kubernetes\\.io\/os\"=linux \\\r\n    --set defaultBackend.nodeSelector.\"beta\\.kubernetes\\.io\\\/os\"=linux \\\r\n    --set controller.service.annotations.\"service\\.beta\\.kubernetes\\.io\/azure-load-balancer-internal\"=\"true\"<\/pre>\n<p>Burada dikkat etmemiz gereken bir ka\u00e7 nokta bulunmaktad\u0131r.<\/p>\n<ul>\n<li>E\u011fer <em>AKS<\/em> cluster&#8217;\u0131 i\u00e7erisinde <em>RBAC<\/em> enable de\u011filse, &#8220;false&#8221; olarak set etmemiz gerekmektedir.<\/li>\n<li>Ingress controller&#8217;\u0131 dynamic bir public <em>IP<\/em> ile olu\u015fturmamak i\u00e7in load balancer <em>IP<\/em> adresi olarak, virtual network i\u00e7erisinden kullan\u0131lmayan bir internal <em>IP<\/em> adresi sa\u011flamam\u0131z gerekmektedir.<\/li>\n<li>Ard\u0131ndan internal bir load balancer olaca\u011f\u0131n\u0131 belirtebilmek i\u00e7in, <em>service.beta.kubernetes.io\/azure-load-balancer-internal: &#8220;true&#8221;<\/em> annotation&#8217;\u0131n\u0131 eklememiz gerekmektedir.<\/li>\n<li>Ayr\u0131ca <strong>nginx ingress controller<\/strong>&#8216;\u0131n ve <strong>nginx ingress default backend<\/strong>&#8216;inin &#8220;<em>linux<\/em>&#8221; node&#8217;u \u00fczerinde scheduled edilmesi gerekmektedir. Bu sebeple gerekli node selector tan\u0131mlamalar\u0131n\u0131n &#8220;linux&#8221; olarak yap\u0131lmas\u0131 gerekmektedir.<\/li>\n<\/ul>\n<p>\u015eimdi komut sat\u0131r\u0131n\u0131 \u00e7al\u0131\u015ft\u0131ral\u0131m ve nginx ingress controller&#8217;\u0131n\u0131n &#8220;<em>EXTERNAL-IP<\/em>&#8221; adresi alma i\u015flemini a\u015fa\u011f\u0131daki gibi bekleyelim.<\/p>\n<pre class=\"lang:default decode:true\">kubectl get svc -n ingress-private -w<\/pre>\n<p><a href=\"\/wp-content\/uploads\/2020\/03\/nginx-ingress-wait.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-3323 lazyload\" data-src=\"\/wp-content\/uploads\/2020\/03\/nginx-ingress-wait.jpg\" alt=\"\" width=\"956\" height=\"130\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/nginx-ingress-wait.jpg 956w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/nginx-ingress-wait-300x41.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/nginx-ingress-wait-768x104.jpg 768w\" data-sizes=\"(max-width: 956px) 100vw, 956px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 956px; --smush-placeholder-aspect-ratio: 956\/130;\" \/><\/a><\/p>\n<h2>Helm Chart&#8217;n Olu\u015fturulmas\u0131<\/h2>\n<p><em>AKS<\/em> cluster&#8217;\u0131na \u00f6rnek bir uygulama deploy edebilmek ve ard\u0131ndan test edebilmek i\u00e7in, a\u015fa\u011f\u0131daki gibi &#8220;<em>mytodoapp-api<\/em>&#8221; ad\u0131nda bir helm chart olu\u015ftural\u0131m.<\/p>\n<pre class=\"lang:default decode:true\">helm create mytodoapp-api<\/pre>\n<p>Ard\u0131ndan chart&#8217;\u0131n i\u00e7indeki &#8220;<em>values.yaml<\/em>&#8221; dosyas\u0131n\u0131 a\u00e7al\u0131m ve a\u015fa\u011f\u0131daki gibi g\u00fcncelleyelim.<\/p>\n<pre class=\"lang:default decode:true \"># Default values for mytodoapp-api.\r\n# This is a YAML-formatted file.\r\n# Declare variables to be passed into your templates.\r\n\r\nreplicaCount: 1\r\n\r\nimage:\r\n  repository: mytodotestregistry.azurecr.io\/mytodoapp-api:01\r\n  pullPolicy: IfNotPresent\r\n\r\nimagePullSecrets: []\r\nnameOverride: \"\"\r\nfullnameOverride: \"\"\r\n\r\nserviceAccount:\r\n  # Specifies whether a service account should be created\r\n  create: true\r\n  # Annotations to add to the service account\r\n  annotations: {}\r\n  # The name of the service account to use.\r\n  # If not set and create is true, a name is generated using the fullname template\r\n  name:\r\n\r\npodSecurityContext: {}\r\n  # fsGroup: 2000\r\n\r\nsecurityContext: {}\r\n  # capabilities:\r\n  #   drop:\r\n  #   - ALL\r\n  # readOnlyRootFilesystem: true\r\n  # runAsNonRoot: true\r\n  # runAsUser: 1000\r\n\r\nservice:\r\n  type: ClusterIP\r\n  port: 80\r\n\r\ningress:\r\n  enabled: true\r\n  annotations: {\r\n    kubernetes.io\/ingress.class: \"nginx\",\r\n    nginx.ingress.kubernetes.io\/rewrite-target: \/$1\r\n  }\r\n  hosts:\r\n    - host:\r\n      paths:\r\n        - \/mytodoapp-api\/?(.*)\r\n  tls: []\r\n\r\nresources: {}\r\n  # We usually recommend not to specify default resources and to leave this as a conscious\r\n  # choice for the user. This also increases chances charts run on environments with little\r\n  # resources, such as Minikube. If you do want to specify resources, uncomment the following\r\n  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\r\n  # limits:\r\n  #   cpu: 100m\r\n  #   memory: 128Mi\r\n  # requests:\r\n  #   cpu: 100m\r\n  #   memory: 128Mi\r\n\r\nnodeSelector:\r\n  beta.kubernetes.io\/os: windows\r\n\r\ntolerations: []\r\n\r\naffinity: {}\r\n<\/pre>\n<p>Ben &#8220;<em>image.repository<\/em>&#8221; b\u00f6l\u00fcm\u00fcnde, \u00f6rnek ger\u00e7ekle\u015ftirebilmek i\u00e7in i\u00e7erisinde <em>ASP.NET Framework Web API<\/em> projesi i\u00e7eren bir <em>windows <\/em>container image&#8217;i kullanaca\u011f\u0131m\u0131 belirttim. Ard\u0131ndan &#8220;<em>nodeSelector<\/em>&#8221; b\u00f6l\u00fcm\u00fcnde ise, bu pod&#8217;un &#8220;<em>windows<\/em>&#8221; olan node i\u00e7erisinde scheduled edilebilmesi i\u00e7in gerekli olan tan\u0131mlamay\u0131 yapt\u0131m.<\/p>\n<p>Burada \u00f6nemli olan as\u0131l nokta ise, &#8220;<em>ingress<\/em>&#8221; ayarlar\u0131. Nginx&#8217;in otomatik olarak ingress&#8217;i bulabilmesi i\u00e7in, <em>kubernetes.io\/ingress.class: &#8220;nginx&#8221;<\/em> annotation&#8217;\u0131n\u0131 eklememiz gerekmektedir. Ayr\u0131ca path forwarding i\u00e7in de, &#8220;<em>rewrite-target<\/em>&#8221; annotation&#8217;\u0131.<\/p>\n<p>Annotation&#8217;lar\u0131 ekledikten sonra ise &#8220;<em>paths<\/em>&#8221; k\u0131sm\u0131nda, uygulaman\u0131n y\u00f6nlendirilmesini istedi\u011fimiz path&#8217;i belirtiyoruz.<\/p>\n<p>\u015eimdi a\u015fa\u011f\u0131daki gibi olu\u015fturmu\u015f oldu\u011fumuz bu chart&#8217;\u0131 deploy edelim.<\/p>\n<pre class=\"lang:default decode:true\">helm install mytodoapp-api mytodoapp-api<\/pre>\n<p><a href=\"\/wp-content\/uploads\/2020\/03\/helm-install-1.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-3333 lazyload\" data-src=\"\/wp-content\/uploads\/2020\/03\/helm-install-1.jpg\" alt=\"\" width=\"824\" height=\"176\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/helm-install-1.jpg 824w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/helm-install-1-300x64.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/helm-install-1-768x164.jpg 768w\" data-sizes=\"(max-width: 824px) 100vw, 824px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 824px; --smush-placeholder-aspect-ratio: 824\/176;\" \/><\/a><\/p>\n<h2>Test Edelim<\/h2>\n<p>\u015eimdi test i\u015flemini ger\u00e7ekle\u015ftirebilmek i\u00e7in <em>nginx ingress controller<\/em>&#8216;\u0131n &#8220;80&#8221; port&#8217;unu, local &#8220;8080&#8221; port&#8217;una a\u015fa\u011f\u0131daki gibi y\u00f6nlendirelim.<\/p>\n<pre class=\"lang:default decode:true\">kubectl port-forward svc\/my-ingress-nginx-ingress-controller -n ingress-private 8080:80<\/pre>\n<p><a href=\"\/wp-content\/uploads\/2020\/03\/expose-port-2.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-3335 lazyload\" data-src=\"\/wp-content\/uploads\/2020\/03\/expose-port-2.jpg\" alt=\"\" width=\"974\" height=\"162\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/expose-port-2.jpg 974w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/expose-port-2-300x50.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/expose-port-2-768x128.jpg 768w\" data-sizes=\"(max-width: 974px) 100vw, 974px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 974px; --smush-placeholder-aspect-ratio: 974\/162;\" \/><\/a><\/p>\n<p>Ard\u0131ndan path y\u00f6nlendirmesini test edebilmek i\u00e7in, helm i\u00e7erisinde \u00f6rnek <em>API<\/em> i\u00e7in belirlemi\u015f oldu\u011fumuz path&#8217;e a\u015fa\u011f\u0131daki gibi bir request atal\u0131m.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2020\/03\/test-load-balancing.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-3336 lazyload\" data-src=\"\/wp-content\/uploads\/2020\/03\/test-load-balancing.jpg\" alt=\"\" width=\"820\" height=\"101\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/test-load-balancing.jpg 820w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/test-load-balancing-300x37.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/test-load-balancing-768x95.jpg 768w\" data-sizes=\"(max-width: 820px) 100vw, 820px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 820px; --smush-placeholder-aspect-ratio: 820\/101;\" \/><\/a><\/p>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi <em>nginx ingress controller<\/em>, ilgili request&#8217;i tan\u0131mlam\u0131\u015f oldu\u011fumuz <em>API<\/em>&#8216;a y\u00f6nlendirme i\u015flemini ger\u00e7ekle\u015ftirmi\u015ftir.<\/p>\n<h2>Referanslar<\/h2>\n<blockquote><p><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/aks\/ingress-internal-ip?WT.mc_id=DT-MVP-5003382\" target=\"_blank\" rel=\"noopener noreferrer\"><em>https:\/\/docs.microsoft.com\/en-us\/azure\/aks\/ingress-internal-ip?WT.mc_id=DT-MVP-5003382<\/em><\/a><br \/>\n<a href=\"https:\/\/github.com\/helm\/charts\/tree\/master\/stable\/nginx-ingress\" target=\"_blank\" rel=\"noopener noreferrer\"><em>https:\/\/github.com\/helm\/charts\/tree\/master\/stable\/nginx-ingress<\/em><\/a><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Bildi\u011fimiz gibi Kubernetes i\u00e7erisinde bir ingress controller&#8217;a, tek bir IP adresi \u00fczerinden trafi\u011fi route edebilmek ve TLS termination i\u015flemleri i\u00e7in ihtiya\u00e7 duymaktay\u0131z. G\u00fcn\u00fcm\u00fczde bu tarz i\u015flemler i\u00e7in \u00e7e\u015fitli Service Mesh teknolojileri tercih ediliyor olsada, sistemin t\u00fcr\u00fcne ve boyutuna g\u00f6re baz\u0131 durumlarda da Nginx gibi bir&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/using-internal-nginx-ingress-with-azure-kubernetes-service\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":3341,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[418,434],"tags":[572,571,570,573,440,568,569],"class_list":["post-3316","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-containerizing","tag-net-core-nginx","tag-aks-nginx","tag-azure-kubernetes","tag-helm-nginx-ingress","tag-kubernetes","tag-nginx","tag-nginx-ingress-controller","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":true,"content":true,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-16T19:22:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/internal-ingress-wall.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131\",\"datePublished\":\"2020-03-16T19:22:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/\"},\"wordCount\":1150,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"image\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/internal-ingress-wall.jpg\",\"keywords\":[\".net core nginx\",\"aks nginx\",\"azure kubernetes\",\"helm nginx ingress\",\"kubernetes\",\"nginx\",\"nginx ingress controller\"],\"articleSection\":[\"Azure\",\"Containerizing\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/\",\"name\":\"Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/internal-ingress-wall.jpg\",\"datePublished\":\"2020-03-16T19:22:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/#primaryimage\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/internal-ingress-wall.jpg\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/internal-ingress-wall.jpg\",\"width\":1200,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/using-internal-nginx-ingress-with-azure-kubernetes-service\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Internal Nginx Ingress with Azure Kubernetes Service\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776775506\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776775506\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776775506\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776775506\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/","og_locale":"tr_TR","og_type":"article","og_title":"Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2020-03-16T19:22:10+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/internal-ingress-wall.jpg","type":"image\/jpeg"}],"author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131","datePublished":"2020-03-16T19:22:10+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/"},"wordCount":1150,"commentCount":1,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"image":{"@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/#primaryimage"},"thumbnailUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/internal-ingress-wall.jpg","keywords":[".net core nginx","aks nginx","azure kubernetes","helm nginx ingress","kubernetes","nginx","nginx ingress controller"],"articleSection":["Azure","Containerizing"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/","url":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/","name":"Azure Kubernetes Service ile Internal Nginx Ingress Kullan\u0131m\u0131 - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/#primaryimage"},"image":{"@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/#primaryimage"},"thumbnailUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/internal-ingress-wall.jpg","datePublished":"2020-03-16T19:22:10+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/#primaryimage","url":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/internal-ingress-wall.jpg","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2020\/03\/internal-ingress-wall.jpg","width":1200,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/using-internal-nginx-ingress-with-azure-kubernetes-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"Using Internal Nginx Ingress with Azure Kubernetes Service"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776775506","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776775506","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776775506","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776775506"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/3316","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=3316"}],"version-history":[{"count":5,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/3316\/revisions"}],"predecessor-version":[{"id":3347,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/3316\/revisions\/3347"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media\/3341"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=3316"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=3316"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=3316"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}