5.2. 查看 Ignition 配置文件

要查看用于部署 bootstrap 机器的 Ignition 配置文件,请运行以下命令:

$ openshift-install create ignition-configs --dir $HOME/testconfig

回答几个问题后,您所在的目录中将出现 bootstrap.ignmaster.ignworker.ign 文件。

要查看 bootstrap.ign 文件的内容,请通过 jq 过滤器对其进行管道传递。以下是该文件的片段:

$ cat $HOME/testconfig/bootstrap.ign | jq
\\{
  "ignition": \\{
        "config": \\{},
  "storage": \\{
        "files": [
          \\{
            "filesystem": "root",
            "path": "/etc/motd",
            "user": \\{
              "name": "root"
            },
            "append": true,
            "contents": \\{
              "source": "data:text/plain;charset=utf-8;base64,VGhpcyBpcyB0aGUgYm9vdHN0cmFwIG5vZGU7IGl0IHdpbGwgYmUgZGVzdHJveWVkIHdoZW4gdGhlIG1hc3RlciBpcyBmdWxseSB1cC4KClRoZSBwcmltYXJ5IHNlcnZpY2UgaXMgImJvb3RrdWJlLnNlcnZpY2UiLiBUbyB3YXRjaCBpdHMgc3RhdHVzLCBydW4gZS5nLgoKICBqb3VybmFsY3RsIC1iIC1mIC11IGJvb3RrdWJlLnNlcnZpY2UK",

要解码 bootstrap.ign 文件中列出的文件内容,请将代表该文件内容的 base64 编码的数据字符串通过管道传递给 base64 -d 命令。以下示例使用了上方输出中添加至 bootstrap 机器的 /etc/motd 文件的内容:

$ echo VGhpcyBpcyB0aGUgYm9vdHN0cmFwIG5vZGU7IGl0IHdpbGwgYmUgZGVzdHJveWVkIHdoZW4gdGhlIG1hc3RlciBpcyBmdWxseSB1cC4KClRoZSBwcmltYXJ5IHNlcnZpY2UgaXMgImJvb3RrdWJlLnNlcnZpY2UiLiBUbyB3YXRjaCBpdHMgc3RhdHVzLCBydW4gZS5nLgoKICBqb3VybmFsY3RsIC1iIC1mIC11IGJvb3RrdWJlLnNlcnZpY2UK | base64 -d

This is the bootstrap machine; it will be destroyed when the master is fully up.

The primary service is "bootkube.service". To watch its status, run, e.g.:

journalctl -b -f -u bootkube.service

master.ignworker.ign 文件重复这些命令,查看每种机器类型的 Ignition 配置文件的来源。 对于 worker.ign,您应该会看到类似于下面这一行,它确认了如何从 bootstrap 获取 Ignition 配置:

"source": "https://api.myign.develcluster.example.com:22623/config/worker",

您可以从 bootstrap.ign 文件中了解到以下内容:

  • 格式:文件的格式在 Ignition 配置规范中定义。MCO 稍后使用相同格式的文件,将更改合并到机器的配置中。
  • 内容:由于 bootstrap 机器为其他机器提供 Ignition 配置,因此 master 机器和 worker 机器的 Ignition 配置信息都与 bootstrap 机器的配置一起存储在 bootstrap.ign 中。
  • 大小:文件长度超过 1300 行,包含指向各种资源的路径。
  • 要复制到机器的每个文件的内容实际上编码为数据 URL,这往往会使内容读起来有些混乱。(使用前面演示的 jq 和 base64 命令可使内容更易读。)
  • 配置:Ignition 配置文件的不同部分通常涵盖刚放入机器文件系统中的文件,而不是用于修改现有文件的命令。例如,不添加与配置该服务的 NFS 相关的一节,是仅添加一个 NFS 配置文件,然后在系统启动时由 init 进程启动该文件。
  • 用户:创建一个名为 core 的用户,并将您的 ssh 密钥分配给该用户。这样,您可以使用该用户名和凭证来登录集群。
  • 存储:存储部分标识添加到每台机器的文件。一些值得注意的文件包括 /root/.docker/config.json(提供集群从容器镜像 registry 表拉取时所需的凭证),以及 /opt/openshift/manifests 中用于配置集群的一系列清单文件:
  • systemd:systemd 部分包含用于创建 systemd 单元文件的内容。这些文件用于在启动时启动服务,还用于在运行中的系统上管理这些服务。
  • 原语:Ignition 还公开低级别原语,其他工具可以此为基础进行构建。