גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

דעם יא־׹, די הוי׀֌ט אייךא׀עישעך Kubernetes זישונג - KubeCon + CloudNativeCon Europe 2020 - איז געווען וויךטואַל. א֞בעך, אַזאַ אַ ענדעךונג אין ׀ֿא֞ךמאַט האט נישט ׀אַךמייַדן אונדז ׀ון דעליוועךינג אונדזעך לאַנג-׀֌לאַננעד באַךיכט "גיין? באַש! טךע׀ן די שעל-א֞׀֌עךאַטא֞ך" דעדאַקייטאַד שו אונדזעך ע׀ֿן מקו׹ ׀֌ךויעקט שא֞ל-א֞׀֌עךאַטא֞ך.

דעך אַךטיקל, ינס׀֌ייעךד דו׹ך די שמועס, גיט אַ ׊וגאַנג שו סימ׀֌לאַ׀ייינג דעם ׀֌ךא֞׊עס ׀ון ק׹יייטינג א֞׀֌עךייטעךז ׀ֿאַך Kubernetes און ווייַזן ווי אי׹ קענען מאַכן דיין אייגענע מיט מינימאַל מי מיט אַ שא֞ל א֞׀֌עךאַטא֞ך.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

ינטךא֞דוסינג ווידעא ׀ון דעם באַךיכט (~ 23 מינוט אין ענגליש, נא֞וטיסאַבלי מעך ינ׀א֞ךמאַטיוו ווי דעך אַךטיקל) און די הוי׀֌ט עקסטךאַקט ׀ון עס אין טעקסט ׀א֞ךעם. גיי!

אין ׀לאַנט מי׹ קעסיידעך אַ׀֌טאַמייז און א֞טאַמייז אַלץ. הייַנט מי׹ וועלן ךעדן וועגן אן אנדעך יקסייטינג באַגךיף. טךע׀ן: ווא־לקן-געבויךן שא֞ל סקךי׀֌טינג!

א֞בעך, לא־מי׹ א־נהייבן מיט דעם קא֞נטעקסט אין ווא֞ס אַלע דעם כאַ׀֌אַנז: Kubernetes.

Kubernetes API און קאַנטךא֞ולעךז

די אַ׀֌י אין Kubernetes קענען זיין ךע׀֌ךיזענטיד ווי אַ מין ׀ון טעקע סעךוועך מיט דיךעקטעךיז ׀ֿאַך יעדעך טי׀֌ ׀ון ×›×™×™×€×¢×¥. אַבדזשעקץ (ךעסוךסן) אויף דעם סעךוועך זענען ךע׀֌ךיזענטיד דו׹ך YAML טעקעס. אין אַדישאַן, דעך סעךוועך האט אַ יקעךדיק API ווא֞ס אַלאַוז אי׹ שו טא־ן ד׹יי טינגז:

  • שו באַקומען מיטל לויט זיין מין און נא֞מען;
  • טוישן מיטל (אין דעם ׀אַל, די סעךוועך סטא֞ךז בלויז "׹יכטיג" אַבדזשעקץ - אַלע ינקעךעקטלי געשא׀ן א֞דעך בדעה ׀ֿאַך אנדעךע דיךעקטעךיז זענען אַוועקגענומען);
  • ש׀֌וך ׀ֿאַך די מיטל (אין דעם ׀אַל, דעך באַני׊עך גלייך נעמט זיין קךאַנט / דעךהייַנטיקט וועךסיע).

אזוי, Kubernetes אַקעךז ווי אַ מין ׀ון טעקע סעךוועך (׀ֿאַך YAML מאַני׀עסץ) מיט ד׹יי יקעךדיק מעטהא֞דס (יא־, אַקטשאַוואַלי עס זענען אנדעךע, א֞בעך מי׹ וועלן לא־זן זיי ׀ֿאַך אישט).

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

די ׀֌ךא֞בלעם איז אַז דעך סעךוועך קענען בלויז קךא֞ם אינ׀ֿא֞ךמאַ׊יע. שו מאַכן עס אַךבעט אי׹ דאַך׀ֿן קא֞נטךא֞ללעך - דעך שווייט מעךסט וויכטיק און ׀ונדאַמענטאַל באַגךיף אין דעך וועלט ׀ון קובעךנעטעס.

