[Helm入門] Templateで使える関数の実行例 ~ 文字列操作編 ~

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

HelmはKubernetes用のパッケージ管理ソフトウェアです。HelmはChartと呼ばれる設計図もとに、Kubernetesのマニフェストを作成し、パッケージをインストールします。ChartはGoのテンプレートを利用していて、Sprigの関数を利用することができます。本記事ではHelmテンプレートでのSprig関数のうち、文字列操作の使用例を紹介します。

TL;DR

目次

検証環境

以下の実行例の動作環境です。

事前準備

検証用のHelmチャートを作成します。

  1. helm createコマンドでチャートのひな形を作成します。
  2. rmコマンドで不要なファイルを削除します。
  3. 検証のYAMLファイルを作成します。今回はConfigMapを作成するYAMLを作成しています。
  4. helm install --dry-run --debugコマンドで実行確認をします。--dry-run オプションを利用することで、Kuernetes上にConfigMapのリソースをインストールしないで、実行結果の確認を行うことができます。

String Functions

trim

trimは、文字列の左右の空白を取り除きます。

trimAll

trimAllは、文字列の前または後ろから指定した文字を削除します。

trimSuffix

trimSuffixは文字列から指定したサフィックスを取り除きます。サフィックスとは、文字列の末尾に付けられた接尾辞のことです。

trimPrefix

trimPrefixは文字列から指定したプレフィックスを取り除きます。プレフィックスとは、文字列の先頭に付けられた接頭辞のことです。

upper

upperは文字列を大文字に変換します。

lower

lowerは、文字列を小文字に変換します。

title

titleは、単語の先頭を大文字に変換します。以下の実行例ではlowerで小文字に変換した文字列をパイプでtitleに渡しています。

untitle

untitleは、単語の先頭を小文字に変換します。

repeat

repeatは、指定した回数分の文字列を繰り返します。

substr

substrは、文字列の切り取りを行います。切り取りの開始と終了の位置を指定します。文字列の先頭は0から始まります。

nospace

nospaceは、文字列から空白を取り除きます。

trunc

truncは指定した長さに文字列を切り詰めます。

abbrev

abbrevは、指定した長さに文字を切り詰めます。切り詰めた文字列の最後の3文字は3点リーダ(…)で表示されます。3点リーダの3文字も切り詰める文字列長に含まれることに注意してください。

abbrevboth

abbrevbothは、指定した開始位置から指定した長さに文字を切り詰めます。切り詰めた文字列の先頭と末尾の3文字は3点リーダ(…)で表示されます。3点リーダの6文字(先頭3文字、末尾3文字)も切り詰める文字列長に含まれることに注意してください。パラメータとして切り取りの開始位置と切り取る長さの指定が必要です。文字列の開始位置の先頭は、0から始まります。

切り取りの開始位置、切り取りの長さ、文字列の長さによって、先頭の3点リーダが表示されない場合もあります。詳しくはソースを参照してください。

initials

initialsは、単語の先頭文字だけをつなぎ合わせます。

randAlphaNum

randAlphaNumは、ランダムなアルファベットと数字の組み合わせ[0-9a-zA-Z]を生成します。パスワードなどでランダムな文字列が必要な場合などに利用できます。パラメータとして生成する文字列の長さを指定します。

randAlpha

randAlphaは、ランダムなアルファベットの組み合わせ[a-zA-Z]を生成します。パスワードなどでランダムな文字列が必要な場合などに利用できます。パラメータとして生成する文字列の長さを指定します。

randNumeric

randNumericは、ランダムな数字の組み合わせ[0-9]を生成します。パスワードなどでランダムな文字列が必要な場合などに利用できます。パラメータとして生成する文字列の長さを指定します。

randAscii

ranAsciiは、ランダムな印刷可能なASCII文字の組み合わせを生成します。パスワードなどでランダムな文字列が必要な場合などに利用できます。パラメータとして生成する文字列の長さを指定します。

wrap

wrapは、指定した長さで文字列の折り返しを行います。単語の途中での折り返しは行われません。

warpWith

wrapWithは折り返しを改行(\n)ではなく、指定した文字列で行います。

