ネットワーク」カテゴリーアーカイブ

Let’s Encrypt の証明書をブラウザ上で簡単取得

参照サイト

証明書の確認 cat cert.pem |openssl x509 -text -noout

実際に取得するサイト

 Let’s Encrypt へ登録

Emailを入力して、署名鍵を取得

2. チャレンジトークンの取得

3. ドメイン名の所有確認

4. 証明書発行申請

5. 発行された証明書

cert.pem (サーバ証明書)、chain.pem (中間証明書)、fullchain.pem (サーバ証明書 + 中間証明書)と、STEP4で取得した秘密鍵をサーバーへ設置する

/etc/letsencrypt/archive/live/b17.ddns.net/

インストールの確認

$cat cert.pem |openssl x509 -text -noout

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            04:85:92:51:53:66:49:fe:d6:7a:17:6a:1a:9f:aa:ab:c2:4c
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, O = Let's Encrypt, CN = R11
        Validity
            Not Before: Jan  8 00:12:59 2025 GMT
            Not After : Apr  8 00:12:58 2025 GMT
        Subject: CN = rfsec.ddns.net

今年のノーベル賞はAI祭り

物理学賞2024年のノーベル物理学賞は,「人工ニューラルネットワークによる機械学習を可能にする基礎的発見と発明」の功績で,米プリンストン大学のホップフィールド(John Hopfield)名誉教授とカナダのトロント大学のヒントン(Geoffrey Hinton)名誉教授に授与される。 (日経サイエンス)

化学賞2024年のノーベル化学賞は「コンピューターを用いたタンパク質の設計」の功績で米ワシントン大学のベイカー(David Baker)教授に,「コンピューターを用いたタンパク質の構造予測」で英国Google DeepMindのハサビス(Demis Hassabis)氏とジャンパー(John Jumper)氏に授与される (日経サイエンス)

化学賞受賞のハサビス氏は、世界最高ランクの囲碁棋士である李世乭に5試合中4試合に勝利したAlphaGoプログラムを開発したほか、機械学習のスタートアップであるDeepMindテクノロジーズを共同で立ち上げCEOを務めた。

生成AIを利用した様々なサービスが利用できる昨今ですが、Googleが今のところ無料で公開しているnotebookLMを使ってみました。(料金については、Googleによると「NotebookLM はまだ早期テスト段階であるため、現時点では料金は発生しません」となっていますが、そのうちに課金の対象になるかも?)

Google NotebookLMは、ユーザがアップロードした資料に対して、要約や質問に対する回答などを得ることができます。試しに、自分が2008年に執筆した博士論文のpdf(約100ページ)をアップロードしてみました。Google NotebookLMの興味深い機能の一つに、男女2人が、アップロードしたファイルの内容についての説明・感想を数分程度の会話を音声で聞くことができます。アップロードした資料が日本語であっても、今のところ音声は英語だけなのが残念な点ですが、再生できるようにしてみました。

Google NotebookLMが処理した結果の「要約」は、次のようになりました。Google NotebookLMの出力は、飾りのないテキストなので、多少読みやすくなるよう手動で体裁を整えました。

マルウェア自動解析システムの研究

1. マルウェアの脅威と対策
 近年、マルウェアによる被害が急増しており、その種類や手法も多様化していることを説明。
従来のシグネチャベースの対策では未知のマルウェアへの対応が困難であることを指摘。
マルウェアの挙動解析に基づく自動解析システムの必要性を論述。

2. マルウェア自動解析システムの概要
 本研究で提案するマルウェア自動解析システムの全体構成を図を用いて説明。
システムの主要な機能である、マルウェアの動的解析、挙動データの収集、数値化と類似性判定、そして視覚化について概説。

3. マルウェアの動的解析
 サンドボックス環境を用いたマルウェアの動的解析手法について解説。
APIコール、レジストリへのアクセス、ネットワーク通信など、解析対象となるマルウェアの挙動を列挙。解析結果から得られる情報とその利点について説明。

4. 挙動データの数値化と類似性の判定
 マルウェアの挙動データを数値化するための特徴量抽出方法を説明。