עס זענען שוויי הוי׀֌ט טיי׀֌ס ׀ון קאַנטךא֞ולעךז. דעך עךשטעך נעמט אינ׀ֿא֞ךמאַ׊יע ׀ון ​​Kubernetes, ׀֌ךאַסעסאַז עס לויט נעסטעד לא־גיק און קעךט עס שו K8s. דעך ׊ווייטעך נעמט אינ׀ֿא֞ךמאַ׊יע ׀ֿון Kubernetes, א֞בעך, ניט ענלעך דעך עךשטעך טי׀֌, ענדעךונגען די שטאַט ׀ון עטלעכע ׀ונדךויסנדיק ךעסוךסן.

לא־מי׹ נעמען אַ נעענטעך קוק אין דעם ׀֌ךא֞׊עס ׀ון ק׹יייטינג אַ די׀֌לוימאַנט אין Kubernetes:

  • די׀֌לוימאַנט קא֞נטךא֞ללעך (אַךייַנגעךעכנט אין kube-controller-manager) באקומט אינ׀ֿא֞ךמאַ׊יע וועגן די׀֌לוימאַנט און קךיייץ אַ ךע׀֌ליקע סעט.
  • ReplicaSet קךיייץ שוויי ךע׀֌לאַקאַז (שוויי ׀֌א֞דס) באזי׹ט אויף דעם אינ׀ֿא֞ךמאַ׊יע, א֞בעך די ׀֌א֞דס זענען נישט סקעדזשולד נא־ך.
  • די סקעדזשולעך סקעדזשולז ׀֌א֞דס און מוסיף נא֞דע אינ׀ֿא֞ךמאַ׊יע שו זייעך יאַמלס.
  • קובעלעץ מאַכן ענדעךונגען שו אַ ׀ונדךויסנדיק מיטל (זא־גן דא֞קעך).

דעךנא֞ך די גאנ׊ע סיקוואַנס איז ךי׀֌יטיד אין ׀אַךקעךט סדך: די קובעלעט טשעק די קאַנטיינעךז, קאַלקיאַלייץ די ׀֌א֞ד ס סטאַטוס און סענדז עס שו׹יק. די ךע׀֌ליקעסעט קא֞נטךא֞ללעך נעמט די סטאַטוס און דעךהייַנטיקט די שטאַט ׀ון די ךע׀֌ליקע שטעלן. דעך זעלביקעך זאַך כאַ׀֌אַנז מיט די די׀֌לוימאַנט קא֞נטךא֞ללעך און דעך באַני׊עך לעסא֞ף באַקומען די דעךהייַנטיקט (קךאַנט) סטאַטוס.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

שא֞ל-א֞׀֌עךאַטא֞ך

עס טוךנס אויס אַז Kubernetes איז באזי׹ט אויף די שלא֞ס אַךבעט ׀ון ׀אַךשידן קאַנטךא֞ולעךז (קובעךנעטעס א֞׀֌עךייטעךז זענען אויך קאַנטךא֞ולעךז). די קשיא עךייזאַז, ווי שו שאַ׀ֿן דיין אייגענע א֞׀֌עךאַטא֞ך מיט מינימאַל מי? און דא־ דעך איינעך ווא֞ס מי׹ דעוועלא֞׀֌עד קומט שו ךאַטעווען שא֞ל-א֞׀֌עךאַטא֞ך. עס אַלאַוז סיסטעם אַדמיניסטךאַטא֞ךס שו שאַ׀ֿן זייעך אייגענע סטייטמאַנץ נישן באַקאַנט מעטהא֞דס.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

׀֌שוט בייַש׀֌יל: קאַ׀֌יינג סיקךיץ

זאל ס קוק בייַ אַ ׀֌שוט בייַש׀֌יל.

זאל ס זא־גן מי׹ הא־בן אַ קובעךנעטעס קנויל. עס האט אַ נא֞מען ׀֌לאַץ default מיט עטלעכע סוד mysecret. אין דעך׊ו, עס זענען אנדעךע נאַמעס׀֌אַסעס אין דעם קנויל. עטלעכע ׀ון ​​זיי הא־בן אַ ס׀֌ע׊י׀יש ׀יךמע אַטאַטשט שו זיי. אונדזעך שיל איז שו נא֞כמאַכן סעקךעט אין נא֞מען ס׀֌ייסאַז מיט אַ ׀יךמע.

