added day33 and day34

This commit is contained in:
kolaynurdan 2023-07-11 00:25:38 +03:00
parent 8bb877b85b
commit 75d9333e8a
2 changed files with 368 additions and 0 deletions

180
2022/tr/Days/day33.md Normal file
View File

@ -0,0 +1,180 @@
## Microsoft Azure Ag(Network) Modelleri + Azure Yonetimi
Bugün Microsoft Azure'nun kuruluşunun ve 12. yıl dönümünün kutlandığı bir gün! (1 Şubat 2022) Neyse ki, Microsoft Azure'daki ağ modellerini ve Azure için bazı yönetim seçeneklerini ele alacağız. Şu ana kadar yalnızca Azure portalını kullandık, ancak platformdaki kaynaklarımızı yönetmek ve oluşturmak için başka alanlar olduğunu da belirttik.
## Azure Network(Ag) Modelleri
### Sanal Aglar(Virtual Networks)
- Sanal Network, Azure'da oluşturulan bir yapıdır.
- Bir sanal ağın bir veya daha fazla IP aralığı vardır.
- Sanal ağlar bir bölge içinde bir abonelikte bulunur.
- Sanal ağlarda, ağ aralığını bölmek için sanal alt ağlar oluşturulur.
- Sanal makineler sanal alt ağlara yerleştirilir.
- Bir sanal ağın içindeki tüm sanal makineler birbirleriyle iletişim kurabilir.
- Her bir Sanal Ağda 65.536 özel IP adresi kullanılabilir.
- Bir bölgeden çıkan trafiğin bedeli ödenir. (Bölgeden çıkan veri trafiği)
- IPv4 ve IPv6 desteklenir.
- IPv6, halka açık ve sanal ağlar içinde kullanılabilir.
Azure Virtual Networks, AWS VPC'lerine benzetilebilir. Ancak, dikkate alınması gereken bazı farklılıklar vardır:
- AWS'de varsayılan bir VNet (Virtual Network) otomatik olarak oluşturulurken, Azure'da ilk sanal ağınızı gereksinimlerinize göre oluşturmanız gerekmektedir.
- Azure'da, varsayılan olarak tüm sanal makinelerin internete NAT (Network Address Translation) erişimi vardır. Azure, AWS'deki NAT Gateway'leri gibi NAT ağ geçitleri kullanmaz.
- Azure'da, AWS'deki gibi özel veya genel alt ağ kavramı bulunmaz.
- Genel IP adresleri, Azure'da vNIC'ler veya Yük Dengeleyicilere atanabilen bir kaynaktır.
- Sanal Ağlar ve alt ağlar, kendi ACL'lerine (Erişim Kontrol Listelerine) sahiptir. Bu, alt ağ düzeyinde yetkilendirme yapmanızı sağlar.
- Azure'da alt ağlar, AWS'deki gibi her bir Kullanılabilirlik Bölgesi için değil, Kullanılabilirlik Bölgeleri arasında yayılabilir.
Ayrıca, Azure'da Sanal Ağ Eşlemesi (Virtual Network Peering) özelliği bulunur. Bu özellik, kiracılar ve bölgeler arasında sanal ağları Azure altyapısı kullanarak birbirine bağlama imkanı sağlar. Bu özellik varsayılan olarak geçişken değildir, ancak hub sanal ağında Azure Güvenlik Duvarı kullanarak etkinleştirilebilir. Sanal ağların bağlantılı ağa bağlanabilmesini sağlamak için geçiş noktası transit kullanılır ve bunun bir örneği olarak ExpressRoute ile Kurumsal Ağa bağlantı kurulabilir.
### Access Control(Erişim Kontrolü)
- Azure, Ağ Güvenlik Gruplarını (Network Security Groups - NSG) kullanır ve bunlar durumları korur.
- Kuralların oluşturulmasına ve daha sonra bir ağ güvenlik grubuna atanmasına izin verir.
- Ağ güvenlik grupları, alt ağlara veya sanal makineler (VM) üzerine uygulanır.
- Bir alt ağa uygulandığında, bunun bir "Kenar" cihazı olmadığı Virtual Machine NIC'inde hala uygulanan bir kuraldır.
![](Images/Day33_Cloud1.png)
- Kurallar, bir Ağ Güvenlik Grubunda birleştirilir.
- Önceliğe göre esnek yapılandırmalar mümkündür.
- Daha düşük öncelik numarası yüksek önceliği ifade eder.
- Çoğu mantık IP adresleri üzerinde kurulmuştur, ancak bazı etiketler ve etiketler de kullanılabilir.
| Description | Priority | Source Address | Source Port | Destination Address | Destination Port | Action |
| ---------------- | -------- | ------------------ | ----------- | ------------------- | ---------------- | ------ |
| Inbound 443 | 1005 | \* | \* | \* | 443 | Allow |
| ILB | 1010 | Azure LoadBalancer | \* | \* | 10000 | Allow |
| Deny All Inbound | 4000 | \* | \* | \* | \* | DENY |
Ayrıca, Uygulama Güvenlik Grupları (Application Security Groups - ASG) mevcuttur.
- NSG'ler büyüyen ortamlar için sürdürmesi zor olabilecek IP adresi aralıklarına odaklanırken,
- ASG'ler, farklı uygulama rolleri için gerçek isimlerin (Monikers) tanımlanmasına olanak sağlar (Web Sunucuları, Veritabanı sunucuları, WebApp1 vb.).
- Sanal Makine NIC'i bir veya daha fazla ASG üyesi yapılır.
ASG'ler daha sonra Ağ Güvenlik Gruplarındaki kurallarda kullanılabilir ve iletişim akışını kontrol etmek için NSG hizmet etiketleri gibi NSG özelliklerini kullanabilir.
| Action | Name | Source | Destination | Port |
| ------ | ------------------ | ---------- | ----------- | ------------ |
| Allow | AllowInternettoWeb | Internet | WebServers | 443(HTTPS) |
| Allow | AllowWebToApp | WebServers | AppServers | 443(HTTPS) |
| Allow | AllowAppToDB | AppServers | DbServers | 1443 (MSSQL) |
| Deny | DenyAllinbound | Any | Any | Any |
### Load Balancing(Yük Dengeleme)
Microsoft Azure, iki ayrı yük dengeleme çözümüne sahiptir (birinci taraf, Azure Marketplace'de üçüncü taraf seçenekler de mevcuttur). Her ikisi de dışarıya yönelik veya içerideki uç noktalarla çalışabilir.
- Yük Dengeleyici (Katman 4), karma-tabanlı dağıtım ve port yönlendirmeyi destekler.
- App Gateway (Katman 7), SSL dışa aktarımı, çerez tabanlı oturum tutma ve URL tabanlı içerik yönlendirmesi gibi özellikleri destekler.
Ayrıca, App Gateway ile isteğe bağlı olarak Web Uygulama Güvenlik Duvarı bileşenini kullanabilirsiniz.
## Azure Management Tools(Azure Yonetim Aracları)
Teorik zamanımızın çoğunu Azure Portal üzerinde dolaşarak geçirdik. Bir DevOps kültürünü ve sürecini takip etmek söz konusu olduğunda, özellikle dağıtım ile ilgili birçok görev API veya komut satırı aracılığıyla gerçekleştirilecektir. Azure ortamlarımızı otomatikleştirdiğimizde kullanılabilecek diğer yönetim araçlarından bazılarına da değinmek istedim.
### Azure Portal
Microsoft Azure Portal, komut satırı araçlarına alternatif olarak sunulan web tabanlı bir konsoldur. Azure Portal içinde aboneliklerinizi yönetebilirsiniz. Basit bir web uygulamasından karmaşık bulut dağıtımlarına kadar her şeyi oluşturabilir, yönetebilir ve izleyebilirsiniz. Portalda bulabileceğiniz diğer bir özellik de bu kırıntı izleri (breadcrumbs)dir. Daha önce belirtildiği gibi, JSON, tüm Azure Kaynaklarının temelini oluşturur. Özellikleri, hizmetleri ve işlevselliği anlamak için Portal'da başlayabilir, ardından otomatik iş akışlarınıza dahil etmek için altında yatan JSON'ı daha sonra anlayabilirsiniz.
![](Images/Day33_Cloud2.png)
Ayrıca Azure Önizleme portalı da bulunmaktadır. Bu portal, yeni ve yakında sunulacak hizmetleri ve geliştirmeleri görüntülemek ve test etmek için kullanılabilir.
![](Images/Day33_Cloud3.png)
### PowerShell
Azure PowerShell hakkında konuşmadan önce önce PowerShell'i tanıtmakta fayda var. PowerShell, görev otomasyonu ve yapılandırma yönetimi çerçevesi, bir komut satırı kabuğu ve bir betikleme dilidir. Bu, Linux bölümünde ele aldığımız kabuk betiklemeye benzetebiliriz. PowerShell ilk olarak Windows işletim sisteminde bulunuyordu, ancak şimdi çapraz platform destekli hale gelmiştir.
Azure PowerShell, Azure kaynaklarını doğrudan PowerShell komut satırından yönetmek için bir cmdlet kümesidir.
Aşağıdaki gibi görebiliriz ki, PowerShell komutu `Connect-AzAccount` kullanarak aboneliğinize bağlanabilirsiniz.
![](Images/Day33_Cloud4.png)
Ardından, Azure sanal makinelerle ilişkili belirli komutları bulmak isteseydik, aşağıdaki komutu çalıştırabilirdik. Bu PowerShell programlama dilini daha fazla öğrenmek ve anlamak için saatler harcayabilirsiniz.
![](Images/Day33_Cloud5.png)
Microsoft tarafından PowerShell ile başlamanız ve hizmetleri yapılandırmanız için harika başlangıç kılavuzları bulunmaktadır [burada](https://docs.microsoft.com/en-us/powershell/azure/get-started-azureps?view=azps-7.1.0)
### Visual Studio Code
Birçok kişi gibi, ve hepinizin gördüğü gibi benim tercih ettiğim IDE Visual Studio Code'dur.
Visual Studio Code, Windows, Linux ve macOS için Microsoft tarafından geliştirilen ücretsiz bir kaynak kodu düzenleyicisidir.
Aşağıda, Microsoft Azure ve içindeki hizmetlerle etkileşimde bulunmak için kullanabileceğiniz birçok entegrasyon ve aracın Visual Studio Code'a entegre edildiğini göreceksiniz.
![](Images/Day33_Cloud6.png)
### Cloud Shell
Azure Cloud Shell, Azure kaynaklarını yönetmek için etkileşimli, kimlik doğrulaması yapılmış, tarayıcı üzerinden erişilebilen bir kabuktur. Çalışma şeklinize en uygun kabuk deneyimini seçme esnekliği sağlar.
![](Images/Day33_Cloud7.png)
Aşağıdaki resimden, portal içinde Cloud Shell'i ilk başlattığımızda Bash ve PowerShell arasında seçim yapabileceğimizi görebilirsiniz.
![](Images/Day33_Cloud8.png)
Cloud Shell'i kullanmak için aboneliğinizde biraz depolama alanı sağlamanız gerekecektir.
Cloud Shell'i seçtiğinizde, geçici olarak bir makine oluşturulur. Bu makineler geçici olmasına rağmen dosyalarınız iki şekilde saklanır: bir disk görüntüsü ve bağlanmış bir dosya paylaşımı aracılığıyla.
![](Images/Day33_Cloud9.png)
- Cloud Shell runs on a temporary host provided on a per-session, per-user basis
- Cloud Shell times out after 20 minutes without interactive activity
- Cloud Shell requires an Azure file share to be mounted
- Cloud Shell uses the same Azure file share for both Bash and PowerShell
- Cloud Shell is assigned one machine per user account
- Cloud Shell persists $HOME using a 5-GB image held in your file share
- Permissions are set as a regular Linux user in Bash
The above was copied from [Cloud Shell Overview](https://docs.microsoft.com/en-us/azure/cloud-shell/overview)
### Azure CLI
Son olarak, Azure CLI hakkında konuşmak istiyorum. Azure CLI, Windows, Linux ve macOS üzerine kurulabilir. Kurulum yapıldıktan sonra `az` komutunu kullanarak diğer komutlarla Azure kaynaklarını oluşturabilir, güncelleyebilir, silebilir ve görüntüleyebilirsiniz.
Azure öğrenmeye başladığımda Azure PowerShell ve Azure CLI arasındaki farkı anlamakta biraz karışıklık yaşamıştım.
Bu konuda topluluktan bazı geri bildirimler almak isterim. Ancak benim gördüğüm şekilde Azure PowerShell, Windows PowerShell veya PowerShell Core'a (Diğer bazı işletim sistemlerinde de mevcut, ancak tümü değil) eklenen bir modüldür. Öte yandan, Azure CLI, Azure'a bağlanan ve bu komutları yürüten çapraz platform destekli bir komut satırı programıdır.
Her iki seçenek de farklı bir sözdizimine sahiptir, ancak gördüğüm ve yaptığım kadarıyla çok benzer görevleri yerine getirebilirler.
Örneğin, PowerShell'den bir sanal makine oluştururken `New-AzVM` cmdlet'ini kullanırken, Azure CLI'da `az VM create` komutunu kullanırsınız.
Daha önce sistemime Azure PowerShell modülünü yüklediğimi, ancak aynı zamanda PowerShell üzerinden çağrılabilen Azure CLI'nin de yüklendiğini görmüştünüz.
![](Images/Day33_Cloud10.png)
Buradaki önemli nokta, doğru aracı seçmektir. Azure otomasyon üzerine kuruludur. Portal içinde yaptığınız her eylem, kaynakları okumak, oluşturmak, değiştirmek veya silmek için bir yerlerde yürütülen kodlara dönüşür.
Azure CLI
- Çapraz platformda çalışan komut satırı arabirimidir ve Windows, macOS, Linux'e yüklenebilir.
- Windows PowerShell, Cmd, Bash ve diğer Unix kabuklarında çalışır.
Azure PowerShell
- Cross Platform'da çalışan bir PowerShell modülüdür ve Windows, macOS, Linux'ta çalışır.
- Windows PowerShell veya PowerShell gerektirir.
Eğer ortamınızda PowerShell kullanamıyorsanız ancak bash veya başka bir kabuk kullanabiliyorsanız, Azure CLI tercih edeceğiniz seçenek olacaktır.
Şimdiye kadar geçtiğimiz teorileri alıp bazı senaryolar oluşturacak ve Azure'da uygulamalar gerçekleştireceğiz.
## Kaynaklar
- [Hybrid Cloud and MultiCloud](https://www.youtube.com/watch?v=qkj5W98Xdvw)
- [Microsoft Azure Fundamentals](https://www.youtube.com/watch?v=NKEFWyqJ5XA&list=WL&index=130&t=12s)
- [Google Cloud Digital Leader Certification Course](https://www.youtube.com/watch?v=UGRDM86MBIQ&list=WL&index=131&t=10s)
- [AWS Basics for Beginners - Full Course](https://www.youtube.com/watch?v=ulprqHHWlng&t=5352s)
Gorusmek Uzere [Gun 34](day34.md)

188
2022/tr/Days/day34.md Normal file
View File

@ -0,0 +1,188 @@
## Microsoft Azure Hands-On Scenarios
Son 6 gün, Microsoft Azure ve genel olarak halka açık buluta odaklandı. Azure'nin temel yapı taşlarını anlamak için bu temelin biraz teorik bilgi içermesi gerekiyordu, ancak bu bilgi, diğer büyük bulut sağlayıcılarında da geçerli olacaktır.
Başlangıçta halka açık bulutun temel bilgisini edinmek ve en azından başlangıçta bir sağlayıcı seçmekten bahsettim. Farklı bulutlar arasında gidip gelirseniz, kolayca kaybolabileceğinizi düşünüyorum. Ancak bir tane seçtiğinizde temelleri anlarsınız ve bu temelleri anladığınızda diğer bulutlara geçmek ve öğrenmeyi hızlandırmak oldukça kolay olur.
Bu final oturumunda, Microsoft tarafından oluşturulan ve[AZ-104 Microsoft Azure Administrator](https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/) sınavına hazırlık için kullanılan bir referans olan bu sayfadan kendi uygulamalı senaryolarımı seçeceğim.
Şu anda ayrıntılı olarak ele almadığımız, Konteynerler ve Kubernetes gibi bazı konular burada bulunmaktadır, bu yüzden henüz oraya atlamak istemiyorum.
Daha önceki yazılarda, Modül 1, 2 ve 3'ün çoğunu oluşturduk.
### Virtual Networking
Following [Module 04](https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/Instructions/Labs/LAB_04-Implement_Virtual_Networking.html):
I went through the above and changed a few namings for #90DaysOfDevOps. I also instead of using the Cloud Shell went ahead and logged in with my new user created on previous days with the Azure CLI on my Windows machine.
You can do this using the `az login` which will open a browser and let you authenticate to your account.
I have then created a PowerShell script and some references from the module to use to build out some of the tasks below. You can find the associated files in this folder.
(Cloud\01VirtualNetworking)
Please make sure you change the file location in the script to suit your environment.
At this first stage, we have no virtual network or virtual machines created in our environment, I only have a cloud shell storage location configured in my resource group.
I first of all run my [PowerShell script](Cloud/01VirtualNetworking/Module4_90DaysOfDevOps.ps1)
![](Images/Day34_Cloud1.png)
- Task 1: Create and configure a virtual network
![](Images/Day34_Cloud2.png)
- Task 2: Deploy virtual machines into the virtual network
![](Images/Day34_Cloud3.png)
- Task 3: Configure private and public IP addresses of Azure VMs
![](Images/Day34_Cloud4.png)
- Task 4: Configure network security groups
![](Images/Day34_Cloud5.png)
![](Images/Day34_Cloud6.png)
- Task 5: Configure Azure DNS for internal name resolution
![](Images/Day34_Cloud7.png)
![](Images/Day34_Cloud8.png)
### Network Trafik Yönetimi
Takip edilerek [Modül 06](https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/Instructions/Labs/LAB_06-Implement_Network_Traffic_Management.html):
Sonraki adımda, bir öncekinden başlayarak kaynak grubumuza gittik ve kaynaklarımızı sildik. Kullanıcı hesabınızı yalnızca o kaynak grubuna erişime sahip olacak şekilde ayarlamamışsanız, modülü takip ederek adı `90Days*` olarak değiştirerek tüm kaynakları ve kaynak grubunu silebilirsiniz. Bu, aşağıdaki lablarda her bir işlemim için sürecim olacak.
Bu lab için, ayrıca aşağıdaki görevleri oluşturmak için PowerShell betiği ve modülden bazı referansları kullanarak ilgili dosyaları bu klasörde buldum.
(Cloud\02TrafficManagement)
- Task 1: Laboratuvar ortamının sağlanması
Oncelikle [PowerShell script](Cloud/02TrafficManagement/Mod06_90DaysOfDevOps.ps1) calıstırıyorum.
![](Images/Day34_Cloud9.png)
- Task 2: Hub ve spoke ağ topolojisinin yapılandırılması
![](Images/Day34_Cloud10.png)
- Task 3: Sanal ağ peering'inin geçirgenliğini test etme
90DaysOfDevOps grubumun Network Watcher'a erişimi olmadığı için bunun nedeni, Network Watcher'ların kaynak grubuna bağlı olmayan kaynaklardan biri olmasıdır. Bu nedenle, bu kullanıcı için RBAC'nin kapsandığı kaynak grubu değildir. 90DaysOfDevOps grubuna East US Network Watcher katkıda bulunan rolünü ekledim.
![](Images/Day34_Cloud11.png)
![](Images/Day34_Cloud12.png)
![](Images/Day34_Cloud13.png)
^ Bu, iki spoke sanal ağı birbirine bağlamadığımız için (sanal ağ peering geçişken değil) beklenen bir durumdur.
- Task 4: Hub ve spoke topolojisinde yönlendirme yapılandırması
Burada, hesabımın 90DaysOfDevOps grubu içindeki kullanıcı olarak komut çalıştıramamasıyla ilgili başka bir sorun yaşadım. Bunun nedenini anlamak için emin değilim, bu yüzden ana yönetici hesabıma geri döndüm. 90DaysOfDevOps grubu, 90DaysOfDevOps Kaynak Grubu'ndaki her şeyin sahibidir, bu yüzden VM içinde bir komut çalıştıramıyor olmamı anlamak isterim.
![](Images/Day34_Cloud14.png)
![](Images/Day34_Cloud15.png)
Daha sonra michael.cade@90DaysOfDevOps.com hesabıma geri döndüm ve bu bölümü tamamladım. Burada, aynı testi tekrar çalıştırıyoruz ancak bu kez sonuç ulaşılabilir olacak şekilde.
![](Images/Day34_Cloud16.png)
- Task 5: Azure Load Balancer Uygulama
![](Images/Day34_Cloud17.png)
![](Images/Day34_Cloud18.png)
- Task 6: Azure Uygulama Gateway Uygulama
![](Images/Day34_Cloud19.png)
![](Images/Day34_Cloud20.png)
### Azure Storage(Depolama)
Takip edilerek [Modül 07](https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/Instructions/Labs/LAB_07-Manage_Azure_Storage.html):
Bu lab için, ayrıca aşağıdaki görevleri oluşturmak için PowerShell betiği ve modülden bazı referansları kullanarak ilgili dosyaları bu klasörde buldum.
(Cloud\03Storage)
- Task 1: Laboratuvar ortamının sağlanması
Öncelikle [PowerShell script](Cloud/03Storage/Mod07_90DaysOfDeveOps.ps1) scriptini çalıştırıyorum.
![](Images/Day34_Cloud21.png)
- Task 2: Azure Depolama hesaplarının oluşturulması ve yapılandırılması
![](Images/Day34_Cloud22.png)
- Task 3: Blob depolamasını yönetme
![](Images/Day34_Cloud23.png)
- Task 4: Azure Depolama için kimlik doğrulama ve yetkilendirme yönetimi
![](Images/Day34_Cloud24.png)
![](Images/Day34_Cloud25.png)
Buna izin verilmesini beklerken biraz sabırsızdım, ancak sonunda çalıştı.
![](Images/Day34_Cloud26.png)
- Task 5: Azure Dosyalar paylaşımlarının oluşturulması ve yapılandırılması
Komut çalıştırma işleminde, michael.cade@90DaysOfDevOps.com ile çalışmıyordu, bu yüzden yönetici hesabımı kullandım.
![](Images/Day34_Cloud27.png)
![](Images/Day34_Cloud28.png)
![](Images/Day34_Cloud29.png)
- Task 6: Azure Depolama için network erişimini yönetme
![](Images/Day34_Cloud30.png)
### Serverless (Web Uygulamaları Uygulama)
Takip ederek [Modül 09a](https://microsoftlearning.github.io/AZ-104-MicrosoftAzureAdministrator/Instructions/Labs/LAB_09a-Implement_Web_Apps.html):
- Task 1: Bir Azure web uygulaması oluşturma
![](Images/Day34_Cloud31.png)
- Task 2: Bir aşama deployment slots oluşturma
![](Images/Day34_Cloud34.png)
- Task 3: Web uygulaması deployment ayarlarını yapılandırma
![](Images/Day34_Cloud33.png)
- Task 4: Kodu aşama deployment slots dağıtma
![](Images/Day34_Cloud32.png)
- Task 5: Aşama slots değiştirme
![](Images/Day34_Cloud35.png)
- Task 6: Azure web uygulamasının otomatik ölçeklendirmesini yapılandırma ve test etme
Bu senaryoda kullandığım scripti (Cloud/04Serverless) dizininde bulunabilir.
![](Images/Day34_Cloud36.png)
Bu, Microsoft Azure ve genel olarak halka açık bulut hakkındaki bölümü sonlandırıyor. Bu senaryolara saldırmak ve üzerlerinde çalışmak gerçekten eğlenceliydi, diyebilirim.
## Kaynaklar
- [Hybrid Cloud and MultiCloud](https://www.youtube.com/watch?v=qkj5W98Xdvw)
- [Microsoft Azure Fundamentals](https://www.youtube.com/watch?v=NKEFWyqJ5XA&list=WL&index=130&t=12s)
- [Google Cloud Digital Leader Certification Course](https://www.youtube.com/watch?v=UGRDM86MBIQ&list=WL&index=131&t=10s)
- [AWS Basics for Beginners - Full Course](https://www.youtube.com/watch?v=ulprqHHWlng&t=5352s)
Sonraki olarak, sürüm kontrol sistemlerine, özellikle de git'e ve kod deposu genel bakışlarına odaklanacağız ve tercih ettiğim seçenek olarak GitHub'ı seçeceğiz.
Gorusmek Uzere [Gun 35](day35.md)