【问题标题】:Run Kubectl in apache在 apache 中运行 Kubectl
【发布时间】:2020-05-11 09:04:29
【问题描述】:

我有这个 bash 脚本:

#!/bin/bash

USERNAME=$1
WORKDIR='dir_'$USERNAME

mkdir deployment/$WORKDIR
cat deployment/deploy.yml > deployment/$WORKDIR/deploy.yml

sed -i 's/alopezfu/'$USERNAME'/g' deployment/$WORKDIR/deploy.yml

kubectl apply -f deployment/$WORKDIR/deploy.yml

rm -rf deployment/$WORKDIR/

我在 PHP 中使用 exec 函数来运行。

我在 /var/log/apache/error.log 中得到了这个消息

要查看或设置配置,请直接使用“config”命令。 错误:未提供配置,尝试设置 KUBERNETES_MASTER 环境变量 错误:缺少或不完整的配置信息。请指向一个现有的完整配置文件:

  1. 通过命令行标志 --kubeconfig
    1. 通过 KUBECONFIG 环境变量
    2. 在您的主目录中作为 ~/.kube/config

我需要帮助????

【问题讨论】:

  • 从哪里运行这个 PHP 脚本?源机器是否配置了 kubernetes 凭据?如果您尝试从 pod 运行,该 pod 是否有允许运行此命令的服务帐户?
  • 脚本在集群的主节点上运行,如果我用我的用户运行脚本,我用来创建集群的那个,没有问题的问题是从apache 与用户 www-data。

标签: apache kubectl


【解决方案1】:

由于您以不同的用户身份运行脚本,您需要“告诉”kubectl 配置文件在哪里。

这可以通过在您的环境中设置变量 KUBECONFIG 来完成。

假设 kubernetes config 文件位于 /var/www/ 目录中并具有正确的可读权限,您可以像这样配置您的 php 脚本:

<?php
$kubeconfig = "/var/www/config"; // The config file

putenv("KUBECONFIG=$kubeconfig"); // set the environment variable KUBECONFIG

$output = shell_exec("KUBECONFIG=$kubeconfig ; kubectl get pods -A"); // Runs the command 

echo "<pre>$output</pre>"; // and return the expected output.
?>

请注意:

  • 设置某些环境变量可能存在潜在的安全漏洞。

一些应该减轻影响的行动:

  • 确保您的配置文件安全且无法从浏览器访问;

  • 考虑创建一个权限有限的serviceAccount;

Here你可以找到一些有用的命令和 kubectl 技巧。

How to create a service account for kubectl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-07
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-26
    • 2021-12-13
    相关资源
    最近更新 更多