使用する特徴量として、APIコール系列、レジストリキー、通信先ポート番号などを例示。
数値化された挙動データに基づいて、マルウェア間の類似性を判定するためのアルゴリズムを解説。具体的には、ユークリッド距離、マンハッタン距離、コサイン類似度などの距離尺度を用いた類似度計算方法を説明。

5. 挙動データの視覚化
 多次元尺度構成法 (MDS) を用いたマルウェア挙動の視覚化手法について説明。
MDS により、高次元の特徴量空間を2次元または3次元に写像することで、マルウェアの類似性を視覚的に表現。視覚化結果から、マルウェアの分類や未知マルウェアの検出が可能になることを示唆。

6. 実験と評価
 実験に用いたマルウェア検体データセットの概要を説明。
検体数は約8,000個体で、トレンドマイクロ・ウィルスバスター2007を用いてスキャンし、名前が判明したものを使用。提案システムの性能評価指標として、検出率、誤検知率、処理時間を設定。実験結果に基づいて、提案システムが従来手法と比較して高い検出率と低い誤検知率を達成したことを示す。処理時間についても、実用的な範囲内であることを確認。

7. PDBを用いたマルウェア挙動の可視化
 マルウェアの挙動を可視化するために、PDB (Position Dependent Bits) を導入。
PDBを用いることで、マルウェアの挙動をビット列として表現し、視覚的に比較分析することが可能になる。実際に、上位15種類のマルウェアについて、PDBへの変換結果を視覚化し、その特徴を分析。結果として、同種に分類されるマルウェアの挙動は一定ではないものの、利用ポートの状況など、種類ごとに特徴が認められることを示す。

8. 結論と今後の展望
 本研究では、マルウェアの挙動解析に基づく自動解析システムを提案し、その有効性を検証。
提案システムは、未知のマルウェアに対しても高い検出率を達成し、マルウェア対策への貢献が期待される。今後の課題として、解析精度の向上、処理速度の高速化、マルウェアの進化への対応などを挙げ、さらなる研究の必要性を論述。

9. 付録
 上位15種類のマルウェアのPDB可視化結果の詳細を掲載。実験対象とした検体の内訳を、AV製品ごとに「科名」と「科名+亜種名」で分類し、検体数を表示。特徴量抽出に用いたパラメータ (port100_md50_svcN_rootN_host_file4.hex) と、それによって得られたデータセットの分割方法について説明。各分割データセットにおける、F値、F&V値、F-STD、F&V-STD、Totalなどを表形式で表示。

参考文献
本研究に関連する参考文献を列挙。

WordPress のインストールとMysql

参考にしたサイト

https://qiita.com/cherubim1111/items/b259493a39e36f5d524b

TimeZOne設定
sudo su - 
timedatectl set-timezone Asia/Tokyo

Apacheのインストール
apt -y update
apt -y install apache2 
systemctl enable apache2
systemctl start apache2

PHP 7.4 のインストール
apt -y install php7.4 php7.4-mysql

MariaDB 10.5 のインストール
apt -y install mariadb-server mariadb-client
systemctl enable mariadb
systemctl start mariadb

WordPress のインストール
cd /var/www/html
wget https://ja.wordpress.org/latest-ja.tar.gz
tar xvf latest-ja.tar.gz
chown -R www-data:www-data .

WordPress 用データベース作成(DB名wirdpressの場合)
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8;

WordPress 用 MariaDB ユーザの作成
GRANT ALL ON wordpress.* TO UserName@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

MySQLの操作

データベースの一覧表示
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| press              |
| rf                 |
| wp                 |
+--------------------+
6 rows in set (0.001 sec)

データベースのアクセス
MariaDB [(none)]> use press;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

データベースのテーブル表示
Database changed
MariaDB [press]> show tables;
+-----------------------+
| Tables_in_press       |
+-----------------------+
| ww_commentmeta        |
| ww_comments           |
| ww_links              |
| ww_options            |
| ww_postmeta           |
| ww_posts              |
| ww_term_relationships |
| ww_term_taxonomy      |
| ww_termmeta           |
| ww_terms              |
| ww_usermeta           |
| ww_users              |
+-----------------------+
12 rows in set (0.001 sec)