wrapは、改行(\n)で折り返しを行います。

contains

containsは、文字列に指定の文字列が含まれているかを確認します。含まれている場合はtrue、含まれていない場合はfalseとなります。

hasPrefix

hasPrefixは、指定した文字列がプレフィックスであるかを確認します。プレフィックスとは、文字列の先頭に付けられた接頭辞のことです。

プレフィックスが含まれている場合はtrue、含まれていない場合はfalseを返します。

hasSuffix

hasSuffixは、指定した文字列がサフィックスであるかを確認します。サフィックスとは、文字列の末尾に付けられた接尾辞のことです。

サフィックスが含まれている場合はtrue、含まれていない場合はfalseを返します。

quote

quoteは、文字列をダブルクォーテーション(")で囲みます。

squote

squoteは、文字列をシングルクォーテーション(')で囲みます。

cat

catは、複数の文字列を1つのスペースでつなぎます。

indent

indentは、指定した長さで文字列をインデントします。

nindent

nindentは、指定した長さで文字列をインデントします。インデントの前に改行が行われます。

replace

replaceは、指定した文字列で置き換えを行います。パラメータとして置換前と置換後の文字列を指定します。

plural

pluralは、複数形の置き換えを行います。パラメータとして単体形および複数形の文字列を指定します。入力値が1の場合は単体系、1以外の場合は、複数形の文字列を表示します。

snakecase

snakecaseは、文字列をキャメルケースをスネークケースに変換します。キャメルケースは単語の先頭を大文字で表記し、複数の単語をつなぎ合わせる方法です。スネークケースは単語の区切りとしてアンダースコア(_)を利用します。

  • キャメルケース:camelCase
  • スネークケース:snake_case

camelcase

camelcaseは、スネークケースをキャメルケースに変換します。キャメルケースは単語の先頭を大文字で表記し、複数の単語をつなぎ合わせる方法です。スネークケースは単語の区切りとしてアンダースコア(_)を利用します。

  • キャメルケース:camelCase
  • スネークケース:snake_case

kebabcase

kebabcaseは、キャメルケースをケバブケースに変更します。キャメルケースは単語の先頭を大文字で表記し、複数の単語をつなぎ合わせる方法です。ケバブケースは単語の区切りとしてハイフン(-)を利用します。

  • キャメルケース:camelCase
  • ケバブケース:kebab-case

swapcase

swapcaseは大文字を小文字に、小文字を大文字に変換します。

shuffle

shuffleは、文字列をランダムに並び替えます。

regexMatch

regexMatchは、指定した正規表現に適合した場合にtrueを返します。適合しなかった場合はfalseを返します。

regexFindAll

regexFindAllは、文字列から正規表現に適合した部分を切り出して表示します。パラメータの最後に切り出す文字列の数を指定します。-1を指定した場合、適合したすべての文字列を表示します。

regexFind

regexFindは、文字列から正規表現に適合した最初の部分を切り出して表示します。

regexReplaceAll

regexReplaceAllは、文字列から正規表現に適合した部分を、指定した文字列ですべて置換します。キャプチャ()および$によるキャプチャの参照も利用できます。

$で参照を行う場合、\$とエスケープをしてください。

regexReplaceAllLiteral

regexReplaceAllLiteralは、文字列から正規表現に適合した部分を、指定した文字列ですべて置換します。変数がリテラルとして扱われるため、変数の展開は行われません。

regexSplit

regexSplitは、文字列を正規表現で適合した部分で分割して表示します。正規表現に適合した部分は削除されます。パラメータの最後に、分割して表示する数を指定します。-1を指定することで、適合するすべての結果を返します。-1以外を指定した場合、最後の文字列に未分割の文字列がすべて含まれて表示されます。

さいごに

本記事ではHelmテンプレートでのSprig関数のうち、文字列操作の使用例を紹介しました。Helmのテンプレートでは、indentquoteがよく使われます。また条件判断などでregexMatchなどの正規表現も便利に使えます。文字列操作関数を有効に使って、汎用性の高いHelmチャートを簡単に作っていきましょう。

スカイアーチ ファンタジー研究室

スカイアーチ ファンタジー研究室

EasyDoggie