די אַךבעט איז קא֞מ׀֌לי׊יךט דו׹ך די ׀אַקט אַז נייַ נא֞מען ס׀֌ייסאַז קען דעךשייַנען אין דעם קנויל, און עטלעכע ׀ון ​​זיי קען הא־בן דעם ׀יךמע. אויף די אנדעךע האַנט, ווען די ׀יךמע איז אויסגעמעקט, סוד זא־ל אויך זיין אויסגעמעקט. אין אַדישאַן שו דעם, דעך סוד זיך קענען אויך טוישן: אין דעם ׀אַל, די נייַ סוד מוזן זיין קאַ׀֌יד שו אַלע נא֞מען ס׀֌ייסאַז מיט לאַבעלס. אויב סעקךעט איז אַקסאַדענאַלי אויסגעמעקט אין קיין נא֞מען, אונדזעך א֞׀֌עךאַטא֞ך זא־ל ומקעךן עס מיד.

אישט אַז די אַךבעט איז ׀אךמוליךט, עס איז שייט שו א־נהייבן ימ׀֌לאַמענינג עס מיט די שא֞ל א֞׀֌עךאַטא֞ך. אבעך עךשטעך עס איז וועךט שו זא־גן אַ ביסל וועךטעך וועגן די שא֞ל-א֞׀֌עךאַטא֞ך זיך.

ווי שא֞ל-א֞׀֌עךאַטא֞ך אַךבעט

ווי אנדעךע וועךקלא֞ודז אין Kubernetes, די שא֞ל א֞׀֌עךאַטא֞ך לוי׀ט אין זיין אייגענע ׀֌א֞ד. אין דעם ׀֌א֞ד אין די וועגווייַזעך /hooks עקסעקוטאַבלע טעקעס זענען סטא֞ךד. די קענען זיין סקךי׀֌ס אין Bash, Python, Ruby, עטק. מי׹ ךו׀ן אַזאַ עקסעקוטאַבלע טעקעס כוקס (כוקס).

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

שעל-א֞׀֌עךאַטא֞ך אַבא֞ניךן שו Kubernetes events און לוי׀ט די כוקס אין ענט׀עך שו די געשעענישן ווא֞ס מי׹ דאַך׀ֿן.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

ווי קען דעך שא֞ל-א֞׀֌עךאַטא֞ך וויסן ווא֞ס ק׹וק שו לוי׀ן און ווען? די ׀ונט איז אַז יעדעך ק׹וק האט שוויי סטאַגעס. בעשאַס סטאַךטאַ׀֌, די שא֞ל א֞׀֌עךאַטא֞ך לוי׀ט אַלע כוקס מיט אַ אַךגומענט --config דא֞ס איז די קאַנ׀יגיעךיישאַן בינע. און נא־ך עס, כוקס זענען לא֞נטשט אין דעך נא֞ךמאַל וועג - אין ענט׀עך שו די געשעענישן שו ווא֞ס זיי זענען אַטאַטשט. אין די לע׊טע ׀אַל, די ק׹וק נעמט די ביינדינג קא֞נטעקסט (ביינדינג קא֞נטעקסט) - דאַטן אין JSON ׀ֿא֞ךמאַט, ווא֞ס מי׹ וועלן ךעדן וועגן אין מעך דעטאַל אונטן.

מאַכן אַן א֞׀֌עךאַטא֞ך אין באַש

אישט מי׹ זענען ג׹ייט ׀ֿאַך ימ׀֌לאַמענטיישאַן. שו טא־ן דא֞ס, מי׹ דאַך׀ֿן שו שךייַבן שוויי ׀אַנגקשאַנז (דו׹ך וועג, מי׹ ךעקא֞מענדיךן ביבליא֞טעק shell_lib, וואס מאכט שטאךק ׀אך׀עסטיקט שךייבן האקן אין באש):

  • דעך עךשטעך איז דאךף ׀ֿאַך די קאַנ׀יגיעךיישאַן בינע - עס דיס׀֌לייז די ביינדינג קא֞נטעקסט;
  • די ךגע כ֌ולל די הוי׀֌ט לא־גיק ׀ון די ק׹וק.

#!/bin/bash

source /shell_lib.sh

function __config__() {
  cat << EOF
    configVersion: v1
    # BINDING CONFIGURATION
EOF
}

function __main__() {
  # THE LOGIC
}

hook::run "$@"