テーブル表示の中身を表示
MariaDB [press]> select * FROM ww_users;
+----+------------+------------------------------------+---------------+---------------------------+---------------------------+---------------------+---------------------+-------------+--------------+
| ID | user_login | user_pass                          | user_nicename | user_email                | user_url                  | user_registered     | user_activation_key | user_status | display_name |
+----+------------+------------------------------------+---------------+---------------------------+---------------------------+---------------------+---------------------+-------------+--------------+
|  1 | mars       | $P$BpsXyK.d4ER7ABVH9hZioBiaGNFvAJ1 | mars          | ei2k-hrai@asahi-net.or.jp | http://ps2.ddns.net/press | 2021-04-01 12:53:41 |                     |           0 | mars         |
+----+------------+------------------------------------+---------------+---------------------------+---------------------------+---------------------+---------------------+-------------+--------------+
1 row in set (0.001 sec)

データベースを削除する
DROP DATABASE [IF EXISTS] db_name

ユーザパスワードをDBから直接変更する方法

https://www.wakuwakubank.com/posts/648-wordpress-userpassword/

UPDATE 対象DB.DB接頭語users                # UPDATE press.ww_users
SET user_pass = MD5('新しいパスワード')     # SET user_pass = MD5('新しいパスワード') 
WHERE user_login = 'パスを変更したいユーザー名';

Seleniumでスクレイピングの準備

$sudo apt-get update
$sudo apt install chromium-chromedriver
$sddo cp /usr/lib/chromium-browser/chromedriver /usr/bin
$pip install selenium
$pip install webdriver_manager

紛らわしい点:webdriver_managerとwebdrivermanagerの両方が存在し、機能が同じではない。webdriver_managerの方が良さそう。

Webサイトのタイトルを取得してみる。

from selenium import webdriver
import time

#---------------------------------------------------------------------------------------
# 処理開始
#---------------------------------------------------------------------------------------
# ブラウザをheadlessモード実行
print("\nブラウザを設定")
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver',options=options)
driver.implicitly_wait(10)

# サイトにアクセス
print("サイトにアクセス開始")
URL="https://rfsec.ddns.net/db/"
driver.get(URL)
time.sleep(3)
# driver.find_elements_by_css_selector("xxx") 的な処理を自由に
print("サイトのタイトル:", driver.title)

認証があるサイトの場合(中華製ネットワークカメラ)

import time
import base64
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

def get_auth_header(user, password):
    b64 = "Basic " + base64.b64encode('{}:{}'.format(user, password).encode('utf-8')).decode('utf-8')
    return {"Authorization": b64}

# Webdriver ManagerでChromeDriverを取得
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())

# Authorizationヘッダを付与
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": get_auth_header("admin", "")})
# Basic認証が必要なページにアクセス
driver.get('http://192.168.68.128')
time.sleep(5)

driver.close()
driver.quit()

数独の問題サイトから問題を取得して、解く。

#  ここからがseleniumのコード
#  問題サイト http://numberplace.net/
#
from selenium import webdriver
import time
import numpy as np

def disp(results):
    msg=""
    for r in results:
        for y in range(9):
            for x in range(9):
                c = r._values[y][x]
                c = str(c)
                d = row2[y][x]
                if d != 0:
                    msg=msg+'('+ c + ') '
                else:
                    msg=msg+'-'+ c + '- ' 
            msg=msg+"\n"
    print(msg)

#---------------------------------------------------------------------------------------
# 処理開始
#---------------------------------------------------------------------------------------
# ブラウザをheadlessモード実行
print("\nブラウザを設定")
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver',options=options)
driver.implicitly_wait(2)

