2017-08-25 8 views
1

J'essaie de déployer Kong API Gateway via un modèle pour mon projet openshift. Le problème est que Kong semble faire quelque chose de DNS qui cause sporadic failure of DNS resolution. La solution de contournement consiste à utiliser le nom de domaine complet (<name>.<project_name>.svc.cluster.local). Donc, dans mon modèle je voudrais faire:Un paramètre de modèle openshift peut-il faire référence au nom du projet dans lequel il est déployé?

- env: 
     - name: KONG_DATABASE 
     value: postgres 
     - name: KONG_PG_HOST 
     value: "{APP_NAME}.{PROJECT_NAME}.svc.cluster.local" 

Je ne suis pas sûr comment obtenir le PROJECT_NAME actuelle si peut-être il y a un ensemble par défaut des paramètres disponibles ...

+1

Essayez le lien: https: // developers.openshift.com/managing-your-applications/environment-variables.html Il y a un tableau mentionnant toutes les variables d'environnement par défaut et OPENSHIFT_A PP_NAME en fait partie. –

Répondre

2

Vous pouvez lire l'espace de nommage (nom du projet) de l'API descendante de Kubernetes dans une variable d'environnement, puis l'utilise peut-être dans la valeur.

Voir les documents OpenShift here par exemple.

mise à jour basée sur un commentaire Claytons:

Testé et l'extrait suivant des travaux de configuration de déploiement.

- env: - name: MY_POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: EXAMPLE value: example.$(MY_POD_NAMESPACE)

A l'intérieur du conteneur en cours d'exécution:

sh-4.2$ echo $MY_POD_NAMESPACE
testing
sh-4.2$ echo $EXAMPLE
example.testing

Dans l'écran de l'environnement de l'interface utilisateur, il apparaît comme une valeur de chaîne telle que example.$(MY_POD_NAMESPACE)

+0

Intéressant, cela me donnerait certainement accès _à l'image/container_, mais serais-je capable de définir une seconde valeur 'env' qui utilise la valeur de cette valeur? Je vais devoir vérifier, mais le commentaire de @Harish pointe à openshift qui fournit déjà la valeur aussi ... – Lucas

+0

Je pense que c'est openshift 2 donc doutez que ce soit la même chose. A propos de la deuxième env étant peuplé par le premier, je ne suis pas sûr – user2983542

+0

D'accord, j'ai testé cela, et il ne semble pas fonctionner. J'ai créé un nouvel 'env' appelé' APP_NAMESPACE' en utilisant l'api descendante, et j'ai essayé de le référencer dans un autre 'env', mais le résultat est que le conteneur voit l'espace réservé pour l'env plutôt que l'env:' KONG_PG_HOST = 'kong -database. $ {APP_NAMESPACE} .svc.cluster.local'' – Lucas