Aller au contenu
Ressources générées

Ressources générées

Cette page associe chaque template du chart à l’objet qu’il produit. Elle est vérifiée contre charts/github-sts/templates à chaque pull request : un template qui existe est listé ici.

Effectuez vous-même le rendu pour n’importe quel fichier de valeurs avant de l’appliquer :

helm template github-sts charts/github-sts --values values.yaml

Toujours générés

TemplateTypeNotes
deployment.yamlDeployment apps/v1Le serveur. Porte une annotation de pod checksum/config : tout changement de la configuration générée fait rouler les pods au lieu de les laisser sur une configuration périmée.
configmap.yamlConfigMap v1La configuration du serveur, montée en lecture seule sur /etc/github-sts/config.yaml et localisée par la variable d’environnement GITHUBSTS_CONFIG_PATH. Nommé {fullname}-config.
service.yamlService v1Expose les pods sur service.port, en ciblant le port nommé du conteneur. Ce nom vaut http, ou https avec appProtocol: https lorsque tls.enabled est actif.
secret.yamlaucunNe produit rien. Ce fichier est un marqueur consignant que le chart ne crée délibérément aucun Secret : chaque clé privée de GitHub App provient d’un existingSecret dont vous êtes propriétaire.

Générés sous condition

TemplateTypeGénéré lorsque
serviceaccount.yamlServiceAccount v1serviceAccount.create est vrai. Renseignez serviceAccount.name et désactivez create pour réutiliser un compte existant.
poddisruptionbudget.yamlPodDisruptionBudget policy/v1pdb.enabled est vrai, ce qui est le cas par défaut. Utilise minAvailable, ou maxUnavailable si seul celui-ci est renseigné, et retombe sur minAvailable: 1.
hpa.yamlHorizontalPodAutoscaler autoscaling/v2autoscaling.enabled est vrai. Le Deployment omet alors replicas, et replicaCount ne s’applique plus.
ingress.yamlIngress networking.k8s.io/v1ingress.enabled est vrai.
httproute.yamlHTTPRoute gateway.networking.k8s.io/v1httproute.enabled est vrai. Exige les CRD Gateway API.
networkpolicy.yamlNetworkPolicy networking.k8s.io/v1networkPolicy.native.enabled est vrai.
ciliumnetworkpolicy.yamlCiliumNetworkPolicy cilium.io/v2networkPolicy.cilium.enabled est vrai. Exige la CRD Cilium.
servicemonitor.yamlServiceMonitor monitoring.coreos.com/v1serviceMonitor.enabled est vrai. Exige les CRD Prometheus Operator. Collecte avec scheme: https lorsque tls.enabled est actif.
podmonitor.yamlPodMonitor monitoring.coreos.com/v1podMonitor.enabled est vrai. Exige les CRD Prometheus Operator. Collecte avec scheme: https lorsque tls.enabled est actif.

Tests

Ce sont des Pods annotés helm.sh/hook: test. Ils sont créés par helm test, pas par helm install, et sont supprimés en cas de succès ainsi qu’avant l’exécution suivante. Tous trois exécutent tests.image et suivent tls.enabled, en interrogeant l’endpoint en HTTPS sans vérifier le certificat. Aucun n’est généré lorsque tests.enabled est faux, ni lorsque tls.clientAuth.enabled est actif, car un Pod de hook n’a aucun certificat client à présenter.

TemplatePodVérifie
tests/test-connection.yaml{fullname}-test-health/health retourne HTTP 200 avec {"status":"ok"}.
tests/test-readiness.yaml{fullname}-test-ready/ready retourne HTTP 200.
tests/test-metrics.yaml{fullname}-test-metrics/metrics sert des métriques Prometheus. Généré uniquement lorsque metrics.enabled est vrai.

Une NetworkPolicy qui refuse l’entrée interne au cluster refuse aussi les Pods de test. Ajoutez leur namespace à networkPolicy.native.from ou networkPolicy.cilium.fromEndpoints si vous voulez que helm test continue de fonctionner sous une politique.

Le pod

Le Deployment produit un conteneur unique dont la forme est fixe.

MontageSourceRaison
/etc/github-stsConfigMap, lecture seuleLe fichier de configuration du serveur.
/etc/github-sts/apps/{app}Secret, lecture seuleUn montage par entrée de github.apps, projetant uniquement la clé privée configurée.
tls.mountPathSecret projeté, lecture seuleGénéré uniquement lorsque tls.enabled est vrai. Projette le certificat de service et sa clé, plus le bundle de CA clientes sous clientAuth, depuis un ou deux Secrets vers un montage unique. Vaut /etc/github-sts-tls par défaut : un répertoire distinct plutôt qu’un chemin sous le montage de configuration ci-dessus.
/tmpemptyDirLe système de fichiers racine étant en lecture seule, l’espace de travail doit être un volume.
Parent de audit.filePathemptyDir, 100 MioGénéré uniquement lorsque audit.fileEnabled est vrai. Supprimé avec le pod : exportez le flux hors du nœud s’il doit survivre.

Le conteneur écoute sur service.targetPort sous le port nommé http, ou https lorsque tls.enabled est actif, et sert :

CheminUtilisé par
/sts/exchangeLes clients qui échangent un jeton OIDC.
/healthLa sonde de vivacité et le test test-health.
/readyLes sondes de disponibilité et de démarrage, ainsi que le test test-ready.
/metricsPrometheus, les moniteurs et le test test-metrics. Généré uniquement lorsque metrics.enabled est vrai.

Sous tls.clientAuth.enabled, le kubelet n’utilise plus ces chemins : les sondes deviennent des vérifications tcpSocket sur le même port, faute de pouvoir présenter un certificat client. Voir TLS et mTLS.

Labels

Chaque objet porte les labels recommandés standard — app.kubernetes.io/name, instance, version, managed-by et helm.sh/chart — ainsi que le contenu de commonLabels. Les labels de sélecteur se limitent à name et instance : ajouter une entrée dans commonLabels ne modifie donc pas le sélecteur et n’orpheline pas les pods en cours d’exécution.

Suite

  • Référence des valeurs pour les valeurs qui conditionnent ces objets
  • Réseau pour les objets de routage et de politique en contexte
  • TLS et mTLS pour les montages et les ports que modifient les valeurs tls
  • Mise à niveau pour la façon dont un changement de ces objets est déployé