# サイトにアクセス
for num in range(5):
    URL="http://numberplace.net/?no="+str(num+1)
    print("サイトにアクセス開始:",URL)
    driver.get(URL)
    time.sleep(2)
    lines= driver.page_source.splitlines()
    for line in lines:
        if 'toi' in line:
            q = line.split(' ')[3].replace("'","").replace(";","")
            q=list(q)
            #print(q)
            qi = [int(s) for s in q]
            #print(qi)
            q2 = np.array(qi)
            row2=np.array(q2).reshape(-1,9).tolist()
            grid = solver.Grid(row2)
            print(grid)
            results = solver.solve_all(grid)
            disp(results)
            break
print('Done.')

ネットワークカメラ ATOM Cam2で遊ぶ

ATOM Cam2は、防水となっていて屋外にも設置できそうなので、流星の録画・観測向きかもしれない。

こちらのブログを参照して必要なファイルを録画用のSDカードへ配置するだけで、telnet/ftp/rtspを利用できる。

配置の手順などは、こちらのgithubに

ファイルを配置してカメラをrebootし、とりあえずnmapでOS,サービスの情報を表示してみる。

$ sudo nmap -O 192.168.68.74
Starting Nmap 7.70 ( https://nmap.org ) at 2021-10-16 21:05 JST
Nmap scan report for 192.168.68.74
Host is up (0.010s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
21/tcp open  ftp
23/tcp open  telnet
MAC Address: 7C:DD:E9:01:F0:F1 (Atom Tech)
Device type: general purpose
Running: Linux 2.6.X|3.X
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3
OS details: Linux 2.6.32 - 3.10
Network Distance: 1 hop

$ nmap -A 192.168.68.74
Starting Nmap 7.70 ( https://nmap.org ) at 2021-10-16 21:04 JST
Nmap scan report for 192.168.68.74
Host is up (0.013s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
21/tcp open  ftp     BusyBox ftpd (D-Link DCS-932L IP-Cam camera)
23/tcp open  telnet  BusyBox telnetd
Service Info: Host: Ingenic; Device: webcam; CPE: cpe:/h:dlink:dcs-932l

RTSPらしいポートが見えないが、説明によると8554/TCPらしいのでポートを指定して、再びnmap。

$ sudo nmap -p8554 -A 192.168.68.74
Starting Nmap 7.70 ( https://nmap.org ) at 2021-10-16 21:25 JST
Nmap scan report for 192.168.68.74
Host is up (0.0036s latency).

PORT     STATE SERVICE VERSION
8554/tcp open  rtsp    DoorBird video doorbell rtspd
|_rtsp-methods: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER
MAC Address: 7C:DD:E9:01:F0:F1 (Atom Tech)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X|3.X
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3
OS details: Linux 2.6.32 - 3.10
Network Distance: 1 hop
Service Info: Device: webcam

ということで、8554/TCPが空いている.

VLCのネットワークストリームを開き、 rtsp://[IPアドレス]:8554/unicast で無事動画を表示することができた。

ブログによると8080/TCPでWebアクセスできて、詳細な設定が可能ということだが、ATOM Cam2のバージョンが違うのか、8080/TCPは開いていないようだ。

ハックの新バージョンが公開されていました。新バージョンで上書き設置し、nmapを実行した結果は、次のとおりでした。ブラウザで http://[IPアドレス]:8080/cgi-bin/honeylab.cgi を開くと、設定画面やステータスが表示され、ftpとrtspの有効化(ON/OFF)が可能となりました。初期状態ではftp/rtspが無効化されている。

PORT     STATE SERVICE
23/tcp   open  telnet
8080/tcp open  http-proxy
9999/tcp open  abyss

telnetでログインして(root/atomcam2) freeコマンドでメモリー容量を確認したら75Kバイトのようだ

 telnet 192.168.68.74
Trying 192.168.68.74...
Connected to 192.168.68.74.
Escape character is '^]'.

Ingenic login: root
Password:

[root@Ingenic:~]# free
             total         used         free       shared      buffers
Mem:         75084        55300        19784            0          200
-/+ buffers:              55100        19984
Swap:            0            0            0

# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 3.6M      3.6M         0 100% /
tmpfs                    36.7M      8.0K     36.7M   0% /dev
tmpfs                    36.7M      9.8M     26.9M  27% /tmp
tmpfs                    36.7M      4.0K     36.7M   0% /run
media                    36.7M         0     36.7M   0% /media
/dev/mtdblock3            3.6M      3.6M         0 100% /system
/dev/mtdblock6          384.0K    120.0K    264.0K  31% /configs
/dev/mmcblk0p1           29.1G      1.1G     28.0G   4% /media/mmc
/dev/mmcblk0p1           29.1G      1.1G     28.0G   4% /tmp/mmc
tmpfs                    36.7M      9.8M     26.9M  27% /bin/busybox
tmpfs                    36.7M      9.8M     26.9M  27% /bin
/dev/loop0               45.2M     40.1M      2.0M  95% /tmp/newroot
tmpfs                    36.7M      9.8M     26.9M  27% /etc/passwd
tmpfs                    36.7M      9.8M     26.9M  27% /etc/shadow
/dev/loop0               45.2M     40.1M      2.0M  95% /tmp/newroot/mnt/usr/lib
/dev/loop0               45.2M     40.1M      2.0M  95% /usr
/dev/loop0               45.2M     40.1M      2.0M  95% /usr/lib

参照したブログによると、独自のカーネルで起動することも可能らしい。今後の展開が楽しみだ。

PythonからSSLでメールを送信

STARTTLSを使わない場合

import smtplib, ssl

#送信に利用するメールサーバの設定(プロバイダーのメールアカウント、SMTPサーバー)
username= "aaa@bbb.ccc.ddd"
password=  "xxxxx"
mail_server="smtp.eeee.ffff" # SMTP Server
port=465

#偽装送信元 
fake_from= "donaldtrump@gmail.com"
fake_name= "Donald Trump"

#メールの宛先
to_email= 'hoge@hoge.hoge'
to_name= 'hoge@hoge.hoge'

subject= "Bonjour"
content= "This is the fbi. OPEN UP"
message= f"From: {fake_name} <{fake_from}>\nTo: {to_name} <{to_email}>\nSubject: {subject}\n\n{content}"
server = smtplib.SMTP_SSL(mail_server,port, context=ssl.create_default_context())
server.login(username, password)
server.sendmail(username, to_email, message.encode())
server.close()

MIME機能を付加して、日本語・HTMLのメールを送信

通信のデバッグ情報を表示するには server.set_debuglevel(True) を挿入

import smtplib,ssl
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
smtp_host = 'mail.xxx.xxx' #Mailサーバを指定
smtp_port = 465
smtp_account_id = 'hogehoge' #ユーザー名を指定
smtp_account_pass = 'xxxxxxx' #パスワードを入力
from_mail = "hoge <hoge@xxxx.xxx.xx>"  # 送信元メールアドレス
to_mail = "HOGE <HOGE@xxxx.xxx>"  # 送信先メールアドレス
msg = MIMEMultipart('alternative')
msg['Subject'] = "タイトル" #件名を入力
msg['From'] = from_mail
msg['To'] = to_mail
text = "送信テストです。.nマルチパートで送っています。.nどうですか?"
html = """
<html>
  <head></head>
  <body>
    <p style='font-size:16.0pt;font-family:游ゴシック'>送信テストです。</p>
    <p>マルチパートで送っています。</p>
    <p>どうですか?</p>
  </body>
</html>
"""

part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
msg.attach(part1)
msg.attach(part2)

server = smtplib.SMTP_SSL(smtp_host, smtp_port, context=ssl.create_default_context())
#server.set_debuglevel(True)
server.login(smtp_account_id, smtp_account_pass)
server.sendmail(from_mail, to_mail, msg.as_string())
server.quit()
print('Done.')

helmでインストールしたwordpressのphpスクリプトの場所を特定

/var/snap/microk8s/common/ 以下に置かれているようだ。

$ sudo find / -name wp-login.php 2>/dev/null
/var/snap/microk8s/common/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/179/fs/opt/bitnami/wordpress/wp-login.php
/var/snap/microk8s/common/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/170/fs/opt/bitnami/wordpress/wp-login.php
/var/snap/microk8s/common/run/containerd/io.containerd.runtime.v2.task/k8s.io/6f704f341ec11315ce29fc36f1a4d4c4e7c88b55d460fa0249c7e268b20be2ed/rootfs/opt/bitnami/wordpress/wp-login.php

k8sのサービスへ別マシンから接続

k8sのサービスへ別マシンから接続するには、ポートフォワーディングを設定します。例えばk8sのdashbordをアクセスする場合には、設定に必要な情報を次の手順で取得

$ microk8s kubectl get all --all-namespaces | grep dashboard | grep TCP
kube-system          service/kubernetes-dashboard        ClusterIP      10.152.183.19    <none>        443/TCP

必要な部分は太字の箇所

kube-system service/kubernetes-dashboard ClusterIP 10.152.183.19 443/TCP

外部からアクセスする場合のポートを10443とした場合のportforward設定の例;10443が既に使われていた場合はエラーとなるので、別のポートを指定する。

microk8s.kubectl port-forward --address 0.0.0.0 -n kube-system service/kubernetes-dashboard 10443:443 &

wordpressをアクセスする場合;外部マシンからhttp://xxx.xxx.xxx.xxx:20443/をアクセス

(xxx.xxx.xxx.xxxはk8sマシンのIPアドレス)

microk8s kubectl get all --all-namespaces | grep wordpress | grep TCP
helm-test            service/test-wordpress              LoadBalancer   10.152.183.226   <pending>     80:30034/TCP,443:30311/TC
microk8s.kubectl port-forward --address 0.0.0.0 -n helm-test service/test-wordpress 20443:443 &
Forwarding from 0.0.0.0:20443 -> 8443

helmでwordpressをデプロイ

これまでの失敗の一因:

(1)microk8s config >.kube/configの未実施。

(2)クリーンでない環境へインストールしようとした。(例えば、80/tcpが既に使われていた環境)

$ microk8s config >.kube/config  を実行しておかないと、次のようなエラーとなる。
The connection to the server localhost:8080 was refused - did you specify the right host or port?

#helmをmake
git clone https://github.com/helm/helm.git
cd helm
#ここでmakeすると go が欠落していてエラー snapでgoをインストール
sudo snap install go --classic
make
sudo make install

kubectl create namespace helm-test
namespace/helm-test created

mars@mars-VirtualBox:~$ helm install test bitnami/wordpress --namespace helm-test 
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/mars/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/mars/.kube/config
NAME: test
LAST DEPLOYED: Tue Jun 22 19:46:16 2021
NAMESPACE: helm-test
STATUS: deployed
REVISION: 1
NOTES:
** Please be patient while the chart is being deployed **
Your WordPress site can be accessed through the following DNS name from within your cluster:
    test-wordpress.helm-test.svc.cluster.local (port 80)
To access your WordPress site from outside the cluster follow the steps below:
1. Get the WordPress URL by running these commands:
  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace helm-test -w test-wordpress'
   export SERVICE_IP=$(kubectl get svc --namespace helm-test test-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")
   echo "WordPress URL: http://$SERVICE_IP/"
   echo "WordPress Admin URL: http://$SERVICE_IP/admin"

2. Open a browser and access WordPress using the obtained URL.
3. Login with the following credentials below to see your blog:
  echo Username: user
  echo Password: $(kubectl get secret --namespace helm-test test-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)

次のように、wordpressとmariadbが起動している。

helm list -n helm-test

WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /home/mars/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /home/mars/.kube/config
NAME	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART            	APP VERSION
test	helm-test	1       	2021-06-22 19:46:16.598835081 +0900 JST	deployed	wordpress-11.0.16	5.7.2      

$  kubectl get po -n helm-test
NAME                             READY   STATUS    RESTARTS   AGE
test-wordpress-8d8bb84b6-m5b5j   0/1     Running   0          87s
test-mariadb-0                   1/1     Running   0          87s

Adminでログインしたwordpressの画面