Modification de la définition de TM1 ressource personnalisée

Utilisez la ressource TM1 personnalisée (CR) pour configurer le stockage, le dimensionnement, la mise à l'échelle, le placement des nœuds, la sécurité (certificats), la mise en réseau et le comportement opérationnel du TM1 service dans Planning Analytics les instances. Des modifications peuvent être apportées à tout moment après l'installation du service.

La référence complète du schéma et les exemples pour la définition de TM1 ressource personnalisée suivent la définition du schéma OpenAPIv3.

Redémarrage du service

Les paramètres suivants nécessitent un redémarrage complet du service si vous modifiez la configuration pendant que le TM1 service est en cours d'exécution :

  • databaseSizing
  • nodeAffinity
  • customCACerts: Si vous exécutez TM1 des bases de données, vous devez redémarrer le service pour que les modifications apportées au certificat prennent effet.

Pour redémarrer le service, définissez la shutdown propriété de la ressource personnalisée sur true, puis false pour redémarrer le service.

alternativeStorageClasses (tableau[chaîne])

Liste des noms de classes de stockage à utiliser si fileStorageClass n'est pas disponible.

alternativeStorageClasses:
  - fast-storage
  - backup-storage

autoScaling (Booléen)

Permet la mise à l'échelle automatique des composants TM1 du service de manière dynamique en fonction de la charge. La valeur par défaut est true.

autoScaling: true

customCACerts (objet)

Spécifiez des autorités de certification personnalisées supplémentaires pour tous les services et toutes les bases de données. Les bases de TM1 données en cours d'exécution nécessitent un redémarrage du service pour que les modifications prennent effet.

Champs :

  • secret (chaîne) : Secret contenant l'autorité de certification personnalisée.
  • file (chaîne) : Nom du fichier contenu dans le secret.
customCACerts:
  secret: custom-ca-secret
  file: ca.pem

databaseResourceLimits (objet)

Configure les limites des ressources de la base de données (CPU, mémoire, stockage) appliquées à l'ensemble du déploiement. Les valeurs du processeur et de la mémoire sont par réplique.

Champs et valeurs par défaut :

unité centrale
  • minimum (entier) : limite minimale du processeur en millicores. Par défaut : 250
  • maximum (entier) : limite maximale du processeur en millicores. Valeur par défaut : 50000
Mémoire
  • minimum (entier) : limite minimale de mémoire en Go. Valeur par défaut : 1
  • maximum (entier) : limite maximale de mémoire en Go. Par défaut : 2000
stockage
  • minimum (entier) : limite minimale de stockage en Go. Valeur par défaut : 20
  • maximum (entier) : limite maximale de stockage en Go. Valeur par défaut : 4096
databaseResourceLimits:
  cpu:
    minimum: 250
    maximum: 50000
  memory:
    minimum: 1
    maximum: 2000
  storage:
    minimum: 20
    maximum: 4096

databaseSizing (objet)

Permet d'isoler les pods de base de données de taille similaire à certains nœuds corrompus en définissant des plages de limites de mémoire. Nécessite un redémarrage complet du service si ce champ est modifié pendant que le TM1 service est en cours d'exécution.

Champs :

  • key (chaîne) : clé utilisée pour la tolérance des nœuds ou la correspondance des taints.
  • labels (tableau[objet]) :
    • name (chaîne) : nom de l'étiquette de classe.
    • min (entier) : taille minimale de la mémoire, en Go.
    • max (entier) : taille maximale exclusive de la mémoire, en Go.

Utilisez nodeAffinity avec databaseSizing pour « emprisonner » les pods de base de données dans les pools de nœuds sélectionnés et empêcher d'autres charges de travail de s'exécuter sur ces nœuds.

databaseSizing:
  key: "pa/tm1-database-size"
  labels:
    - name: "small"
      min: 1
      max: 64
    - name: "medium"
      min: 64
      max: 512
    - name: "large"
      min: 512
      max: 2048

Dans l'exemple précédent, les répliques dont la limite de mémoire est comprise entre 1 Go et 64 Go sont planifiées sur les nœuds marqués avec pa/tm1-database-size=small:NoSchedule.

exposeService (Booléen)

Afficher le TM1 service via l'entrée. À utiliser uniquement pour les installations autonomes sans Planning Analytics Workspace. Si cette option est activée, remplissez également le ingress champ.

exposeService: true

fileStorageClass (chaîne)

Nom de la classe de stockage de fichiers par défaut à utiliser.

fileStorageClass: standard

imagePullSecretName (chaîne)

Nom du secret de l' Kubernetes e pour l'authentification des extraits d'images.

imagePullSecretName: my-image-pull-secret

entrée (objet)

Spécifiez l' URL e par lequel le TM1 service est affiché.

  • domain (chaîne) : Nom d'hôte ou domaine.
  • port (chaîne) : Numéro de port.
ingress:
  domain: example.com
  port: "443"

minimalMode (Booléen)

Désactive la haute disponibilité des composants TM1 du service afin de réduire l'empreinte mémoire et CPU.

minimalMode: false

