Helm kullanarak Kubernetes Dağıtımı ile tümleştirme

Kubernetes'te barındırılan uygulamalar, Uygulama Yapılandırması sağlayıcı kitaplığını kullanarak Uygulama Yapılandırması'daki verilere erişebilir. Uygulama Yapılandırması sağlayıcısı, uygulamaların yeniden dağıtım olmadan dinamik yapılandırmaya sahip olabilmesi için yerleşik önbelleğe alma ve yenileme özelliklerine sahiptir. Uygulamanızı güncelleştirmemeyi tercih ediyorsanız bu öğreticide, dağıtım aracılığıyla Helm kullanarak Uygulama Yapılandırması'den Kubernetes'inize nasıl veri getirilmediği gösterilir. Bu şekilde uygulamanız Kubernetes değişkenlerinden ve gizli dizilerinden yapılandırmaya erişmeye devam edebilir. Uygulamanızın yeni yapılandırma değişikliklerini almasını istediğinizde Helm yükseltmesini çalıştırırsınız.

İpucu

Azure Uygulaması Yapılandırmasına erişmek için Bkz. Kubernetes'te barındırılan iş yükleri için seçenekler.

Helm, Kubernetes'te çalışan uygulamaları tanımlamak, yüklemek ve yükseltmek için bir yol sağlar. Helm grafiği, Kubernetes uygulamasının bir örneğini oluşturmak için gereken bilgileri içerir. Yapılandırma, grafiğin dışında, values.yaml adlı bir dosyada depolanır.

Yayın işlemi sırasında Helm, uygulamayı çalıştırmak için grafiği uygun yapılandırmayla birleştirir. Örneğin, values.yaml dosyasında tanımlanan değişkenler, çalışan kapsayıcıların içinde ortam değişkenleri olarak başvurulabilir. Helm, veri birimleri olarak bağlanabilen veya ortam değişkenleri olarak kullanıma sunulan Kubernetes Gizli Dizilerinin oluşturulmasını da destekler.

Helm'i çalıştırırken komut satırında ek YAML tabanlı yapılandırma dosyaları sağlayarak values.yaml dosyasında depolanan değerleri geçersiz kılabilirsiniz. Azure Uygulaması Yapılandırması, yapılandırma değerlerini YAML dosyalarına dışarı aktarmayı destekler. Bu dışarı aktarma özelliğini dağıtımınızla tümleştirmek, Kubernetes uygulamalarınızın Uygulama Yapılandırması'de depolanan yapılandırma değerlerinden yararlanmasına olanak tanır.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Helm kullanarak Kubernetes'e uygulama dağıtırken Uygulama Yapılandırması değerlerini kullanın.
  • Uygulama Yapılandırması'da Key Vault başvurularını temel alan bir Kubernetes Gizli Dizisi oluşturun.

Bu öğreticide, Helm ile Kubernetes'i yönetmeye ilişkin temel bilgiler varsayılır. Azure Kubernetes Service'te Helm ile uygulama yükleme hakkında daha fazla bilgi edinin.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir tane oluşturun.
  • Azure CLI'yi yükleme (sürüm 2.4.0 veya üzeri)
  • Helm'i yükleme (sürüm 2.14.0 veya üzeri)
  • bir Uygulama Yapılandırması mağazası. Mağaza oluşturma.
  • Kubernetes kümesi.

Anahtar-değer ekleme

aşağıdaki anahtar değerlerini Uygulama Yapılandırması deposuna ekleyin ve Etiket ve İçerik Türü değerlerini varsayılan değerleriyle bırakın. Azure portalını veya CLI'yı kullanarak bir depoya anahtar-değer ekleme hakkında daha fazla bilgi için Anahtar-değer oluşturma bölümüne gidin.

Anahtar Değer
settings.color Beyaz
settings.message Azure Uygulaması Yapılandırmasından Veriler

Uygulama Yapılandırması key vault başvurusu ekleme

  1. Azure portalında oturum açın ve Key Vault'aParola ve myPassword değeriyle bir gizli dizi ekleyin.

  2. Önceki bölümde oluşturduğunuz Uygulama Yapılandırması mağaza örneğini seçin.

  3. Yapılandırma Gezgini'ne tıklayın.

  4. + Anahtar kasası başvurusu oluştur'u>seçin ve aşağıdaki değerleri belirtin:

    • Anahtar: secrets.password öğesini seçin.
    • Etiket: Bu değeri boş bırakın.
    • Abonelik, Kaynak grubu ve Anahtar kasası: Önceki adımda oluşturduğunuz anahtar kasasına karşılık gelen değerleri girin.
    • Gizli dizi: Önceki bölümde oluşturduğunuz Parola adlı gizli diziyi seçin.

Helm grafiği oluşturma

İlk olarak, aşağıdaki komutu kullanarak örnek bir Helm grafiği oluşturun:

helm create mychart

Helm, aşağıda gösterilen yapıya sahip mychart adlı yeni bir dizin oluşturur.

İpucu

Daha fazla bilgi edinmek için bu grafikler kılavuzunu izleyin.

mychart
|-- Chart.yaml
|-- charts
|-- templates
|   |-- NOTES.txt
|   |-- _helpers.tpl
|   |-- deployment.yaml
|   |-- ingress.yaml
|   `-- service.yaml
`-- values.yaml

Ardından deployment.yaml dosyasının spec:template:spec:containers bölümünü güncelleştirin. Aşağıdaki kod parçacığı kapsayıcıya iki ortam değişkeni ekler. Dağıtım zamanında değerlerini dinamik olarak ayarlayacaksınız.