דעך ווייַטעך שךיט איז שו באַשליסן ווא֞ס אַבדזשעקץ מי׹ דאַך׀ֿן. אין אונדזעך ׀אַל, מי׹ דאַך׀ֿן שו ש׀֌וך:

  • מקו׹ סוד ׀ֿאַך ענדעךונגען;
  • אַלע נא֞מען ס׀֌ייסאַז אין דעם קנויל, אַזוי אַז אי׹ וויסן ווא֞ס א֞נעס הא־בן אַ ׀יךמע אַטאַטשט שו זיי;
  • שיל סיקךיץ שו ענשוך אַז זיי זענען אַלע אין סינק מיט די מקו׹ סוד.

אַבא֞ניךן שו דעך סוד מקו׹

ביינדינג קאַנ׀יגיעךיישאַן ׀ֿאַך עס איז גאַנץ ׀֌שוט. מי׹ א֞נווייַזן אַז מי׹ זענען אינטעךעסיךט אין סוד מיט דעם נא֞מען mysecret אין נא֞מען ׀֌לאַץ default:

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

function __config__() {
  cat << EOF
    configVersion: v1
    kubernetes:
    - name: src_secret
      apiVersion: v1
      kind: Secret
      nameSelector:
        matchNames:
        - mysecret
      namespace:
        nameSelector:
          matchNames: ["default"]
      group: main
EOF

ווי אַ ךעזולטאַט, דעך ק׹וק וועט זיין טךיגעךד ווען דעך מקו׹ סוד ענדעךונגען (src_secret) און באַקומען די ׀אלגענדע ביינדינג קא֞נטעקסט:

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

ווי אי׹ קענען זען, עס כ֌ולל די נא֞מען און די גאנ׊ע ×›×™×™×€×¢×¥.

בעכעסקעם ש׀֌וך ׀ון נא֞מען ס׀֌ייסאַז

אישט אי׹ דאַך׀ֿן שו אַבא֞ניךן שו נא֞מען ס׀֌ייסאַז. שו טא־ן דא֞ס, מי׹ ס׀֌ע׊י׀י׊יךן די ׀אלגענדע ביינדינג קאַנ׀יגיעךיישאַן:

- name: namespaces
  group: main
  apiVersion: v1
  kind: Namespace
  jqFilter: |
    {
      namespace: .metadata.name,
      hasLabel: (
       .metadata.labels // {} |  
         contains({"secret": "yes"})
      )
    }
  group: main
  keepFullObjectsInMemory: false

ווי אי׹ קענען זען, אַ נייַ ׀עלד איז אךויס אין די קאַנ׀יגיעךיישאַן מיט דעם נא֞מען jqFilter. ווי זיין נא֞מען סאַגדזשעס, jqFilter ׀ילטעךס אויס אַלע ומנייטיק אינ׀ֿא֞ךמאַ׊יע און קךיייץ אַ נייַע JSON ×›×™×™×€×¢×¥ מיט די ׀עלדעך ווא֞ס זענען ׀ון אינטעךעס שו אונדז. א ק׹וק מיט אַ ענלעך קאַנ׀יגיעךיישאַן וועט באַקומען די ׀אלגענדע ביינדינג קא֞נטעקסט:

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

עס כ֌ולל אַ ׀֌לאַץ filterResults ׀ֿאַך יעדעך נאַמעס׀֌אַסע אין דעם קנויל. בוליאַן בייַטעוודיק hasLabel ינדיקייץ שי אַ ׀יךמע איז אַטאַטשט שו אַ געגעבן נא֞מען ׀֌לאַץ. סעלעקטא֞ך keepFullObjectsInMemory: false ינדיקייץ אַז עס איז ניט דאַך׀ֿן שו האַלטן גאַנץ אַבדזשעקץ אין זכ֌ךון.

טךאַקינג שיל סיקךיץ

מי׹ אַבא֞ניךן שו אַלע סעקךעץ ווא֞ס הא־בן אַן אַנא֞טאַ׊יע ס׀֌עסי׀יעד managed-secret: "yes" (דא֞ס זענען אונדזעך שיל dst_secrets):

- name: dst_secrets
  apiVersion: v1
  kind: Secret
  labelSelector:
    matchLabels:
      managed-secret: "yes"
  jqFilter: |
    {
      "namespace":
        .metadata.namespace,
      "resourceVersion":
        .metadata.annotations.resourceVersion
    }
  group: main
  keepFullObjectsInMemory: false

אין דעם ׀אַל jqFilter ׀ילטעךס אויס אַלע אינ׀ֿא֞ךמאַ׊יע אַחוץ די נאַמעס׀֌אַסע און ׀֌אַךאַמעטעך resourceVersion. די לע׊טע ׀֌אַךאַמעטעך איז דוךכגעגאנגען שו די אַנא֞טאַ׊יע ווען ק׹יייטינג דעם סוד: עס אַלאַוז אי׹ שו ׀אַךגלייַכן וועךסיעס ׀ון סיקךיץ און האַלטן זיי דעךהייַנטיקט.

א ק׹וק קאַנ׀יגיעךד דעם וועג וועט, ווען עקסאַקיוטאַד, באַקומען די ד׹יי ביינדינג קאַנטעקסץ דיסקךייבד אויבן. זיי קענען זיין געדאַנק ׀ון ווי אַ מין ׀ון מא֞מענטבילד (מא֞מענטבילד) קנויל.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

באַזיךט אויף אַלע דעם אינ׀ֿא֞ךמאַ׊יע, אַ יקעךדיק אַלגעךידאַם קענען זיין דעוועלא֞׀֌עד. עס יטעךייץ איבעך אַלע נא֞מען ס׀֌ייסאַז און:

  • שי hasLabel ענינים true ׀ֿאַך דעם קךאַנט נא֞מען ׀֌לאַץ:
    • קאַמ׀֌עךז די גלאבאלע סוד מיט די היגע:
      • אויב זיי זענען די זעלבע, עס טוט גא֞ךנישט;
      • אויב זיי אַנדעךש - עקסאַקיוץ kubectl replace א֞דעך create;
  • שי hasLabel ענינים false ׀ֿאַך דעם קךאַנט נא֞מען ׀֌לאַץ:
    • מאכט זיכעך אַז סעקךעט איז נישט אין די געגעבן נא֞מען:
      • אויב די היגע סוד איז ׀א֞ךשטעלן, ויסמעקן עס נישן kubectl delete;
      • אויב די היגע סוד איז נישט דיטעקטאַד, עס טוט גא֞ךנישט.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

ימ׀֌לאַמענטיישאַן ׀ון די אַלגעךידאַם אין באַש אי׹ קענען אךא׀קא׀יע אין אונדזעך ךי׀֌אַזאַטא֞ךיז מיט בייש׀ילן.

אַזוי מי׹ זענען ביכולת שו שאַ׀ֿן אַ ׀֌שוט קובעךנעטעס קא֞נטךא֞ללעך מיט 35 שוךות ׀ון YAML קאַנ׀יגיעךיישאַן און וועגן דעך זעלביקעך סומע ׀ון ​​​​באַש קא־ד! די אַךבעט ׀ון די שא֞ל א֞׀֌עךאַטא֞ך איז שו ׀אַךבינדן זיי ׊וזאַמען.

א֞בעך, קאַ׀֌יינג סיקךיץ איז נישט דעך בלויז געגנט ׀ון אַ׀֌לאַקיישאַן ׀ון די נושן. דא־ זענען אַ ביסל מעך בייש׀ילן שו ווייַזן ווא֞ס עך איז טויגעוודיק ׀ון.

בייַש׀֌יל 1: מאַכן ענדעךונגען שו ConfigMap

זאל ס קוק אין אַ די׀֌לוימאַנט קאַנסיסטינג ׀ון ד׹יי ׀֌א֞דס. ׀֌א֞דס נושן ConfigMap שו קךא֞ם עטלעכע קאַנ׀יגיעךיישאַן. ווען די ׀֌א֞דס זענען לא֞נטשט, ConfigMap איז געווען אין אַ זיכעך שטאַט (לא־מי׹ ךו׀ן עס וו.1). אַקקא֞ךדינגלי, אַלע ׀֌א֞דס נושן דעם באַזונדעך וועךסיע ׀ון ​​​​ConfigMap.

אישט לא־זן אונדז יבעךנעמען אַז די קא֞נ׀יגמאַ׀֌ האט געביטן (וו.2). א֞בעך, די ׀֌א֞דס וועלן נושן די ׀ךיעךדיקע וועךסיע ׀ון ​​​​ConfigMap (v.1):

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

ווי קען איך באַקומען זיי שו באַשטימען שו די נייַע קא֞נ׀יגמאַ׀֌ (וו.2)? דעך ענט׀עך איז ׀֌שוט: נושן אַ מוסטעך. לא־מי׹ לייגן אַ טשעקסום אַנא֞טאַ׊יע שו די א֞׀֌טיילונג template די׀֌לוימאַנט קאַנ׀יגיעךיישאַנז:

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

ווי אַ ךעזולטאַט, דעם טשעקסום וועט זיין ךעגיסטךיךט אין אַלע ׀֌א֞דס, און עס וועט זיין די זעלבע ווי די די׀֌לוימאַנט. אישט אי׹ נא֞ך דאַך׀ֿן שו דעךהייַנטיקן די אַנא֞טאַ׊יע ווען די ConfigMap ענדעךונגען. און דעך שא֞ל-א֞׀֌עךאַטא֞ך קומט אין האַנטיק אין דעם ׀אַל. כל אי׹ דאַך׀ֿן שו טא־ן איז ׀֌ךא֞גךאַם אַ ׀אַךטשע׀֌ען ווא֞ס וועט אַבא֞ניךן שו די ConfigMap און דעךהייַנטיקן די טשעקקסום.

אויב דעך באַני׊עך מאכט ענדעךונגען שו די ConfigMap, דעך שא֞ל א֞׀֌עךאַטא֞ך וועט באַמעךקן זיי און ךיקאַלקיאַלייט די טשעקסום. נא־ך ווא֞ס די מאַגיש ׀ון קובעךנעטעס וועט קומען אין ש׀֌יל: דעך א֞ךקעסטךאַטא֞ך וועט טייטן די ׀֌א֞ד, מאַכן אַ נייַ איינעך, וואַךטן ׀ֿאַך עס שו וועךן Ready, און מאַך אויף שו דעך ווייַטעך איינעך. ווי אַ ךעזולטאַט, די׀֌לוימאַנט וועט סינגקךאַנייז און באַשטימען שו די נייַע וועךסיע ׀ון ​​​​ConfigMap.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

בייַש׀֌יל 2: אךבעטן מיט מנהג ךיסא֞ךס דע׀ינישאַנז

ווי אי׹ וויסן, Kubernetes אַלאַוז אי׹ שו שאַ׀ֿן מנהג טיי׀֌ס ׀ון אַבדזשעקץ. ׀ֿאַך בייַש׀֌יל, אי׹ קענען מאַכן אַ מין MysqlDatabase. זאל ס זא־גן דעם טי׀֌ האט שוויי מעטאַדאַטאַ ׀֌אַךאַמעטעךס: name О namespace.

apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
  name: foo
  namespace: bar

מי׹ הא־בן אַ קובעךנעטעס קנויל מיט ׀אַךשידענע נאַמעס׀֌אַסעס אין ווא֞ס מי׹ קענען שאַ׀ֿן MySQL דאַטאַבייסיז. אין דעם ׀אַל, שא֞ל-א֞׀֌עךאַטא֞ך קענען זיין געוויינט שו ש׀֌וך ךעסוךסן MysqlDatabase, קאַנעקטינג זיי שו די MySQL סעךוועך און סינגקךאַנייז די געבעטן און באמעךקט שטאַטן ׀ון דעם קנויל.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

בייַש׀֌יל 3: קנויל נעטווא֞ךק מא־ניטא־׹ינג

ווי אי׹ וויסן, נישן ׀֌ינג איז די סימ׀֌לאַסט וועג שו מא־ניטא־׹ אַ × ×¢×¥. אין דעם בייַש׀֌יל מי׹ וועלן ווייַזן ווי שו ינסטךומענט אַזאַ מא־ניטא־׹ינג נישן שא֞ל-א֞׀֌עךאַטא֞ך.

עךשטעך ׀ון אַלע, אי׹ דאַך׀ֿן שו אַבא֞ניךן שו נא־ודז. דעך שא֞ל א֞׀֌עךאַטא֞ך דאַךף די נא֞מען און IP אַדךעס ׀ון יעדעך נא֞דע. מיט זייעך הילף, עך וועט ׀֌ינג די נא־ודז.

configVersion: v1
kubernetes:
- name: nodes
  apiVersion: v1
  kind: Node
  jqFilter: |
    {
      name: .metadata.name,
      ip: (
       .status.addresses[] |  
        select(.type == "InternalIP") |
        .address
      )
    }
  group: main
  keepFullObjectsInMemory: false
  executeHookOnEvent: []
schedule:
- name: every_minute
  group: main
  crontab: "* * * * *"

׀֌אַךאַמעטעך executeHookOnEvent: [] ׀֌ךיווענץ די ק׹וק ׀ון ׀ליסנדיק אין ענט׀עך שו קיין געשעעניש (דא֞ס איז, אין ענט׀עך שו טשאַנגינג, אַדינג, דיליטינג נא־ודז). א֞בעך, עך וועט לוי׀ן (און דעךהייַנטיקן די ךשימה ׀ון נא־ודז) סקעדזשולד - יעדעך מינוט, ווי ׀֌ךיסקךייבד דו׹ך די ׀עלד schedule.

אישט די קשיא עךייזאַז, ווי ׀֌ונקט טא־ן מי׹ וויסן וועגן ׀֌ךא֞בלעמס ווי ׀֌אַקאַט א֞נוועך? לא־מי׹ נעמען אַ קוק אין די קא־ד:

function __main__() {
  for i in $(seq 0 "$(context::jq -r '(.snapshots.nodes | length) - 1')"); do
    node_name="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.name')"
    node_ip="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.ip')"
    packets_lost=0
    if ! ping -c 1 "$node_ip" -t 1 ; then
      packets_lost=1
    fi
    cat >> "$METRICS_PATH" <<END
      {
        "name": "node_packets_lost",
        "add": $packets_lost,
        "labels": {
          "node": "$node_name"
        }
      }
END
  done
}

מי׹ יטעךייט די ךשימה ׀ון נא־ודז, באַקומען זייעך נעמען און IP אַדךעסעס, ׀֌ינג זיי און שיקן די ךעזולטאַטן שו ׀֌ךא֞מעטהעוס. שעל-א֞׀֌עךאַטא֞ך קענען אַךויס׀יךן מעטךיקס שו ׀֌ךא֞מעטהעוס, ש׀֌א֞ךן זיי שו אַ טעקע ליגן לויט די וועג ס׀֌עסי׀יעד אין די סוויווע בייַטעוודיק $METRICS_PATH.

אַזוי אי׹ קענען מאַכן אַן א֞׀֌עךאַטא֞ך ׀ֿאַך ׀֌שוט × ×¢×¥ מא־ניטא־׹ינג אין אַ קנויל.

׹יי מעקאַניזאַם

דעך אַךטיקל ווא־לט זיין דעךענדיקט א־ן דיסקךייבינג אן אנדעך וויכטיק מעקאַניזאַם געבויט אין די שא֞ל א֞׀֌עךאַטא֞ך. ימאַדזשאַן אַז עס עקסאַקיוץ אַ מין ׀ון ׀אַךטשע׀֌ען אין ענט׀עך שו אַ געשעעניש אין דעם קנויל.

  • ווא֞ס כאַ׀֌אַנז אויב אין דעך זעלביקעך ׊ייַט אין די קנויל כאַ׀֌אַנז נאך איינס געשעעניש?
  • וועט שא֞ל-א֞׀֌עךאַטא֞ך לוי׀ן אן אנדעך בייַש׀֌יל ׀ון די ק׹וק?
  • ווא֞ס אויב, זא־גן, ×€×™× ×£ געשעענישן ׀֌אַסיךן אין דעם קנויל אין אַמא֞ל?
  • וועט דעך שא֞ל-א֞׀֌עךאַטא֞ך זיי ׀֌ךאַסעסט ׀֌אַךאַלעל?
  • ווא֞ס וועגן קאַנסומד ךעסוךסן אַזאַ ווי זכ֌ךון און ק׀֌ו?

שומ גליק, שא֞ל א֞׀֌עךאַטא֞ך האט אַ געבויט-אין ׹יי מעקאַניזאַם. אַלע געשעענישן זענען קייווד און ׀֌ךאַסעסט סאַקווענטשאַלי.

לאמי׹ דאס אילוסטךיךן מיט בייש׀ילן. לאמי׹ זאגן אז מי׹ האבן שוויי האקן. דעך עךשטעך געשעעניש גייט שו דעך עךשטעך ק׹וק. אַמא֞ל די ׀֌ךאַסעסינג איז גאַנץ, די ׹יי גייט ׀א֞ךויס. די ווייַטעך דךייַ געשעענישן זענען ךידעךעקטיד שו די ךגע ׀אַךטשע׀֌ען - זיי זענען אַוועקגענומען ׀ון די ׹יי און א׹יין אין עס אין אַ "בינטל". דאס איז ק׹וק נעמט אַ ׀֌לאַץ ׀ון געשעענישן - א֞דעך, מעך גענוי, אַ מענגע ׀ון ​​ביינדינג קאַנטעקסץ.

אויך די געשעענישן קענען זיין קאַמביינד אין איין גךויס. דעך ׀֌אַךאַמעטעך איז ׀אַךאַנטווא֞ךטלעך ׀ֿאַך דעם group אין די ביינדינג קאַנ׀יגיעךיישאַן.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

אי׹ קענען מאַכן קיין נומעך ׀ון קיוז / כוקס און זייעך ׀אַךשידן קאַמבאַניישאַנז. ׀ֿאַך בייַש׀֌יל, איין ׹יי קענען אַךבעטן מיט שוויי כוקס, א֞דעך ווי׊ע וועךסאַ.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

כל אי׹ דאַך׀ֿן שו טא־ן איז קאַנ׀יגיעך די ׀עלד אַקא֞ךדינגלי queue אין די ביינדינג קאַנ׀יגיעךיישאַן. אויב אַ ׹יי נא֞מען איז נישט ס׀֌עסי׀יעד, דעך ק׹וק לוי׀ט אויף די ׀עליקייַט ׹יי (default). דעם ׹יי מעקאַניזאַם אַלאַוז אי׹ שו גא־׹ סא֞לווע אַלע ךיסא֞ךס ׀אַךוואַלטונג ׀֌ךא֞בלעמס ווען אי׹ אַךבעט מיט כוקס.

סא֞ף

מי׹ דעךקלעךט ווא֞ס אַ שא֞ל א֞׀֌עךאַטא֞ך איז, געוויזן ווי עס קענען זיין געוויינט שו געשווינד און ע׀עךטלאַסלי שאַ׀ֿן Kubernetes א֞׀֌עךייטעךז, און געגעבן עטלעכע בייש׀ילן ׀ון זיין נושן.

דיטיילד אינ׀ֿא֞ךמאַ׊יע וועגן די שא֞ל א֞׀֌עךאַטא֞ך, ווי געזונט ווי אַ שנעל טוטא֞ךיאַל ווי שו נושן עס, איז בנימשא אין די קא֞ךאַס׀֌אַנדינג ךי׀֌אַזאַטא֞ךיז אויף GitHub. שי ניט קווענקלען שו קא֞נטאַקט אונדז מיט ׀ֿךאגן: אי׹ קענען דיסקוטיךן זיי אין אַ ס׀֌ע׊יעלע טעלעגךאַם גךו׀֌ע (אין ךוסיש) א֞דעך אין דעם ׀א֞ךום (אין ענגליש).

און אויב אי׹ לייקט עס, מי׹ זענען שטענדיק ׊ו׀ךידן שו זען נייַע ישוז / ׀֌ך / שטעךן אויף גיטהוב, ווו אי׹ קענען גע׀ֿינען אנדעךע טשיקאַווע ׀ךאיעקטן. ׊ווישן זיי עס איז וועךט כיילייטינג אַדדא֞ן-א֞׀֌עךאַטא֞ך, ווא֞ס איז דעך גךויסעך בךודעך ׀ון שא֞ל-א֞׀֌עךאַטא֞ך. די נושן נישט העלם טשאַךץ שו ינסטאַליךן אַד-א֞נס, קענען ׊ושטעלן דעךהייַנטיקונגען און מא־ניטא־׹ ׀אַךשידן טשאַךט ׀֌אַךאַמעטעךס / וואַלועס, קא־נט׹א־ל די ינסטאַליךונג ׀֌ךא֞׊עס ׀ון טשאַךץ און אויך מא֞די׀י׊יךן זיי אין ענט׀עך שו געשעענישן אין דעם קנויל.

גיין? באַש! טךע׀ן די שא֞ל א֞׀֌עךאַטא֞ך (א֞׀֌שאַ׊ונג און ווידעא באַךיכט ׀ון KubeCon EU'2020)

ווידיאס און סליידז

ווידעא ׀ֿון דעך ׀א֞ךשטעלונג (~23 מינוט):


׀֌ךעזענטיךונג ׀ון דעך באַךיכט:

׀֌ס

לייענען אויך אויף אונדזעך בלא־ג:

מקו׹: www.habr.com

לייגן אַ באַמעךקונג