mongodb (objet)

MongoDB configuration de connexion.

  • host (chaîne)
  • protocol (chaîne)
  • credentials.secret (chaîne) : secret Kubernetes avec identifiants.
  • tls
    • secret (chaîne) : secret TLS.
    • file (chaîne) : nom du fichier TLS.
  • authMechanism (chaîne)
  • authSource (chaîne)
  • replicaSet (chaîne)
mongodb:
  host: mongo.example.com
  protocol: mongodb
  credentials:
    secret: mongo-credentials
  tls:
    secret: mongo-tls-secret
    file: tls.crt
  authMechanism: SCRAM-SHA-256
  authSource: admin
  replicaSet: rs0

nodeAffinity (objet)

Configuration de l'affinité des nœuds pour les pods de service et de base de données. Nécessite un redémarrage complet si modifié pendant que TM1 est en cours d'exécution. Étiquetez vos nœuds avant d'activer ce champ.

Champs :

client
  • key (chaîne)
  • value (chaîne)
base de données
  • key (chaîne)
  • value (chaîne)
  • evenReplicaSuffix (chaîne) : Facultatif. Utilisez ce champ pour répartir les répliques de manière égale entre les pods des nœuds.
  • oddReplicaSuffix (chaîne) : Facultatif. Utilisez ce champ pour répartir les répliques impaires entre les pods des nœuds.
nodeAffinity:
  service:
    key: ibm-cloud.kubernetes.io/worker-pool-id
    value: tm1-service
  database:
    key: ibm-cloud.kubernetes.io/worker-pool-id
    value: tm1-databases
    evenReplicaSuffix: "-a"
    oddReplicaSuffix: "-b"

L'objectif de l'isolation paire et impaire est d'empêcher que toutes les répliques d'une base de données soient indisponibles pendant les mises à niveau des nœuds du cluster.

registre (objet)

Configuration du registre d'images de conteneurs.

  • host (chaîne) : Hôte du registre URL.
  • namespace (chaîne) : Espace de noms du registre. Si ce champ n'est pas spécifié, seule la host valeur est utilisée.
registry:
  host: registry.example.com
  namespace: myproject
serviceMeshNamespace: istio-system

serviceMeshNamespace (chaîne)

Espace de noms lorsque l' Istio e ou le Service Mesh est déployé. Laissez ce champ vide si aucun maillage n'est utilisé.

serviceSize (chaîne)

Détermine la taille des composants TM1 communs du service. La large configuration nécessite au total environ 40 Go de mémoire et 30 processeurs pour tous les composants communs hautement disponibles. Si autoScaling est activé, chaque service sous charge peut être étendu jusqu'à 2*n + 1 répliques (où n=3 pour le large). Lorsque vous configurez la taille des composants, veillez à conserver une capacité supplémentaire libre dans le cluster à des fins de basculement.

Les valeurs valides sont small, small_mincpureq, mediumet large. La valeur par défaut est large.

serviceSize: large

arrêt (chaîne)

Permet de réduire ou d'augmenter la capacité de l'ensemble TM1 du service en arrêtant ou en démarrant des bases de données et des services communs.

Les valeurs valides sont true, false, et force. Spécifiez force pour forcer l'arrêt indépendamment des erreurs.

shutdown: "false"

useTagsNotDigests (Booléen)

Utilisez des balises d'image à la place des résumés lorsque le paramètre est défini sur true.

La valeur par défaut est false.

useTagsNotDigests: true

Exemple ressource TM1 personnalisée

L'exemple suivant illustre une instance de ressource personnalisée TM1 complète.

apiVersion: tm1s.ibm.com/v1
kind: TM1
metadata:
  name: v12
spec:
  autoScaling: true
  customCACerts:
    secret: "external-root-ca"
    file: "ca.pem"
  fileStorageClass: "efs-sc"
  serviceSize: "large"
  imagePullSecretName: "my-image-pull-secret"
  mongodb:
    host: "abc-0.xyz.databases.appdomain.cloud:32555,abc-0.xyz.databases.appdomain.cloud:32555,abc-0.xyz.databases.appdomain.cloud:32555"
    credentials:
      secret: "external-creds"
    tls:
      secret: "mongo-cacert"
      file: "ca.pem"
    authSource: "admin"
    replicaSet: "replset"
  registry:
    host: "us.icr.io"
    namespace: "tm1-ns"
  databaseResourceLimits:
    cpu:
      minimum: 250
      maximum: 50000
    memory:
      minimum: 1
      maximum: 2048
    storage:
      minimum: 20
      maximum: 4096
  databaseSizing:
    key: "pa/tm1-database-size"
    labels:
      - name: "small"
        min: 1
        max: 64
      - name: "medium"
        min: 64
        max: 512
      - name: "large"
        min: 512
        max: 2048
  nodeAffinity:
    service:
      key: "ibm-cloud.kubernetes.io/worker-pool-id"
      value: "tm1-service"
    database:
      key: "ibm-cloud.kubernetes.io/worker-pool-id"
      value: "tm1-databases"
  serviceMeshNamespace: "istio-system"