以下は、スターターとして使用できるテンプレートです。 grafanaイメージはrootとして実行する必要があるように見えることに注意してください。それ以外の場合は起動しません。つまり、OpenShiftのデフォルトのセキュリティモデルをオーバーライドし、プロジェクトでrootとしてイメージを実行できるようにする必要があります。これはお勧めしません。 grafanaイメージは、rootとして実行する必要がないように修正する必要があります。
rootで実行可能にするには、クラスタ管理者として実行する必要があります:
myproject
は、使用しているプロジェクトの名前です
oc adm policy add-scc-to-user anyuid -z default -n myproject
。
私はそれをデフォルトのサービスアカウントに適用しましたが、別のサービスアカウントを作成してそれを適用し、grafanaだけがそのサービスアカウントとして実行されるようにテンプレートを変更してください。
grafana.ini
ファイルを使用して既定の設定を上書きし、マウントされたemptyDir
ディレクトリを使用することは問題ではない可能性があります。私はオーバーライド設定を提供しようとしなかった。
grafanaのテンプレートは、次のようになります。 JSONを使用するのは簡単ですが、JSONを使用する方が簡単ですが、インデントされてYAMLを使用することができなくなるのを防ぐためです。このテンプレートを使用する前に
することは、あなたは明らかに名前がテンプレートを使用しているときに、それを上書きしない限り${APPLICATION_NAME}
がgrafana
あるフォーム${APPLICATION_NAME}-config
であり、対応する設定マップを作成する必要があります。設定マップのキーはgrafana.ini
である必要があり、その値として設定ファイルの内容があります。
{
"apiVersion": "v1",
"kind": "Template",
"metadata": {
"name": "grafana"
},
"parameters": [
{
"name": "APPLICATION_NAME",
"value": "grafana",
"from": "[a-zA-Z0-9]",
"required": true
}
],
"objects": [
{
"apiVersion": "v1",
"kind": "ImageStream",
"metadata": {
"name": "${APPLICATION_NAME}-img",
"labels": {
"app": "${APPLICATION_NAME}"
}
},
"spec": {
"tags": [
{
"name": "latest",
"from": {
"kind": "DockerImage",
"name": "grafana/grafana"
}
}
]
}
},
{
"apiVersion": "v1",
"kind": "DeploymentConfig",
"metadata": {
"name": "${APPLICATION_NAME}",
"labels": {
"app": "${APPLICATION_NAME}",
"type": "monitoring"
}
},
"spec": {
"replicas": 1,
"selector": {
"app": "${APPLICATION_NAME}",
"deploymentconfig": "${APPLICATION_NAME}"
},
"template": {
"metadata": {
"labels": {
"app": "${APPLICATION_NAME}",
"deploymentconfig": "${APPLICATION_NAME}",
"type": "monitoring"
}
},
"spec": {
"containers": [
{
"name": "grafana",
"image": "${APPLICATION_NAME}-img:latest",
"imagePullPolicy": "Always",
"livenessProbe": {
"failureThreshold": 3,
"httpGet": {
"path": "/",
"port": 3000,
"scheme": "HTTP"
},
"periodSeconds": 10,
"successThreshold": 1,
"timeoutSeconds": 1
},
"ports": [
{
"containerPort": 3000,
"protocol": "TCP"
}
],
"volumeMounts": [
{
"mountPath": "/etc/grafana",
"name": "grafana-1"
},
{
"mountPath": "/var/lib/grafana",
"name": "grafana-2"
},
{
"mountPath": "/var/log/grafana",
"name": "grafana-3"
}
]
}
],
"volumes": [
{
"configMap": {
"defaultMode": 420,
"name": "${APPLICATION_NAME}-config"
},
"name": "grafana-1"
},
{
"emptyDir": {},
"name": "grafana-2"
},
{
"emptyDir": {},
"name": "grafana-3"
}
]
}
},
"test": false,
"triggers": [
{
"type": "ConfigChange"
},
{
"imageChangeParams": {
"automatic": true,
"containerNames": [
"grafana"
],
"from": {
"kind": "ImageStreamTag",
"name": "${APPLICATION_NAME}-img:latest"
}
},
"type": "ImageChange"
}
]
}
},
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"name": "${APPLICATION_NAME}",
"labels": {
"app": "${APPLICATION_NAME}",
"type": "monitoring"
}
},
"spec": {
"ports": [
{
"name": "3000-tcp",
"port": 3000,
"protocol": "TCP",
"targetPort": 3000
}
],
"selector": {
"deploymentconfig": "${APPLICATION_NAME}"
},
"type": "ClusterIP"
}
},
{
"apiVersion": "v1",
"kind": "Route",
"metadata": {
"name": "${APPLICATION_NAME}",
"labels": {
"app": "${APPLICATION_NAME}",
"type": "monitoring"
}
},
"spec": {
"host": "",
"port": {
"targetPort": "3000-tcp"
},
"to": {
"kind": "Service",
"name": "${APPLICATION_NAME}",
"weight": 100
}
}
}
]
}
作成されるリソースのリストは何ですか? '' oc get all''を使ってください。どのような出来事が起こるか? '' oc get events''を使ってください。元の '' openshift-grafana.yml''テンプレートはどこにありますか? –
@GrahamDumpleton はopenshift-grafana.ymlは、ここで見つけることができます:[リンク](https://gist.github.com/la3mmchen/6a13127d12d6eaad85d24710dc550cfc) これは私のシェル出力である:[リンク](https://でのgist.github.com/la3mmchen/ed9099ec8426e8af6a902a7fa8539e71) – la3mmchen
imagestreamはどこから来たのですか?テンプレートはグラファナのイメージストリームを作成しません。私がテンプレートを構築していたなら、イメージのインポートをトリガーするためにイメージストリームを作成します。 Grafanaと呼ばれるイメージストリームが別に既に存在しているため、テンプレート内のDocker Hubからグラファナイメージを直接使用することで何らかの方法で競合が発生していることを懸念しています。 –