env:
- name: Color
    value: {{ .Values.settings.color }}
- name: Message
    value: {{ .Values.settings.message }}

Güncelleştirmeden sonraki deployment.yaml dosyasının tamamı aşağıdaki gibi görünmelidir.

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: {{ include "mychart.fullname" . }}
  labels:
    app.kubernetes.io/name: {{ include "mychart.name" . }}
    helm.sh/chart: {{ include "mychart.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app.kubernetes.io/name: {{ include "mychart.name" . }}
      app.kubernetes.io/instance: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app.kubernetes.io/name: {{ include "mychart.name" . }}
        app.kubernetes.io/instance: {{ .Release.Name }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          env:
            - name: Color
              value: {{ .Values.settings.color }}
            - name: Message
              value: {{ .Values.settings.message }}
          ports:
            - name: http
              containerPort: 80
              protocol: TCP
          livenessProbe:
            httpGet:
              path: /
              port: http
          readinessProbe:
            httpGet:
              path: /
              port: http
          resources:
{{ toYaml .Values.resources | indent 12 }}
    {{- with .Values.nodeSelector }}
      nodeSelector:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.affinity }}
      affinity:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.tolerations }}
      tolerations:
{{ toYaml . | indent 8 }}
    {{- end }}

Hassas verileri Kubernetes Gizli Dizileri olarak depolamak için templates klasörünün altına secrets.yaml dosyası ekleyin.

İpucu

Kubernetes Gizli Dizilerini kullanma hakkında daha fazla bilgi edinin.

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: {{ .Values.secrets.password | b64enc }}

Son olarak, values.yaml dosyasını aşağıdaki içerikle güncelleştirerek isteğe bağlı olarak deployment.yaml ve secrets.yaml dosyalarında başvurulan yapılandırma ayarlarının ve gizli dizilerin varsayılan değerlerini sağlayın. Uygulama Yapılandırması alınan yapılandırmayla gerçek değerlerinin üzerine yazılır.

# settings will be overwritten by App Configuration
settings:
  color: red
  message: myMessage

Helm yüklemesinde Uygulama Yapılandırması yapılandırmayı geçirme

İlk olarak, yapılandırmayı Uygulama Yapılandırması'den myConfig.yaml dosyasına indirin. Yalnızca ayarlarla başlayan anahtarları indirmek için bir anahtar filtresi kullanın.. Sizin örneğinizde anahtar filtresi Key Vault başvurularının anahtarlarını dışlamak için yeterli değilse, bunları dışlamak için --skip-keyvault bağımsız değişkenini kullanabilirsiniz.

İpucu

Dışarı aktarma komutu hakkında daha fazla bilgi edinin.

az appconfig kv export -n myAppConfiguration -d file --path myConfig.yaml --key "settings.*"  --separator "." --format yaml

Ardından, gizli dizileri mySecrets.yaml adlı bir dosyaya indirin. --resolve-keyvault komut satırı bağımsız değişkeni, Key Vault'taki gerçek değerleri alarak Key Vault başvurularını çözümler. Bu komutu ilgili Key Vault'a erişim izinlerine sahip kimlik bilgileriyle çalıştırmanız gerekir.

Uyarı

Bu dosya hassas bilgiler içerdiğinden, dosyayı dikkatli tutun ve artık gerekli olmadığında temizleyin.

az appconfig kv export -n myAppConfiguration -d file --path mySecrets.yaml --key "secrets.*" --separator "." --resolve-keyvault --format yaml

Oluşturduğunuz iki yapılandırma dosyasını geçirmek için helm yükseltmesinin -f bağımsız değişkenini kullanın. values.yaml dosyasında tanımlanan yapılandırma değerlerini Uygulama Yapılandırması dışarı aktarılan değerlerle geçersiz kılar.

helm upgrade --install -f myConfig.yaml -f mySecrets.yaml "example" ./mychart

Sabit anahtar-değerlerini geçirmek için helm yükseltmesi için --set bağımsız değişkenini de kullanabilirsiniz. --set bağımsız değişkenini kullanmak, hassas verilerin diskte kalıcı olmasını önlemenin iyi bir yoludur.

$secrets = az appconfig kv list -n myAppConfiguration --key "secrets.*" --resolve-keyvault --query "[*].{name:key, value:value}" | ConvertFrom-Json

foreach ($secret in $secrets) {
  $keyvalues += $secret.name + "=" + $secret.value + ","
}

if ($keyvalues){
  $keyvalues = $keyvalues.TrimEnd(',')
  helm upgrade --install --set $keyvalues "example" ./mychart
}
else{
  helm upgrade --install "example" ./mychart
}

Kubernetes Panosu'na erişerek yapılandırmaların ve gizli dizilerin başarıyla ayarlandığını doğrulayın. Uygulama Yapılandırması renk ve ileti değerlerinin kapsayıcının ortam değişkenlerine doldurulduğunu göreceksiniz.

Quickstart app launch local

Uygulama Yapılandırması'da Key Vault başvurusu olarak depolanan bir gizli dizi, parola da Kubernetes Gizli Dizilerine eklendi.

Screenshot that highlights the password in the Data section.

Kaynakları temizleme

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki adımlar

Bu öğreticide, Helm ile kubernetes dağıtımında kullanılacak Azure Uygulaması Yapılandırma verilerini dışarı aktarmıştınız. Uygulama Yapılandırması kullanma hakkında daha fazla bilgi edinmek için Azure CLI örneklerine geçin.