Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Helm, Kubernetes için uygulama yaşam döngüsü yönetimini basitleştirmeye yardımcı olan bir paket yöneticisidir. Helm paketleri grafik olarak adlandırılır ve YAML yapılandırması ve şablon dosyalarından oluşur. Helm işleminin yürütülmesinin ardından grafikler, uygun uygulama yaşam döngüsü eylemlerini tetikleme amacıyla Kubernetes bildirim dosyalarına işlenir. Azure Operatör Hizmeti Yöneticisi (AOSM) ile en verimli tümleştirme için yayımcıların Helm grafikleri geliştirirken en iyi yöntemleri dikkate alması gerekir.
registryPath ve imagePullSecrets ile ilgili dikkat edilmesi gerekenler
Her Helm grafiği genellikle bir registryPath ve imagePullSecrets gerektirir. En yaygın olarak, yayımcı bu parametreleri values.yaml dosyasında kullanıma sunar. İlk başta AOSM, yayımcının bu değerleri kesin bir şekilde (eski yaklaşım) yönetmesine ve dağıtım sırasında uygun Azure değerleriyle değiştirilmelerine bağımlıdır. Zamanla, tüm yayıncıların bu değerlerin katı yönetimine kolayca uyamayacağı anlaşıldı. Bazı grafikler, her zaman karşılanmayan registryPath ve/veya imagePullSecrets'i koşullu değerlerin veya diğer değer kısıtlamalarının arkasında gizler. Bazı grafikler, registryPath ve/veya imagePullSecrets değerlerini dizi yerine beklenen adlandırılmış dize olarak bildirmez. Yayımcılardaki katı uyumluluk gereksinimlerini azaltmak için AOSM, injectArtifactStoreDetail ve küme kayıt defteri olmak üzere iki geliştirilmiş yöntem kullanıma sunulmuştur. Bu yeni yöntemler Helm paketinde görünen registryPath veya imagePullSecrets'e bağlı değildir. Bunun yerine, bu yöntemler düzgün Azure değerlerini doğrudan pod işlemlerine eklemek için bir web kancası kullanır.
registryPath ve imagePullSecrets için yöntem özeti
Üç yöntem de şu anda bu makalede açıklandığı gibi desteklenmektedir. Yayımcı, (ağ işlevi) NF ve kullanım örneği için en iyi seçeneği belirlemelidir.
Eski
- Yayımcının değiştirme için helm değerlerinde ve dağıtım şablonlarında registryPath ve imagePullSecrets parametrelerini parametreleştirmesini gerektirir.
- Görüntüler yayımcı Azure Container Registry'de (ACR) barındırılır.
InjectArtifactStoreDetail
- registryPath ve imagePullSecrets'i helm'e en az bağımlılık ile pod işlemlerine doğrudan eklemek için bir web kancası kullanır.
- Görüntüler hala yayımcı ACR'de barındırılıyor.
Küme Kayıt Defteri
- Helm bağımlılığı olmadan registryPath ve imagePullSecrets'i doğrudan pod işlemlerine eklemek için bir web kancası kullanır.
- Görüntüler yerel ağ fonksiyonu işleci (NFO) kümesi uzantısı kayıt defterinde barındırılır.
Not
Her üç durumda da AOSM, bir yayımcının şablonlarda hangi değerleri kullanıma sunarsa o değerler için Azure değerlerini değiştirmektedir. Tek fark değiştirme yöntemidir.
registryPath ve imagePullSecrets için eski gereksinimler
Azure Operatör Hizmet Yöneticisi (AOSM), Kapsayıcılı Ağ İşlevleri (CNF) dağıtmak için Ağ İşlev Yöneticisi (NFM) hizmetini kullanır. NFM, eski yöntemiyle Ağ İşlevi (NF) dağıtımı sırasında AOSM kapsayıcı registryPath ve imagePullSecrets değerlerini helm işlemiyle değiştirir.
Eski yöntemi kullanma
Aşağıdaki helm deployment
şablonda bir yayımcının registryPath ve imagePullSecrets'ı nasıl kullanıma sunması gerektiğine ilişkin bir örnek gösterilmektedir.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
{{- if .Values.global.imagePullSecrets }}
imagePullSecrets: {{ toYaml .Values.global.imagePullSecrets | nindent 8 }}
{{- end }}
containers:
- name: contosoapp
image:{{ .Values.global.registryPath }}/contosoapp:1.14.2
ports:
- containerPort: 80
Aşağıdaki values.yaml
şablonda, yayımcının registryPath ve imagePullSecretsvalue değerlerini nasıl sağlayabileceklerine ilişkin bir örnek gösterilmektedir.
global:
imagePullSecrets: []
registryPath: “”
Aşağıdaki values.schema.json
dosya, bir yayımcının registryPath ve imagePullSecretsvalue değerlerini nasıl kolayca tanımlayabileceğini gösteren bir örnek gösterir.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "StarterSchema",
"type": "object",
"required": ["global"],
"properties": {
"global" : {
"type": "object",
"properties": {
“registryPath”: {“type”: “string”},
“imagePullSecrets”: {“type”: “string”},
}
"required": [ "registryPath", "imagePullSecrets" ],
}
}
}
Aşağıda NFDV request payload
, bir yayımcının dağıtımda registryPath ve imagePullSecretsvalue değerlerini nasıl sağlayabileceklerine ilişkin bir örnek gösterilmektedir.
"registryValuesPaths": [ "global.registryPath" ],
"imagePullSecretsValuesPaths": [ "global.imagePullSecrets" ],
Not
- registryPath herhangi bir ön ek, örneğin
https://
veyaoci://
, olmadan ayarlanır. Gerekirse, yayımcının helm paketinde bir ön ek tanımlaması gerekir. - imagePullSecrets ve registryPath, NFDVersion oluşturma giriş adımında sağlanmalıdır.
Miras yöntemiyle ilgili diğer önemli noktalar
Publisher, eski yöntemi kullanırken aşağıdaki önerileri dikkate almalıdır:
- Dış kayıt defteri başvurularından kaçının
- El ile doğrulama gerçekleştirme
- Statik görüntü deposunun ve etiketlerin olduğundan emin olun
Harici kayıt defteri referanslarından kaçının
Kullanıcılar harici bir kayıt defterine referans yapmaktan kaçınmalıdır. Örneğin deployment.yaml sabit kodlanmış bir kayıt defteri yolu veya dış kayıt defteri başvurusu kullanıyorsa doğrulama başarısız olur.
El ile doğrulama gerçekleştirme
Görüntülerin registryPath ön ekine sahip olduğundan ve imagePullSecrets öğesinin secretName ile dolduruldığından emin olmak için oluşturulan görüntüleri ve kapsayıcı belirtimlerini gözden geçirin.
helm template --set "global.imagePullSecrets[0].name=<secretName>" --set "global.registry.url=<registryPath>" <release-name> <chart-name> --dry-run
VEYA
helm install --set "global.imagePullSecrets[0].name=<secretName>" --set "global.registry.url=<registryPath>" <release-name> <chart-name> --dry-run
kubectl create secret <secretName> regcred --docker-server=<registryPath> --dockerusername=<regusername> --docker-password=<regpassword>
Statik görüntü deposunun ve etiketlerin olduğundan emin olun
Her helm grafiği statik görüntü deposu ve etiketler içermelidir. Statik değerler aşağıdaki gibi ayarlanır:
- Bunları görüntü satırında ayarlama veya
- Bunları values.yaml içinde ayarlama ve bu değerleri Ağ İşlevi Tasarım Sürümü'nde (NFDV) ortaya çıkarmama.
Ağ İşlevi Tasarım Sürümü (NFDV), statik bir helm grafik ve görüntü kümesiyle eşlenmelidir. Grafikler ve görüntüler yalnızca yeni bir Ağ İşlevi Tasarım Sürümü (NFDV) yayımlanarak güncelleştirilir.
image: "{{ .Values.global.registryPath }}/contosoapp:1.14.2“
Veya
image: "{{ .Values.global.registryPath }}/{{ .Values.image.repository }}:{{ .Values.image.tag}}“
YAML values.yaml
image:
repository: contosoapp
tag: 1.14.2
image: http://myUrl/{{ .Values.image.repository }}:{{ .Values.image.tag}}
registryPath ve imagePullSecrets için injectArtifactStoreDetails gereksinimleri
Bazı durumlarda, üçüncü taraf helm grafikleri registryPath için AOSM gereksinimleriyle tam olarak uyumlu olmayabilir. Bu durumda, helm paketlerinde uyumluluk değişiklikleri yapmaktan kaçınmak için injectArtifactStoreDetails özelliği kullanılabilir. injectArtifactStoreDetails etkinleştirildiğinde, pod işlemleri sırasında uygun registryPath ve imagePullSecrets değerlerini dinamik olarak eklemek için bir web kancası yöntemi kullanılır. Bu, Helm paketinde yapılandırılan değerleri geçersiz kılar. Yayımcının, genellikle values.yaml dosyasının genel bölümünde registryPath ve imagePullSecrets'e başvurulduğu durumlarda hala yasal sahte değerler kullanması gerekir.
Aşağıda values.yaml
, bir yayımcının injectArtifactStoreDetails yaklaşımıyla uyumluluk için registryPath ve imagePullSecretsvalue değerlerini nasıl sağlayabileceklerine ilişkin bir örnek gösterilmektedir.
global:
registryPath: “azure.io”
imagePullSecrets: ["abc123"]
Not
Altta yatan Helm paketinde registryPath boş bırakılırsa, resim indirilmeye çalışılırken site ağ hizmeti (SNS) dağıtımı başarısız olur.
injectArtifactStoreDetails yöntemini kullanma
injectArtifactStoreDetails'i etkinleştirmek için, aşağıdaki örnekte gösterildiği gibi NF kaynak rolüOverrides bölümündeki installOptions parametresini true olarak ayarlayın.
resource networkFunction 'Microsoft.HybridNetwork/networkFunctions@2023-09-01' = {
name: nfName
location: location
properties: {
nfviType: 'AzureArcKubernetes'
networkFunctionDefinitionVersionResourceReference: {
id: nfdvId
idType: 'Open'
}
allowSoftwareUpdate: true
nfviId: nfviId
deploymentValues: deploymentValues
configurationType: 'Open'
roleOverrideValues: [
// Use inject artifact store details feature on test app 1
'{"name":"testapp1", "deployParametersMappingRuleProfile":{"helmMappingRuleProfile":{"options":{"installOptions":{"atomic":"false","wait":"false","timeout":"60","injectArtifactStoreDetails":"true"},"upgradeOptions": {"atomic": "false", "wait": "true", "timeout": "100", "injectArtifactStoreDetails": "true"}}}}}'
]
}
}
Not
Helm grafiği paketi yine de düzgün biçimlendirilmiş registryPath ve imagePullSecrets değerlerini kullanıma sunmalıdır.
registryPath ve imagePullSecrets için küme kayıt defteri gereksinimleri
Küme kayıt defteriyle, görüntüler yayımcı ACR'den nexus AKS (NAKS) kümesindeki yerel bir docker deposuna kopyalanır. Etkinleştirildiğinde, pod işlemleri sırasında uygun registryPath ve imagePullSecrets değerlerini dinamik olarak eklemek için bir webhook yöntemi kullanılır. Bu, helm paketinde yapılandırılan değerleri geçersiz kılar. Yayımcı yine de genellikle values.yaml dosyasının genel bölümünde registryPath ve imagePullSecrets'e başvurulduğu yasal kukla değerleri kullanmalıdır.
Aşağıda values.yaml
, bir yayımcının küme kayıt defteri yaklaşımıyla uyumluluk için registryPath ve imagePullSecretsvalue değerlerini nasıl sağlayabileceklerine ilişkin bir örnek gösterilmektedir.
global:
registryPath: “azure.io”
imagePullSecrets: ["abc123"]
Not
Altta yatan helm paketinde registryPath boş bırakılırsa, bu durumda SNS dağıtımı, görüntü indirilmeye çalışılırken başarısız olur.
Küme kayıt defterini kullanma hakkında bilgi için kavram belgelerine bakın.
Grafikte değişmezlik kısıtlamaları
Değişmezlik kısıtlamaları bir dosya veya dizinde değişiklik yapılmasını engeller. Örneğin, sabit bir dosya değiştirilemez veya yeniden adlandırılamaz. Kullanıcılar en son, geliştirme veya kararlı gibi değiştirilebilir etiketleri kullanmaktan kaçınmalıdır. Örneğin, deployment.yaml dosyasında .Values.image.tag için 'latest' kullanılırsa, dağıtım başarısız olur.
image: "{{ .Values.global.registryPath }}/{{ .Values.image.repository }}:{{ .Values.image.tag}}“
Grafik CRD bildirimi ve kullanım dağılımı
Güncelleştirmeleri desteklemek için müşteri kaynak tanımlarının (CRD) bildirimini ve kullanımını ayrı helm grafiklerine bölmenizi öneririz. Ayrıntılı bilgi için bkz. method-2-separate-charts